PyPI توکنهای تحتتأثیر حمله GhostAction را بیاعتبار کرد

بنیاد نرمافزاری Python تمامی توکنهای سرقتشده PyPI در حمله Supply Chain موسوم به GhostAction را لغو کرد
تیم بنیاد نرمافزاری Python تمامی توکنهای PyPI سرقتشده در جریان حمله Supply Chain موسوم به GhostAction در اوایل سپتامبر را بیاعتبار اعلام کرد و تأیید نمود که مهاجمان از این توکنها برای انتشار بدافزار سوءاستفاده نکردهاند.
این توکنها برای انتشار پکیجها در Python Package Index (PyPI) استفاده میشوند؛ مخزنی نرمافزاری که بهعنوان منبع پیشفرض ابزارهای مدیریت پکیج Python عمل کرده و میزبان صدها هزار پکیج است.
بهگفتهی Mike Fiedler، مدیر PyPI، در تاریخ ۵ سپتامبر یکی از کارکنان GitGuardian گزارش داد که گردشکارهای مخرب در GitHub Actions (مانند FastUUID) تلاش کردهاند توکنهای PyPI را به یک سرور راهدور منتقل کنند. در همان روز، یکی دیگر از محققان GitGuardian یافتههای تکمیلی را به تیم امنیت PyPI ایمیل کرد، اما پیام وی به پوشهی Spam منتقل شد و همین موضوع پاسخگویی به این رخداد را تا ۱۰ سپتامبر بهتعویق انداخت.
پس از شناسایی ابعاد کامل این حمله، GitGuardian بیش از ۵۷۰ مخزن آسیبدیده را از طریق ایجاد Issue در GitHub مطلع ساخت و تیمهای امنیتی GitHub، npm و PyPI را نیز در جریان قرار داد.
بسیاری از نگهداران پروژهها پس از اطلاعرسانی GitGuardian، توکنهای PyPI خود را چرخاندند (rotated)، تغییرات اعمالشده در گردشکارها را بازگرداندند یا گردشکارهای آلوده را حذف کردند. اگرچه تیم PyPI در جریان بررسی هیچ مدرکی مبنی بر نفوذ به مخازن PyPI نیافت، اما تمامی توکنهای انتشار تحتتأثیر را لغو اعتبار کرد و با صاحبان پروژهها جهت ایمنسازی حسابهایشان تماس گرفت.
بااینحال، GitGuardian در همان زمان برآورد کرد که در کارزار GhostAction بیش از ۳۳,۰۰۰ secret به سرقت رفته است. این موارد شامل توکنهای PyPI، npm، DockerHub، GitHub و Cloudflare API، همچنین کلیدهای دسترسی AWS و اعتبارنامههای پایگاهداده بوده است.
GitGuardian در تحلیل خود اعلام کرد:
«این بررسی نشان داد که توکنهای متعددی در اکوسیستمهای مختلف پکیجنویسی از جمله Rust crates و npm packages به خطر افتادهاند. در برخی موارد، کل پرتفوی SDK شرکتها آلوده شده و گردشکارهای مخرب بهطور همزمان مخازن Python، Rust، JavaScript و Go آنها را تحتتأثیر قرار داده است.»
توصیههای امنیتی PyPI برای کاهش خطر حملات Supply Chain
روز سهشنبه، Mike Fiedler به نگهداران پکیجهای PyPI که از GitHub Actions استفاده میکنند توصیه کرد تا بهجای توکنهای بلندمدت، از Trusted Publishers tokens کوتاهمدت استفاده کنند؛ رویکردی که میتواند در برابر این نوع حملات نقش حفاظتی ایفا کند. وی همچنین از آنها خواست وارد حسابهای خود شده و تاریخچه امنیتی (security history) را برای شناسایی فعالیتهای مشکوک بررسی کنند.
Fiedler اظهار داشت:
«پس از اطمینان از اینکه هیچ حساب PyPI مورد نفوذ قرار نگرفته، در تاریخ ۱۵ سپتامبر با نگهداران پروژههای تحتتأثیر تماس گرفتم تا آنها را از وضعیت مطلع کنم، اعلام نمایم که توکنهایشان لغو اعتبار شده و استفاده از Trusted Publishers همراه با GitHub Actions را برای محافظت بهتر پروژهها در آینده توصیه کنم.»
او افزود:
«مهاجمان طیف گستردهای از مخازن را هدف قرار دادند که بسیاری از آنها توکنهای PyPI را بهعنوان GitHub secrets ذخیره کرده بودند. مهاجمان گردشکارها را تغییر داده و توکنها را به سرورهای خارجی ارسال میکردند. اگرچه برخی توکنها با موفقیت استخراج شدند، شواهدی مبنی بر استفاده آنها در PyPI مشاهده نشد.»
در اوت، مهاجمان از یک گردشکار معیوب در GitHub Actions که توسط مخزن Nx (یک سیستم ساخت و ابزار مدیریت monorepo بسیار محبوب) استفاده میشد، سوءاستفاده کرده و بهعنوان بخشی از حمله Supply Chain دیگری با نام s1ngularity بیش از ۲,۱۸۰ حساب و ۷,۲۰۰ مخزن را تحتتأثیر قرار دادند.
یک ماه پیش از آن نیز بنیاد نرمافزاری Python به کاربران هشدار داده بود که یک کارزار phishing در تلاش است با استفاده از وبسایت جعلی Python Package Index (PyPI)، اعتبارنامههای آنها را سرقت کند.