pydepgate: محافظ پایتون در برابر حملات زنجیره تأمین
خلاصهٔ کاملتر
pydepgate یه ابزار سبکوزنه که پکیجهای پایتون رو برای شناسایی کدهای مخفی که هنگام استارت مفسر پایتون اجرا میشن اسکن میکنه. این نوع حمله که تحت عنوان MITRE ATT&CK T1546.018 ثبت شده، دقیقاً همون تکنیکیه که در حمله زنجیره تأمین (supply-chain attack) پکیج LiteLLM در مارس ۲۰۲۶ بهکار رفت.
مشکل اصلی اینجاست که پایتون چند مکانیزم قانونی داره که کد رو خودکار اجرا میکنن — بدون اینکه کاربر چیزی بخواد. فایلهای .pth در پوشه site-packages، فایلهای sitecustomize.py و usercustomize.py، کد سطح بالای __init__.py، و setup.py هنگام pip install همگی میتونن بردار حمله باشن. ابزارهای رایج امنیتی مثل pip-audit، safety و bandit هیچکدوم این بردارها رو بررسی نمیکنن.
با pydepgate میشه فایلهای wheel، sdist و پکیجهای نصبشده رو اسکن کرد. سینتکس سادهست:
pydepgate scan some-package-1.0.0-py3-none-any.whl
pydepgate scan litellm
pydepgate scan --single suspicious_module.pyخروجی کد 0 یعنی تمیز، کد 2 یعنی حداقل یه یافته با سطح HIGH یا CRITICAL پیدا شده.
یکی از قابلیتهای جالب، گزینه --peek ه که بدون اجرا کردن، محتوای blobهای کدشده رو decode میکنه. از base64، hex، zlib، gzip، bzip2 و lzma پشتیبانی میکنه. برای حملات چندلایه مثل LiteLLM 1.82.8 هم میشه از --decode-payload-depth=N استفاده کرد تا لایههای تودرتوی رمزگذاری رو کشف کرد.
برای استفاده در CI/CD هم گزینه --ci وجود داره که خروجی JSON ماشینخوان تولید میکنه. با ترکیب --min-severity high میشه مسیر build رو فقط روی یافتههای بحرانی بلاک کرد:
pydepgate scan --ci --min-severity high some-package.whlpydepgate از قوانین سفارشی هم پشتیبانی میکنه — کافیه یه فایل TOML یا JSON با نام pydepgate.gate کنار پروژه بذارید. روی پایتون ۳.۱۱ به بالا کار میکنه و هیچ وابستگی خارجی در زمان اجرا نداره.
نکات کلیدی:
- بردارهای
.pth،sitecustomize.py،__init__.py، وsetup.pyرو اسکن میکنه - ابزارهای متداول امنیتی این بردارها رو پوشش نمیدن
- قابلیت decode بدون اجرا برای payloadهای کدشده
- پشتیبانی از CI با خروجی JSON و فیلتر severity
- نصب ساده با
pip install pydepgate، بدون dependency خارجی




