آسیبپذیری تزریق فرمان برنامههای ویندوز از طریق نقص BatBadBut
اخبار داغ فناوری اطلاعات و امنیت شبکه
مجموعه Flatt Security یک آسیبپذیری حیاتی به نام BatBadBut کشف کرده است که میتواند به مهاجمان اجازه دهد تا دستورات مخرب را به برنامههای ویندوز تزریق کنند. این نقص که توسط مهندس امنیتی آن مجموعه با نام RyotaK کشف شده است، چندین زبان برنامهنویسی را تحت تاثیر قرار میدهد. این آسیبپذیری به CERT گزارش شد و به عنوان CVE-2024-24576 در GitHub با امتیاز شدت 10.0 ثبت گردید.
مشکل از کجاست؟
توسعهدهندگان ویندوز Rust به دلیل آسیبپذیری حیاتی به نام BatBadBut که میتواند منجر به تزریق دستورات مخرب بر روی دستگاهها شود، از توسعهدهندگان خواسته است تا نسخههای خود را به روز کنند. این آسیبپذیری لایبرری استاندارد Rust را تحت تاثیر قرار میدهد، که هنگام فراخوانی فایلهای دستهای در ویندوز با استفاده از Command API به طور نامناسبی از آرگومانها خارج میکرد.
آسیبپذیری BatBadBut به مهاجمان اجازه میدهد تا دستوراتی را به برنامههای ویندوزی که بر فانکشن «CreateProcess» متکی هستند، تزریق کنند. این مسئله به این دلیل است که cmd.exe که فایلهای دستهای را اجرا میکند، قوانین تجزیه پیچیدهای دارد و زمان اجرای زبان برنامهنویسی به درستی از آرگومانهای فرمان خارج نمیشود.
این اتفاق چرا رخ میدهد؟
مشکل BatBadBut از تعامل بین زبانهای برنامهنویسی و سیستم عامل ویندوز رخ میدهد. هنگامی که برنامهای فانکشن "CreateProcess" را فراخوانی میکند، ویندوز یک فرآیند جداگانه به نام "cmd.exe" را برای مدیریت اجرا راه اندازی میکند. این فرآیند جداگانه دستورات موجود در فایل bat. را تجزیه میکند.
ویندوز به طور پیشفرض شامل فایلهای bat. و .cmd در متغیر محیطی PATHEXT است که میتواند باعث شود زمانهای اجرا فایلهای دستهای را برخلاف اهداف توسعهدهندگان اجرا کنند. مهاجم میتواند با کنترل بخش آرگومانهای دستورات فایلهای دستهای، دستورات را به برنامههای ویندوز تزریق کند. برای انجام این کار، برنامه باید دستوری را در ویندوز اجرا کند، پسوند فایل فرمان را مشخص کند، آرگومانهای فرمان را کنترل کند و نتواند از آنها خارج شود.
ریوتک توضیح داد: "بعضی از زمانهای اجرا، اگر یک فایل دستهای با همان نام دستوری وجود داشته باشد که توسعهدهنده قصد اجرای آن را داشته است، فایلهای دستهای را برخلاف قصد توسعهدهندگان اجرا میکنند. ".
برنامههای کاربردی تحت تاثیر
لایبرری فرآیند Haskell، Rust، Node.js، PHP و yt-dlp تحت تاثیر این باگ قرار دارند. گروه Rust Security Response در ٩ آوریل ٢٠٢٤ مطلع شد که لایبرری استاندارد Rust، که برای فراخوانی فایلهای دستهای در ویندوز استفاده میشود، به درستی از آرگومانها عبور نمیکند و به مهاجمان اجازه میدهد تا دستورات shell دلخواه را با دور زدن escaping اجرا کنند. Haskell، Rust و yt-dlp پچهایی را جهت رفع این مشکل منتشر کردهاند.
ریوتک گزارش میدهد که این یک "آسیبپذیری فوق بحرانی و فاجعهبار" نیست و اکثر برنامهها تحت تاثیر آن قرار نمیگیرند، زیرا چندین پروتکل کاهش خطر از قبل موجود است. برخی از زبانهای برنامهنویسی با افزودن مکانیزم فرار به آن پرداختهاند. علاوه بر این، BatBadBut فقط بر نسخههای Rust قبل از 1.77.2 تاثیر میگذارد و هیچ پلتفرم یا نسخه دیگری را تحت تاثیر قرار نمیدهد.
استراتژیهای کاهش خطر
محققان به توسعهدهندگان توصیه میکنند هنگام استفاده از فانکشنهایی که با فرآیندهای خارجی و به ویژه زمانی که با دادههای ارائهشده توسط کاربر سروکار و تعامل دارند، احتیاط کنند. آنها توصیه میکنند که ورودی کاربر را قبل از گنجاندن آن در دستورات، استفاده از جایگزینهای امن و به روز ماندن با جدیدترین پچهای امنیتی و اصلاحات ارائهشده توسط توسعهدهندگان فریمورک و لایبرری، اعتبارسنجی، بررسی و ایمنسازی کنند.
برچسب ها: bat, بت بد بات, Node.js, yt-dlp, Haskell, PATHEXT, CreateProcess, راست, CVE-2024-24576, BatBadBut, Cyber Attack, کتابخانه, تزریق فرمان, Rust, Library, Application, cmd, Function, لایبرری, PHP, cybersecurity, Command Injection, آسیبپذیری, windows, Vulnerability, جاسوسی سایبری, امنیت سایبری, جنگ سایبری, تلگرام, حمله سایبری, news