ضعف امنیتی 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 گیت منتشر شده است، که این مورد را بر طرف می کند.

منبع

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

خالق لاراول چگونه کار می‌کند؟

اخیرا افرادی را دیدم که وضعیت / روند کاری خود را به اشتراک می‌گذارند. پس من هم تصمیم گرفتم که همین کار را انجام دهم.

دکتر استارتاپ (مهدی علیپور) چگونه کار می کند

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

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

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

چگونه محیط کار در کار طراحی اثر می گذارد

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