ممیزی امنیتی Inspektor Gadget: سه آسیبپذیری، همه وصلهشده
خلاصهٔ کاملتر
این پست از وبلاگ CNCF خبر میده که Inspektor Gadget اولین ممیزی امنیتی مستقلش رو پشت سر گذاشته. این ابزار متنباز با استفاده از eBPF، دادههای Kubernetes و هاستهای لینوکسی رو جمع و بررسی میکنه؛ کارش اینه که برنامههای eBPF رو که بهشکل ایمیجهای OCI بستهبندی شدن (بهشون میگن «gadget») مدیریت و اجرا کنه. مزیتش اینه که برای دیدن داخل کلاستر لازم نیست ایمیجها رو دوباره بسازی، sidecar تزریق کنی یا workload رو ریاستارت کنی — برنامهها همون لحظه توی کرنل لود میشن و syscall و فعالیت شبکه و دسترسی به فایل رو امن مشاهده میکنن.
به گفتهٔ نویسندهها، چون این ابزار با دسترسی root روی نودها کار میکنه، یک بازبینی مستقل از وضعیت امنیتیش یک قدم طبیعی برای بلوغ پروژهست. ممیزی رو OSTIF (یک سازمان غیرانتفاعی برای امنیت نرمافزار متنباز) هماهنگ کرد، هزینهاش رو CNCF داد و خود کار رو شرکت Shielder انجام داد. متدولوژی ترکیبی بود: threat modeling مشترک با maintainerها، بازبینی دستی کد، تست داینامیک، آنالیز استاتیک با Semgrep و GoSec، و بازبینی کد با کمک AI برای پوشش بیشتر.
ممیزی سه آسیبپذیری پیدا کرد که هیچکدوم Critical یا High نبودن. اولی یک Medium بود: command injection توی فرایند ig image build (با شناسهٔ CVE-2026-24905). مکانیزمش این بود که Makefileها ورودی تحت کنترل کاربر رو بدون escape درست جاسازی میکردن و همین یک مسیر تزریق فرمان باز میکرد؛ بیشتر توی پایپلاینهای CI/CD که gadgetهای نامطمئن میسازن خطرناکه. توی نسخهٔ v0.48.1 وصله شد.
دومین Medium یک Denial of Service از طریق سیلآسا کردن رویدادها بود. یک کانتینر مخرب میتونست ring buffer مربوط به eBPF رو که اندازهاش روی ۲۵۶ کیلوبایت hard-code شده پر کنه و باعث بشه رویدادهای کانتینرهای دیگه بیسروصدا drop بشن — یعنی یک مهاجم میتونست با تولید نویز، فعالیت خودش رو از دید مانیتورینگ مخفی کنه. توی v0.50.1 وصله شد. یافتهٔ سوم هم یک Low بود (** CVE-2026-25996**): عدم پاکسازی دنبالههای escape از نوع ANSI توی حالت نمایش columns، که اجازه میداد یک کانتینر آلوده کدهای escape ترمینال رو توی صفحهٔ نمایش اپراتور تزریق کنه. توی v0.49.1 وصله شد.
جدای از این آسیبپذیریها، Shielder شیش توصیهٔ سختسازی هم داد: اجباری کردن TLS بهصورت پیشفرض روی TCP listenerها، pin و verify کردن وابستگیهای خارجی توی CI/CD، یک blocklist برای namespaceهای حساس مثل kube-system، محدود کردن کلاینتهای راهدور از فعال کردن tracing سطح هاست، خودکار کردن اسکن آسیبپذیری وابستگیها، و کم کردن دسترسیهای RBAC روی podهای DaemonSet — مشخصاً دسترسی nodes/proxy GET که در صورت لو رفتن توکن میتونه به privilege escalation منجر بشه.
یک بخش فنی جالب «تست دور زدن gadget» بود: محققها پرسیدن آیا یک کانتینر آلوده میتونه کاری انجام بده که قراره trace بشه ولی هیچ رویدادی تولید نشه؟ شیش سناریوی bypass پیدا کردن، از استفاده از syscallهای جدیدتری که بعضی gadgetها hook نمیکنن (مثلاً openat2 بهجای openat) تا فرار از طریق io_uring و کتابخونههای static-linked. نویسندهها میگن این نتیجه ماهیت موشوگربهٔ tracing سطح کرنله؛ چون لینوکس مدام syscall و subsystem جدید میسازه و ابزارهای eBPF باید پا به پاش بیان. توصیهٔ عملی برای کاربرها آپدیت به v0.50.1 یا بالاتره که هر سه آسیبپذیری رو میبنده.
نکات کلیدی:
- سه آسیبپذیری پیدا شد (دو Medium، یک Low)؛ هیچکدوم Critical یا High نبود و همه وصله دارن
- آسیبپذیریها: command injection توی image build، DoS با پر کردن ring buffer، و تزریق ANSI escape توی خروجی ترمینال
- ممیزی رو OSTIF هماهنگ کرد، CNCF هزینه داد و Shielder انجامش داد؛ متدولوژی شامل بازبینی با کمک AI هم بود
- شیش توصیهٔ سختسازی مطرح شد، از TLS پیشفرض تا کم کردن دسترسیهای RBAC
- توصیهٔ عملی برای کاربرها: آپدیت به نسخهٔ v0.50.1 یا بالاتر




