آسیبپذیری بحرانی GitHub بیش از ۴ هزار مخزن را در معرض حمله Repojacking قرار میدهد.
به گزارش افتانا، تازهترین آسیبپذیری کشف شده در GitHub میتواند هزاران مخزن کد را در معرض حملات Repojacking قرار دهد. یافتههای جدید نشان میدهد که این ضعف میتواند به یک حملهکننده اجازه دهد تا از شرایط رقابتی (Race Condition) در عملیات ایجاد مخزن کد و سپس تغییر نام کاربری در GitHub بهرهبرداری کند. بهعبارت دیگر، این آسیبپذیری موجب مخاطراتی برای جامعه منبعباز میشود که از جمله آثار آن احتمال تخریب بیش از ۴ هزار پروژه کد باز در زبانهایی مانند Go، PHP و Swift در GitHub است.
پس از اعلام این آسیبپذیری، این پلتفرم نگهداری کد که به مالکیت مایکروسافت درآمده است، اخیرا به مسئله پرداخته است.
Repojacking، که به اختصار نهادن مخزن (repository hijacking) نیز خوانده میشود، یک تکنیک است که در آن یک عامل تهدیدی قادر به دستکاری یک سازوکار امنیتی به نام بازنامه فضای نام (popular repository namespace retirement) میشود و در نهایت کنترل یک مخزن را بهدست میآورد.
روش بالا به اقدام امنیتی اشاره دارد که توسط GitHub برای جلوگیری از حملات Repojacking (یا نهادن مخزن) انجام میشود. تاکید شده است که این اقدام امنیتی بهطور خاص از این موضوع جلوگیری میکند که دیگر کاربران بتوانند یک مخزن با همان نامی که در زمانی که حساب کاربری آن تغییر نام میکند، بیش از ۱۰۰ کلون (یعنی کپی یا نسخههای مشابه) از آن ایجاد کنند.
برای توضیح بیشتر، فرض کنید یک کاربر در GitHub یک حساب به نام victim_user دارد و یک مخزن به نام repo را ایجاد کرده است. در این حالت، نام کاربری victim_user به همراه نام مخزن repo به عنوان بازنامه در نظر گرفته میشود. حالا، اگر این کاربر تصمیم بگیرد نام کاربری خود را به renamed_user تغییر دهد، GitHub جلوگیری میکند که دیگر کاربران بتوانند یک مخزن با نام repo را با این نام کاربری جدید ایجاد کنند تا زمانی که مخزن repo بیش از ۱۰۰ کلون داشته باشد. بدین ترتیب، ترکیب نام کاربری renamed_user و نام مخزن repo به عنوان بازنامه در نظر گرفته میشود و دیگر کاربران نمیتوانند از این نام استفاده کنند.
هدف از این اقدام امنیتی، جلوگیری از تداخلها و احتمال حملات Repojacking به کمک ایجاد مخزنهای مخرب با نامهای مشابه است. این تدابیر امنیتی مهمی هستند تا امنیت و اعتماد کاربران به مخزنهای نرمافزاری موجود در GitHub حفظ شود. اگر این تدابیر امنیتی به آسانی دور زده شوند، این اجازه را به حملهکنندگان میدهد که حساب کاربری جدیدی با همان نام کاربری ایجاد کرده و مخزنهای مخربی را بارگذاری کنند و احتمالاً به حملات زنجیرهتأمین نرمافزاری منجر شوند.
حمله Repojacking
روش حمله Repojacking توسط Checkmarx بین ایجاد یک مخزن و تغییر نام کاربری به منظور دستیابی به Repojacking از یک شرایط رقابتی ممکن استفاده میکند. این روش به طور خاص، شامل مراحل زیر میشود:
۱. قربانی نام فضای victim_user/repo را در اختیار دارد.
۲. قربانی نام کاربری victim_user را به renamed_user تغییر میدهد.
۳. مخزن victim_user/repo اکنون بازنامه شده است.
۴. یک عامل تهدیدی با نام کاربری attacker_user به طور همزمان یک مخزن به نام repo ایجاد کرده و نام کاربری خود را به victim_user تغییر میدهد.
مرحله آخر با استفاده از درخواست API برای ایجاد مخزن و درخواست انتقال نام کاربری برای تغییر نام انجام میشود. این یافته تقریباً نه ماه پس از اینکه GitHub یک آسیبپذیری مشابه در دور زدن معافیت Repojacking کشف کرد و به حملات Repojacking درها باز کرد.
کشف این آسیبپذیری نوین در عملیات ایجاد مخزن و تغییر نام کاربری در GitHub نقاط ضعف مداوم مرتبط با سازوکار «بازنامه نام فضای نام معروف» را برجسته میکند.