حمله زنجیره تأمین که اپل و مایکروسافت را فریب داد نسخه های بسیاری را به خود جلب می کند


حمله زنجیره تأمین که اپل و مایکروسافت را فریب داد نسخه های بسیاری را به خود جلب می کند

گتی ایماژ

هفته گذشته ، یک محقق حمله جدیدی از زنجیره تامین را نشان داد که کد جعلی را در شبکه های متعلق به برخی از بزرگترین شرکتهای جهان از جمله اپل ، مایکروسافت و تسلا اجرا می کند. محققان دیگر هم اکنون در حال مرور اینترنت با بسته های کپی هستند که تاکنون بیش از 150 مورد از آنها کشف شده است.

این تکنیک سه شنبه گذشته توسط محقق امنیتی الکس بیرسان ارائه شد. به اصطلاح سردرگمی وابستگی یا حمله سردرگمی فضای نام با قرار دادن کد مخرب در یک مخزن رسمی رسمی مانند NPM ، PyPI یا RubyGems آغاز می شود. Birsan با دادن برنامه هایی با نام بسته مشابه وابستگی هایی که توسط شرکت هایی مانند اپل ، مایکروسافت ، تسلا و 33 شرکت دیگر استفاده می شد ، توانست این شرکت ها را مجاب کند تا کد جعلی را به طور خودکار بارگیری و نصب کنند.

به طور خودکار pwnage

وابستگی ها کتابخانه ها یا بسته های کد عمومی هستند که توسعه دهندگان از آنها برای افزودن انواع معمول کارایی به نرم افزاری که می نویسند استفاده می کنند. با استفاده از کار هزاران همکار منبع باز خود ، توسعه دهندگان از دردسر و هزینه ایجاد کد خود نجات می یابند. کد توسعه دهنده به طور خودکار بارگیری می شود و وابستگی یا هرگونه به روزرسانی به آن را ، چه از طریق رایانه محلی توسعه دهنده و چه از طریق ذخیره سازی عمومی ، شامل آن می شود.

بیرسان جستجو در انجمن های اینترنتی ، کد جاوا اسکریپت ، بسته های داخلی و منابع دیگر به طور تصادفی منتشر شده برای یافتن نام وابستگی به کد استفاده شده در نرم افزار 35 شرکت. سپس کد خود را با استفاده از همان نام های وابستگی در NPM ، PyPI یا Ruby Gems بارگذاری می کند. به عبارت دیگر ، محقق روی نام معتبر بسته متعلق به شرکت ها چمباتمه زده است. در پایان ، محقق 130،000 دلار دریافت کرد.

با اختصاص شماره های نسخه بسته که از شماره های معتبر بالاتر است ، شرکت های هدف بسته های جعلی بیرسان را به طور خودکار بارگیری و اجرا می کنند.

بیرسان نوشت: “درجه موفقیت به سادگی شگفت انگیز بود.” او اضافه کرد:

از اشکالات یک بار ساخته شده توسط توسعه دهندگان ماشین های خودشان ، تا پیکربندی نامناسب سرورهای داخلی یا مبتنی بر ابر ، تا خطوط لوله آسیب پذیر توسعه یافته از نظر سیستمی ، یک چیز واضح بود: چمباتمه زدن نام های بسته داخلی معتبر تقریباً روش خاصی برای ورود به شبکه های برخی بود از بزرگترین شرکتهای فناوری در آنجا ، اجرای کد از راه دور و احتمالاً اجازه دادن به هکرها برای اضافه کردن درهای پشتی هنگام جمع آوری.

طی دو روز از انتشار نتایج Birsan ، شرکت امنیتی Sonotype جمعه گذشته گفت که سایر توسعه دهندگان یا محققان حملات کپی برداری را انجام داده و 150 بسته با نام های مشابه را در NPM قرار داده اند.

چگونه کار می کند

مدیران بسته معمولاً وابستگی های ذکر شده به عنوان نام را می پذیرند و سعی می کنند اهداف توسعه دهنده را تجزیه و تحلیل کنند. مدیران هم به رایانه محلی که پروژه در آن ذخیره شده است و هم به فهرست راهنمای دسترسی به اینترنت متعلق به مدیر بسته به دنبال وابستگی ها می گردند.

