چگونه در 30 دقیقه به homebrew دسترسی پیدا کردم

این شماره در وبلاگ homebrew در https://brew.sh/2018/08/05/securance-incident-disclosure/ ارسال شده است.

از زمان حوادث اخیر با NPM ، RubyGems و Gentoo ، من به طور فزاینده ای مورد توجه و نگرانی قرار گرفتم كه می توان از مدیران بسته برای پخش نرم افزارهای مخرب در حملات زنجیره تأمین استفاده كرد. به طور خاص ، چگونه می توان سرپرستان و زیرساخت های این پروژه ها را به عنوان یک بردار حمله مورد حمله قرار داد.

در تاریخ 31 ژوئن ، من قصد داشتم ببینم آیا می توانم به مخازن Homebrew's GitHub دسترسی پیدا کنم یا خیر. حدود 30 دقیقه بعد ، من اولین هسته اصلی homebrew / homebrew خود را مرتکب شدم.

بیایید نشت کنیم

استراتژی اولیه من مبتنی بر سرقت شناسه بود. اطلاعاتی را که از اعضای سازمان Homebrew GitHub کسب کرده است ، دریافت کنید.

ابزاری OSSINT توسط مایکل هنریکسن به نام gitrob باعث می شود خودکارسازی این جستجو بسیار آسان شود. من آن را در سازمان homebrew آزمایش کردم اما در نهایت چیز جالبی پیدا نکردم.

بعد ، من به موضوعاتی که قبلاً در https://hackerone.com/Homebrew ارسال شده بود نگاه کردم. از آنجا فهمیدم که Homebrew یک نمونه جنکینز را اجرا می کند که (عمدا) در https://jenkins.brew.sh در دسترس عموم است.

پس از انجام حفاری ، چیز جالبی متوجه شدم. ساخت و سازها در پروژه "Homebrew Bottles" فشارهای معتبری را برای دکوراسیون اصلی BrewTestBot / homebrew انجام می دهد:

این باعث شد تا فکر کنم: "اعتبارنامه ها در کجا ذخیره می شوند؟" من متوجه پیوند "متغیرهای محیطی" در سمت چپ شدیم که منجر به یک علامت API GitHub در معرض:

من آن را در سایت آزمایش کردم تا مشخص کنم کد آن مناطق دارای چه مناطقی است:

$ curl https://api.github.com/user/repos -u $ GITHUB_API_TOKEN: x-oauth-basic | jq ' [] | {repo: .full_name ، مجوزها: .permission '{"repo": "BrewTestBot / homebrew-core" ، "Permission": {"admin": true، "push": true، "pull": true}} "repo": "Homebrew / Brew" ، "Permission": {"admin": false "push": true، "drag": true}} {"repo": "Homebrew / formulae.brew.sh" ، "مجوزها ": {" admin ": false" push ": true،" pull ": true}} {" repo ":" homebrew / homebrew هسته "،" مجوز ": {" مدیر ": false" push ": true، "رسم": true}

این نشان می دهد که من به این قسمتهای اصلی خانه خانگی دسترسی داشتم:

  • Homebrew / دم کردن
  • هسته homebrew / homebrew
  • Homebrew / formulae.brew.sh

برای اطمینان ، من این کار را با ایجاد حباب در هسته repo homebrew / homebrew آزمایش کردم:

$ curl https://api.github.com/repos/Homebrew/homebrew-core/git/blobs -u $ GITHUB_API_TOKEN: x-oauth-basic -d 'content "محتوای": "test"}' -H "محتوا -تپه: Application / json "{sha: 30d74d258442c7c65512eafab474568dd706c430،" url ":" https://api.github.com/repos/Homebrew/homebrew-core/git/blobs/30d74d258442c7c65512eaf647 "

وی سپس این مشکل را به مشاغل خانگی نشان داد.

این یعنی چه

بگذارید این را در چشم انداز قرار دهم:

  • صدها هزار نفر از افراد خانگی استفاده می کنند ، از جمله کارمندان برخی از بزرگترین شرکت ها در دره سیلیکون.
  • متداول ترین بسته نصب شده در 30 روز گذشته opensl است که بیش از 500000 بار نصب شده است: https://formulae.brew.sh/analytics/install/30d/
  • من دسترسی مستقیمی به بازپرداخت هسته اصلی homebrew / homebrew داشتم. در آن زمان ، این repo هیچ شاخه استاد محافظت نشده ای داشت ، به این معنی که من می توانستم به سرعت به Refs / head / master تغییر دهم. هرکسی که به تازگی homebrew نصب کرده یا یک بروزرسانی دم کرده انجام دهد ، فرمول های مخرب من را خواهد داشت.

اگر من یک بازیگر مخرب بودم ، می توانستم یک تغییر کوچک ، احتمالاً بدون توجه به فرمول های OpenSSL ایجاد کنم و در پشت رایانه ای که آن را نصب کرده است ، یک درب پشتی قرار دهم.

اگر در مدت 30 دقیقه به تعهد دسترسی پیدا کنم ، یک کشور مملکت با منابع متعهد می تواند علیه تیم 17 نفری داوطلب انجام دهد؟ به چه تعداد از شبکه های شرکت خصوصی می توان دسترسی داشت؟ از چه تعداد می توان برای تشدید نقض داده ها در مقیاس بزرگ استفاده کرد؟ کدام سیستم های دیگر مدیریت بسته دارای نقاط ضعف مشابهی هستند؟

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

آنچه انجام می شود

Homebrew به طور عمومی مشکل را در وبلاگ در https://brew.sh/2018/08/05/securance-incident-disclosure/ اعلام کرده است. تیم homebrew با GitHub کار کرد تا اطمینان حاصل شود که از نشانه دسترسی مشخص استفاده نادرست نشده و هیچگونه تعهدی غیرمنتظره در مورد بازپرداخت خانه های مرکزی ایجاد نشده است. با تشکر ویژه من به پردازش سریع و حرفه ای گزارش من در مرخصی پدرانه خود از مایک مک کوئید می روم.

واضح است که می توان کارهای زیادی برای بهبود امنیت پروژه homebrew انجام داد. اگر در محل کار خود از homebrew استفاده می کنید ، باید از آنها بخواهید که به این پروژه اهدا کنند. به عنوان یک صنعت ، ما باید در بهزیستی نرم افزار اصلی OSS که همه ما به آن وابسته هستیم ، سرمایه گذاری کنیم.