امنیت

January 18, 2024
9:40 پنجشنبه، 28ام دیماه 1402
کد خبر: 158404

کشف آسیب‌پذیری با شدت بالا در Gitpython

GitPython یک کتابخانه پایتون است که برای تعامل با مخازن git مورد استفاده قرار می‌گیرد و می‌تواند محتویات داخل مخازن مربوطه را بخواند و همچنین در آن‌ها بنویسد. پیشتر، آسیب‌پذیری‌ای با شناسه CVE-2023-40590 در Gitpython کشف شده‌بود که اصلاحاتی برای آن ارائه شد اما این بار در پی نقصی که در اصلاحات پیشین وجود داشت، آسیب‌پذیری با شدت بالا و شناسه جدید CVE-2023-22190 در مورد این کتابخانه‌ی پایتون اعلام گردید. این آسیب‌پذیری که شدت CVSS 7.8 را به خود اختصاص داده‌است کاربران ویندوز‌ را تهدید می‌کند. استفاده‌ی Gitpython از یک shell(پوسته) جهت اجرای git، مشابه کاری که برای اجرای bash.exe ‌جهت تفسیر hook انجام می‌دهد، منجر به استفاده از یک مسیر جستجوی ناامن می‌شود که اگر این امر بر روی یک سیستم با سیتسم‌عامل ویندوز انجام شود می‌تواند اجرای یک فایل مخرب یا آلوده‌ی git.exe یا bash.exe را در پی داشته باشد.
اگرچه GitPython اغلب از اجرای برنامه‌هایی که در یک مسیر جستجوی نامعتبر یافت می‌شوند اجتناب می‌کند، اما همچنان دو موقعیت وجود دارد که هر یک تحت شرایطی، اجازه اجرای کد دلخواه را به مهاجم می‌دهند:
• هنگامی که از یک shell استفاده می‌شود:
هنگامی کهGitPython ، git را مستقیماً به جای یک پوسته اجرا می‌کند، فرآیند پیش‌فرض جستجوی مسیر انجام می‌شود و مسیر ارائه شده را با تنظیم متغیر محلی NoDefaultCurrentDirectoryInExePath حذف می کند. اما در استفاده از پوسته cmd.exe، این متغیر محلی حذف مسیر از جانب Gitpython انتقال نمی‌یابد.
• هنگامی که اسکریپت‌های hook اجرا می‌شوند:
Hooks Git، اسکریپت‌هایی هستند که با هربار اجرا یک رویداد خاص در یک مخزن Git به‌طور خودکار اجرا می‌شوند. در ویندوز، GitPython از پوسته‌ی bash.exe جهت اجرای hookهایی که اسکریپت هستند، استفاده می‌کند. با این حال، برخلاف هنگام اجرای git، هیچ اقدامی جهت جلوگیری از یافتن و اجرای bash.exe در مسیر(directory) فعلی صورت نمی‌پذیرد که همین امر عامل وقوع نقص امنیتی‌ مذکور می‌باشد.

محصولات تحت تأثیر
احتمالاً بخش عمده تأثیر این آسیب‌پذیری در برنامه‌هایی است که Git.USE_SHELL = True را جهت حفظ تاریخچه‌ی توسعه‌ی خود تنظیم می‌کنند. چنین برنامه‌هایی ممکن است در برابر اجرای کد دلخواه از یک مخزن مخرب آسیب‌پذیر باشند. اگر از یک پوسته جهت اجرای git استفاده شود، مهاجم می‌تواند کاربر را فریب دهد تا یک مخزن را با یک فایل اجرایی مخرب دانلود کند. باید توجه داشت که اجرای خود برنامه از یک مسیر قابل اعتماد جهت ایمن‌سازی فرایند کافی نیست.

توصیه‌های امنیتی
این آسیب‌پذیری در نسخه 3.1.41 کتابخانه GitPython وصله شده‌است.
همچنین راه‌های پیشنهادی جهت کاهش خطر این آسیب‌پذیری به شرح ذیل می‌باشند:

هنگامی که از یک پوسته استفاده می‌شود، متغیر NoDefaultCurrentDirectoryInExePath را به محیط زیرپردازش منتقل کنید. در این صورت خود پوسته cmd.exe جستجوی مسیر را انجام می‌دهد که راهی ایمن است.
هنگام فراخوانی Popen که برای اجرای hookها با یک زیرفرایند bash.exe انجام می‌گیرد، NodeFaultCurrentDirectoryInexePath را در محیط فرآیند Gitpython تنظیم کنید.

  • مشترک شوید!

    برای عضویت در خبرنامه روزانه ایستنا؛ نشانی پست الکترونیکی خود را در فرم زیر وارد نمایید. پس از آن به صورت خودکار ایمیلی به نشانی شما ارسال میشود، برای تکمیل عضویت خود و تایید صحت نشانی پست الکترونیک وارد شده، می بایست بر روی لینکی که در این ایمیل برایتان ارسال شده کلیک نمایید. پس از آن پیامی مبنی بر تکمیل عضویت شما در خبرنامه روزانه ایستنا نمایش داده میشود.

    با عضویت در خبرنامه پیامکی آژانس خبری فناوری اطلاعات و ارتباطات (ایستنا) به طور روزانه آخرین اخبار، گزارشها و تحلیل های حوزه فناوری اطلاعات و ارتباطات را در هر لحظه و هر کجا از طریق پیام کوتاه دریافت خواهید کرد. برای عضویت در این خبرنامه، مشترکین سیمکارت های همراه اول لازم است عبارت 150 را به شماره 201464 و مشترکین سیمکارت های ایرانسل عبارت ozv ictn را به شماره ۸۲۸۲ ارسال کنند. دریافت موفق هر بسته خبری که محتوی پیامکی با حجم ۵پیامک بوده و ۴ تا ۶ عنوان خبری را شامل میشود، ۳۵۰ ریال برای مشترک هزینه در بردارد که در صورتحساب ارسالی از سوی اپراتور مربوطه محاسبه و از اعتبار موجود در حساب مشترکین سیمکارت های دائمی کسر میشود. بخشی از این درآمد این سرویس از سوی اپراتور میزبان شما به ایستنا پرداخت میشود. مشترکین در هر لحظه براساس دستورالعمل اعلامی در پایان هر بسته خبری قادر خواهند بود اشتراک خود را در این سرویس لغو کنند. هزینه دریافت هر بسته خبری برای مشترکین صرفا ۳۵۰ ریال خواهد بود و این هزینه برای مشترکین در حال استفاده از خدمات رومینگ بین الملل اپراتورهای همراه اول و ایرانسل هم هزینه اضافه ای در بر نخواهد داشت.