CVE Lite CLI؛ اسکنر آسیبپذیری که میگه دقیقاً چی رو اجرا کنی
خلاصهٔ کاملتر
این مقاله ابزار CVE Lite CLI رو معرفی میکنه؛ یه اسکنر آسیبپذیری وابستگیها برای JS/TS که حالا بهعنوان پروژهٔ Incubator رسمی OWASP شناخته میشه. نویسنده با یه نقد شروع میکنه: بیشتر ابزارهای امنیتی فعلی حول خط لولهٔ CI طراحی شدن، نه آدمها. Dependabot یه PR باز میکنه که بعداً بهش میرسی، اسکنرهای CI ساعتها بعد merge رو بلاک میکنن و داشبوردها فقط یه لیست از CVEها بهت میدن بدون اینکه بگن چیکار کنی. به گفتهٔ نویسنده این حلقهٔ بازخورد اونقدر کنده که توسعهدهندهها یاد میگیرن نادیدهش بگیرن.
مدل پیشنهادی این ابزار فرق داره: اسکن آسیبپذیری مال همون لحظهست که داری کد رو push میکنی، نه ته CI. کار اصلیش هم اینه که بهجای تشخیص خالی، یه برنامهٔ رفع مشکل بهت میده؛ یعنی دستور copy-and-run مثل npm install یا pnpm add که متناسب با package manager پروژهت ساخته شده. شروع کارش هم سادهست:
npm install -g cve-lite-cli
cve-lite /path/to/projectیکی از تفاوتهای کلیدی که نویسنده روش تاکید میکنه، راهنمایی برای وابستگیهای transitive (غیرمستقیم) هست. ابزار بهت نشون میده که آسیبپذیری تو چیزیه که خودت نصب کردی یا سه لایه عمیقتر تو زنجیرهٔ وابستگیها قایم شده. برای پکیجهای غیرمستقیم npm هم تشخیص میده که آیا فقط یه npm update کافیه تا یه نسخهٔ سالم resolve شه، یا کلاً خود پکیج والد باید آپگرید شه.
چندتا قابلیت دیگهش هم جالبه: با فلگ --usage و --only-used تحلیل استاتیک انجام میده تا ببینه پکیج آسیبپذیر اصلاً تو کدت import شده یا نه، که اینجوری نویز کم میشه. حالت --fix خودش رفعهای معتبر وابستگیهای مستقیم رو اعمال میکنه و دوباره اسکن میکنه. خروجی --report هم یه داشبورد HTML مستقل با کارتهای شدت و جدول قابلجستجو میسازه.
برای محیطهای شرکتی و شبکههای محدود، یه پایگاه دادهٔ مشورتی آفلاین داره: اول با cve-lite advisories sync دادهها رو همگام میکنی و بعد با --offline بدون هیچ تماس شبکهای اسکن میزنی. به ادعای مقاله، همگامسازی حدود ۲۱۷ هزار رکورد مشورتی زیر ۹ ثانیه طول میکشه. برای CI هم --fail-on high با خروج non-zero بیلد رو بلاک میکنه و --sarif خروجی SARIF 2.1.0 برای آپلود مستقیم به GitHub Code Scanning میده. یه اکشن رسمی GitHub هم رو Marketplace هست:
- uses: OWASP/cve-lite-cli@v1
with:
verbose: "true"
fail-on: high
sarif: "true"نویسنده تو بخش فلسفه جمعبندی میکنه که تشخیص بدون رفع، فقط کار درست میکنه بدون اینکه چیزی حل شه؛ و هرچی ابزار امنیتی به جریان کاری طبیعی توسعهدهنده نزدیکتر باشه، احتمال استفاده ازش بیشتره. البته خودش هم محدودیتهاش رو میگه: بدافزار رو قبل از اینکه تو دادههای مشورتی ظاهر شه تشخیص نمیده، تحلیل رفتاری بدافزار نداره و جایگزین یه برنامهٔ کامل امنیت اپلیکیشن نیست. footprint هم عمداً کوچیک نگه داشته شده با فقط چهار وابستگی runtime.
نکات کلیدی:
- اسکنر آسیبپذیری وابستگی متنباز برای JS/TS و پروژهٔ Incubator رسمی OWASP
- بهجای لیست CVE، دستور آمادهٔ نصب برای رفع مشکل میده و مستقیم رو از غیرمستقیم تفکیک میکنه
- از npm، pnpm، Yarn و Bun پشتیبانی میکنه و راهنمایی هوشمند برای والد پکیجهای transitive داره
- پایگاه دادهٔ مشورتی آفلاین برای محیطهای air-gapped؛ همگامسازی ~۲۱۷ هزار رکورد زیر ۹ ثانیه
- خروجی JSON، SARIF و داشبورد HTML داره و با --fail-on میتونه بیلد CI رو گیت کنه




