Sighthound؛ اسکنر ایستای آسیبپذیری روی tree-sitter
خلاصهٔ کاملتر
Sighthound یه اسکنر ایستای امنیتیه که با Rust نوشته شده و روی tree-sitter بنا شده. یعنی بهجای گشتن کورکورانه تو متن، قواعدش درخت نحو کد رو میفهمن. پروژه مجوز MIT داره و شرکت سازندهاش هم نسخهٔ میزبانیشدهای با امکانات بیشتر عرضه میکنه، ولی خود اسکنر مستقل و قابل استفادهست.
دو حالت کاری داره. حالت الگو دنبال شکلهای مشکوک تو کد میگرده، و حالت آلودگی مسیر داده رو از منبع تا مقصد دنبال میکنه — همون چیزی که برای پیدا کردن دستهٔ بزرگی از آسیبپذیریهای تزریقی لازمه. پروژههای چندفایلی و اجرای موازی هم پشتیبانی میشن.
پوشش زبانیاش نسبتاً پهنه: پایتون، جاوااسکریپت (با Vue و Svelte)، تایپاسکریپت و TSX، جاوا، پیاچپی، سیشارپ، گو، روبی، HTML و قالبهای جنگو، همه با قواعد از پیش آماده. در مقابل، Razor و زبانهای C و ++C فعلاً پشتیبانی نمیشن.
قواعد با فرمت RON نوشته میشن و همون دو حالت جستوجو و آلودگی رو پشتیبانی میکنن؛ میشه قواعد داخلی رو بر اساس پسوند فایل بارگذاری کرد یا قواعد سفارشی خودت رو از یه مسیر جدا داد. خروجی هم چهار شکل داره: متن، JSON، CSV و SARIF.
مفیدترین بخش برای تیمها همون SARIF ـه، چون نسخهٔ ۲.۱.۰ رو مینویسه و GitHub Code Scanning مستقیم میبلعدش. اگه از ریشهٔ مخزن اسکن کنی، نتایج داخل خود پولریکوئست و تب امنیت مخزن ظاهر میشن:
- name: Run Sighthound
run: sighthound --output-format sarif . > results.sarif
- name: Upload SARIF
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: results.sarifمحدودیتهاش هم صادقانه فهرست شدن: آسیبپذیریهایی که فقط در زمان اجرا و تو مسیرهای پویا خودشون رو نشون میدن ممکنه از قلم بیفتن، فایلهای خیلی بزرگ زمان اسکن رو بالا میبرن، و تحلیل آلودگی چندفایلی هرچند پشتیبانی میشه، هنوز جای سفتکاری داره.
نکات کلیدی:
- اسکنر ایستای متنباز با Rust و tree-sitter، مجوز MIT
- دو حالت: تطبیق الگو و دنبالکردن جریان آلودگی از منبع تا مقصد
- پوشش نه زبان بهعلاوهٔ قالبهای HTML و جنگو
- خروجی SARIF برای اتصال مستقیم به GitHub Code Scanning
- قواعد با فرمت RON و امکان افزودن قواعد سفارشی




