محققان امنیت سایبری آسیبپذیری مهمی را در بستههای قدیمی Python شناسایی کردهاند که میتواند زمینهساز یک حمله Supply Chain در مخزن PyPI از طریق تصاحب دامنه (Domain Takeover) شود.
این ضعف در اسکریپتهای Bootstrap مربوط به ابزار zc.buildout کشف شده است؛ جایی که یک دامنه قدیمی و رهاشده هنوز در کدهای نصب بستهها مورد استفاده قرار میگیرد.
مشکل از کدام یک از بستههای قدیمی Python شروع شده؟
طبق گزارش ReversingLabs، اسکریپتهای Bootstrap فرآیند دانلود، ساخت و نصب ابزارهای موردنیاز را خودکار میکنند.
اما یک بخش از این اسکریپتها اسکریپت نصب بسته Distribute را از دامنهای قدیمی به نام:
python-distribute[.]org
دانلود و اجرا میکنند — دامنهای که از سال ۲۰۱۴ برای فروش گذاشته شده است و اکنون صرفاً برای درآمدزایی تبلیغاتی مدیریت میشود.
این یعنی اگر یک مهاجم دامنه را خریداری کند، میتواند اسکریپتهای مخرب را در فرآیند نصب تزریق کرده و عملاً زنجیره تأمین PyPI را آلوده کند.
🟦 کدام بستهها در معرض خطرند؟
چندین بسته PyPI همچنان اسکریپت آسیبپذیر را همراه خود منتشر میکنند:
tornado
pypiserver
slapos.core
roman
xlutils
testfixtures
بهویژه slapos.core و نسخههای توسعهای Tornado همچنان کد آسیبپذیر را شامل میشوند.
🟦 چرا این اسکریپت خطرناک است؟
فایل bootstrap.py در گذشته برای راهاندازی محیط Buildout استفاده میشد و قابلیت نصب بسته Distribute را داشت.
این بسته یک fork کوتاه از Setuptools بود و در ۲۰۱۳ مجدداً در Setuptools ادغام شد. اما:
اسکریپت Bootstrap هنوز وجود دارد
همچنان تلاش میکند فایل نصب را از دامنه رهاشده دانلود کند
دامنه قابل خرید است → پس قابل تسخیر و سوءاستفاده نیز هست
در نتیجه، هر توسعهدهندهای که اسکریپت را اجرا کند، ممکن است ناخواسته کد مهاجم را اجرا کند.
🟦 حمله چگونه ممکن میشود؟
اگر مهاجم دامنه را تصاحب کند، میتواند:
اسکریپت نصب مخرب ارائه دهد
کد را در زمان Bootstrap اجرا کند
دادههای حساس را سرقت کند
یک بسته یا محیط توسعه را آلوده کند
زمینه یک Supply Chain Attack را فراهم کند
این دقیقاً همان الگوی Downloader Behavior در بدافزارهاست:
اجرای Payload از یک دامنه Hard-Coded.
🟦 مشکل فقط تئوری نیست
در سال ۲۰۲۳، بسته npm با نام fsevents قربانی حمله مشابه شد.
مهاجم یک آدرس S3 رهاشده را تصاحب کرد و فایلهای مخرب برای کاربران ارسال شد:
CVE-2023-45311 — امتیاز CVSS: 9.8
این نشان میدهد که ریسک Domain Takeover کاملاً عملی است.
🟦 ریسکهای پنهان: حتی اگر اسکریپت خودکار اجرا نشود
نکته مهم:
اسکریپت Bootstrap در مرحله نصب بسته اجرا نمیشود
اسکریپت با Python 2 نوشته شده و با Python 3 سازگار نیست
اما:
همین فایلِ بلااستفاده سطح حمله اضافه ایجاد میکند.
اگر توسعهدهنده فریب بخورد و آن را اجرا کند، مسیر حمله باز میشود.
🟦 کشف بدافزار جدید در PyPI: spellcheckers
همزمان با این تحقیقات، HelixGuard یک بسته بدافزاری جدید با نام:
spellcheckers
را شناسایی کرده که:
ظاهراً ابزار بررسی املای مبتنی بر OpenAI Vision معرفی شده
اما درواقع به سرور خارجی وصل میشود
Payload مرحله دوم را دانلود میکند
یک RAT (Remote Access Trojan) اجرا میکند
دسترسی کامل از راه دور به مهاجم میدهد
این بسته در ۱۵ نوامبر ۲۰۲۵ آپلود شد و ۹۵۵ دانلود داشته است.
🔚 جمعبندی Vulnerbyte
مشکل اسکریپتهای Bootstrap یک تهدید خاموش و گسترده برای اکوسیستم Python است.
ترکیب سه عامل:
دامنه رهاشده و قابل تصاحب
کد Legacy و بلااستفاده
توسعهدهندگان غافل یا محیطهای CI/CD قدیمی
همگی میتوانند زمینهساز یک Supply Chain Attack بزرگ شوند.
واقعیت این است:
دو خط کد قدیمی میتوانند یک زنجیره تأمین را منفجر کنند.