محققان Sonotype در مقاله قبلی در مورد حمله بیرسان نوشتند: “مسئله سردرگمی وابستگی یک نقص ذاتی در طراحی ابزارهای نصب بومی DevOps و گردش کار است که وابستگی ها را به زنجیره تامین نرم افزار شما جذب می کند.” “در این زمینه ، سردرگمی وابستگی به عدم توانایی محیط توسعه شما برای تمایز بین یک بسته فعلی خصوصی ایجاد شده داخلی در تدوین نرم افزار و بسته ای به همین نام موجود در یک مخزن نرم افزار عمومی اشاره دارد.”

محققان Sonotype در ادامه این روش را توضیح دادند:

به عنوان مثال ، فرض کنید برنامه شما از یک جز component داخلی و خصوصی ایجاد شده PyPI به نام foobar (نسخه 1) به عنوان یک وابستگی استفاده می کند. بعداً ، اگر یک م componentلفه نامربوط با همان نام اما شماره foobar بالاتر (نسخه 9999) در مخزن بارگیری عمومی PyPI منتشر شود ، پیکربندی پیش فرض محیط های توسعه PyPI حکم می کند که نسخه بالاتر فوبار به عنوان یک وابستگی بارگیری شود.

در این حالت ، این بدان معنی است که یک بسته جعلی foobar با تعداد مهاجم بالاتر بی سر و صدا و به طور خودکار به نسخه شما از نرم افزار نفوذ می کند.

به اصطلاح حملات اسكات از سالها قبل وجود داشته است. آنها کدی را در مخازن عمومی بارگذاری می کنند و از اسامی مشابه نام بسته های قانونی استفاده می کنند ، به این امید که توسعه دهنده اشتباه تایپی ایجاد کند یا روی پیوند مخربی که باعث بارگیری کد جعلی می شود ، کلیک کند. مزیت تکنیک گیجی اعتیاد بیرسان این است که برای کار به خطای انسانی اعتماد نمی کند.

تا زمانی که شرکت های متضرر متوجه تقلبی نشوند ، Sonotype این کار را می کرد. پس از بررسی با Birsan ، این شرکت فهمید که اعتیاد کاذب بخشی از یک آزمایش خوش خیم بوده است.

اثبات مفهوم

بیرسان دریافت که 35 شرکت متضرر از وابستگی های ذخیره شده محلی استفاده می کنند که در فهرست عمومی موجود نیست. هنگامی که کد اثبات مفهوم مخرب خود را در مخزن عمومی بارگذاری می کند ، با استفاده از همان نام وابستگی قانونی و شماره نسخه بزرگتر ، نرم افزار شرکت آنها را به طور خودکار نصب و راه اندازی می کند.

برای عدم نقض خط مشی شرکت ها در زمینه گزارش آسیب پذیری ، کد Birsan فعالیت خود را به ارسال نام کاربری ، نام میزبان و تصحیح فعلی هر نصب منحصر به فرد به محقق محدود کرده است. وی همچنین از طریق برنامه های خطای عمومی یا توافق نامه های خصوصی مجوز آزمایش امنیت 35 شرکت را داشت.

برای اطمینان از اینکه مأموران امنیتی مانع خروج اطلاعات از شبکه شرکت هدف نمی شوند ، کد PoC Birsan داده هگزادسیمال را رمزگذاری می کند و آنها را به یک درخواست DNS ارسال می کند. عدم موفقیت شركتها در مسدود كردن ترافیك حداقل چهار سال پس از آنكه مورد استفاده محققان از بدافزارهای موجود در DNS قرار گرفت.

شرکت تجارت الکترونیکی کانادایی Shopify در عرض چند ساعت از Birsan به طور خودکار Ruby Gem به نام shopify-cloud را نصب کرد و آن را در مخزن Ruby Gems در دسترس قرار داد. در همین حال ، تعدادی از ماشین های موجود در شبکه اپل کد Birsan بارگذاری شده در NPM را اجرا کرده اند. بیرسان گفت که به نظر می رسد پروژه های تحت تأثیر اپل با Apple ID ، سیستم احراز هویت این شرکت مرتبط هستند. Shopify و Apple هر دو به Birsan 30000 دلار اهدا كردند.

Sonotype در اینجا لیستی از مراحل را دارد که توسعه دهندگان می توانند برای جلوگیری از حملات سردرگمی انجام دهند. نکته اصلی در میان حفاظت ها این است که مخازن نیاز به بازرسی اجباری فضا با نام و دامنه دارند. یک روش تأیید ، استفاده معکوس از نام دامنه کاملاً واجد شرایط است که به دارندگان قانونی علامت تجاری یا فضای نام اجازه می دهد تا اجزای موجود در آن فضای نام را ارسال کنند در حالی که اجازه مخالفان را نمی دهند.


منبع: tarjome-news.ir

Leave a reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>