ضعف امنیتی Git نسخه می 2018

گردآوری و تالیف : عرفان کاکایی
تاریخ انتشار : 15 خرداد 1397
دسته بندی ها : برنامه نویسی

CVE 2018-11235 یک ضعف امنیتی در سطح کل صنعت در Git است که می تواند زمانی که یک کاربر Repository مخربی را به اجرا در میاورد، منجر به اجرای کد های خودسرانه شود. در طی اطلاعیه، Edward Thompson این ضعف را اینگونه بیان کرد:

«شاید یک Repository کنترل از راه دور شامل تعریفی برای یک زیر مجموعه باشد، و همچنین داده های Repository آن زیر مجموعه را اتصال دهد، و در Reposiroty مادر به عنوان یک فولدر بررسی شود. وقتی که این Repository به طور بازگشتی Clone می شود و گسترش میابد، Git در ابتدا Repository مادر را در شاخه در حال کار بررسی می کند، و بعد برای Clone کردن این زیر مجموعه آماده می شود. سپس متوجه می شود که نیازی به این Clone کردن نیست، زیرا Repository این زیر مجموعه از قبل بر روی دیسک وجود دارد. و از آنجایی که بررسی شده بود، در شاخه در حال کار نوشته شده است. از این رو، Git می تواند فرایند بررسی را نادیده گرفته، و این زیر مجموعه را با استفاده از Repository موجود بر روی دیسک بررسی کند.

مشکل در اینجاست که وقتی شما یک Repository را git clone می نمایید، یک سری پیکربندی های بسیار مهم وجود دارند، که از سرور دریافت نمی کنید. این پیکربندی ها محتویات فایل .git/config، و مواردی مانند hook ها، که اسکریپت هایی هستند که در مواقعی خاص داخل Git اجرا می شود، را شامل می شوند. برای مثال، post-checkout هر زمان که Git فایلی را داخل شاخه در حال کار بررسی کند، اجرا می شود.

این پیکربندی از سرور کنترل از راه دور Clone نشده است، زیرا این کار یک ضعف خطرناک را باز می کند: یک سرور کنترل از راه دور می تواند کدی را به شما منتقل کند که می تواند بعدا بر روی کامپیوتر شما اجرا شود.

متاسفانه، با این ضعف پیکربندی زیر مجموعه، این دقیقا اتفاقی است که می افتد. از آنجایی که Repository این زیر مجموعه در Repository مادر بررسی شده است، به هیج وجه Clone نمی شود. به این صورت Repository این زیر مجموعه می تواند از قبل یک hook را به صورت پیکربندی شده داشته باشد. زمانی که این Repository مادر مخرب را Clone کردید، (که در راستای آشکار شدن این ضعف، حتما این Repository باید با استفاده از --recursive کلون شده باشد) ابتدا Repository مادر را بررسی می کند، و سپس Repository بررسی شده زیر مجموعه را می خواند، تا زیر مجموعه را در شاخه در حال کار بنویسد، و در آخر نیز post-checkout را اجرا می کند که در Repository بررسی شده زیر مجموعه، پیکربندی شده اند.»

پیش نهاد می شود همه Git خود را به روز رسانی کنند. نسخه 2.17.1 گیت منتشر شده است، که این مورد را بر طرف می کند.

منبع

برچسب :
این مطلب را با دیگران به اشتراک بگذارید :

مقالات پیشنهادی

10 نمونه از انیمیشن‌های ساخته شده با CSS

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

Milligram یک فریمورک مینیمالیست Css

Milligram یک فریمورک مینیمالیست برای css است به این معنی که شما در سریع ترین زمان می تونید اون رو نصب و ازش استفاده کنید . حجم این فریمورک تنها 2 کیلو...

بهترین راه برای اطمینان چسبندگی footer

Css3 ابزار پیشرفته ای برای ساخت و ساز تطبیقی ارائه کرده است . نام این ابزار flexbox است . برای کسانی که با flexbox آشنا نیستند بهتره که قبل یا بعد از...

ساخت انیمیشن gradient با granim.js

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