این آسیبپذیری توسط Tenable Research با کد CloudImposer شناخته شده است.
Liv Matan، محقق امنیتی، در گزارشی که با The Hacker News به اشتراک گذاشته شده است، گفت[۱]: «این آسیبپذیری میتواند به مهاجم اجازه دهد تا یک نرمافزار داخلی را که گوگل از قبل روی هر ابزار هماهنگسازی خط لوله Google Cloud Composer نصب میکند، ربوده باشد.»
سردرگمی وابستگی (با نام مستعار حمله جایگزینی)، که برای اولین بار[۲] توسط محقق امنیتی Alex Birsan در فوریه ۲۰۲۱ مستند شد، بهنوعی از سازش زنجیره تأمین نرمافزار اشاره دارد که در آن مدیر بسته فریبخورده تا یک بسته مخرب را از یک مخزن عمومی بهجای فایل موردنظر به همین نام از یک مخزن داخلی خارج کند.
بنابراین، یک عامل تهدید میتواند با انتشار[۳] یک بسته تقلبی در یک مخزن بسته عمومی با همان نام بستهای که توسط شرکتها و با شماره نسخه بالاتر توسعه یافته است، یک حمله زنجیره تأمین در مقیاس بزرگ را انجام دهد.
این به نوبه خود باعث میشود که مدیر بسته بهطور ناآگاهانه بسته مخرب را به جای مخزن خصوصی از مخزن عمومی دانلود کند[۴] و عملاً وابستگی بسته موجود را با همتای سرکش خود جایگزین کند.
مشکل شناساییشده[۵] توسط Tenable ازاینجهت مشابه است که میتوان از آن برای آپلود یک بسته مخرب در مخزن Python Package Index (PyPI) با نام «google-cloud-datacatalog-lineage-producer-client» سوءاستفاده کرد، که سپس میتوان آن را از پیش نصب کرد. تمام نمونههای Composer با مجوزهای بالا.
درحالیکه Cloud Composer نیاز دارد که بسته موردنظر به نسخه پین شده باشد (یعنی نسخه ۰٫۱٫۰)، Tenable دریافت که با استفاده از آرگومان “–extra-index-url” در طول دستور “pip install”، fetching بسته از ثبت عمومی، درنتیجه دری را برای سردرگمی وابستگی باز میکند.
با برخورداری از این امتیاز، مهاجمان میتوانند کد را اجرا کنند، اعتبار حساب سرویس را استخراج کنند، و در محیط قربانی به سمت سایر سرویسهای GCP حرکت کنند.
پس از افشای مسئولانه در ۱۸ ژانویه ۲۰۲۴، در ماه مه ۲۰۲۴ توسط گوگل با اطمینان از اینکه بسته فقط از یک مخزن خصوصی نصب شده است، رفع شد. همچنین احتیاط اضافی را برای تأیید چکسام بسته بهمنظور تأیید صحت آن و تأیید عدم دستکاری آن اضافه کرده است.
گفته میشود که سازمان بستهبندی پایتون (PyPA) حداقل از مارس ۲۰۱۸ از خطرات ناشی از استدلال “-extra-index-url” آگاه بوده و از کاربران میخواهد در مواردی که بسته داخلی باید کشیده شود، از PyPI صرفنظر کنند.
یکی از اعضای PyPA در آن زمان خاطرنشان کرد[۶]: «انتظار میرود بستهها با نام و نسخه منحصربهفرد باشند، بنابراین دو wheel با نام بسته و نسخه یکسان با پیپ قابلتشخیص نیستند. این یک ویژگی عمدی فراداده بسته است و بهاحتمالزیاد تغییر نمیکند.»
گوگل، بهعنوان بخشی از اصلاح خود، اکنون همچنین توصیه میکند که توسعهدهندگان از آرگومان «–index-url» بهجای آرگومان «–extra-index-url» استفاده کنند و مشتریان GCP از مخزن مجازی Artifact Registry هنگام نیاز به چندین مخزن استفاده میکنند.
Matan گفت: «آگومان «–index-url» خطر حملات سردرگمی وابستگی را تنها با جستجوی بستههایی در رجیستری که بهعنوان یک مقدار معین برای آن آرگومان تعریفشدهاند، کاهش میدهد.»
منابع
[۱] https://www.tenable.com/blog/cloudimposer-executing-code-on-millions-of-google-servers-with-a-single-malicious-package
[۲] https://thehackernews.com/2021/02/dependency-confusion-supply-chain.html
[۳] https://blog.gitguardian.com/dependency-confusion-attacks
[۴] https://orca.security/resources/blog/dependency-confusion-supply-chain-attacks/
[۵] https://www.tenable.com/security/research/tra-2024-18
[۶] https://github.com/pypa/pip/issues/5045
[۷] https://thehackernews.com/2024/09/google-fixes-gcp-composer-flaw-that.html
ثبت ديدگاه