یک نقص امنیتی مهم در کتابخانه استاندارد Rust شناسایی شده است که میتواند برای مورد هدف قرار دادن کاربران ویندوز و اجرای حملات command injection مورد سوء استفاده قرار گیرد. این آسیب پذیری که با نام رمز BatBadBut دنبال میشود، دارای شناسه CVE-2024-24576 و امتیاز CVSS 10.0 است که نشان دهنده حداکثر شدت آسیب پذیری است.
این آسیب پذیری تنها بر روی سناریوهایی تأثیر میگذارد که فایلهای batch در ویندوز با آرگومانهای نامعتبر و غیرقابل اطمینان فراخوانی میشوند.
کتابخانه استاندارد Rust هنگام فراخوانی فایلهای batch (با پسوندهای bat و cmd) در ویندوز با استفاده از Command API به درستی آرگومان را فراخوانی نکرده است. یک مهاجم با کنترل آرگومان های ارسال شده به فرآیند ایجاد شده، میتواند دستورات Shell دلخواه را با دور زدن escape اجرا کند.
این نقص بر روی تمام نسخههای Rust پیش از ۱.۷۷.۲ تأثیر میگذارد. RyotaK، محقق امنیتی، مسئول کشف و گزارش این باگ به مرکز هماهنگی CERT (CERT/CC[1]) است.
BatBadBut بر چندین زبان برنامه نویسی تأثیر میگذارد و زمانی ایجاد میشود که زبان برنامه نویسی، تابع CreateProcess [در ویندوز] را فراخوانی و مکانیزم escape (فرار) را برای آرگومان های دستورات اضافه میکند.
این آسیب پذیری، بر اساس CERT/CC، نتیجه زبانهای برنامه نویسی میباشد که دارای مکانیزم های اعتبارسنجی کافی در هنگام فراخوانی دستورات در محیط مایکروسافت ویندوز نیستند، در نتیجه مهاجمان خواهند توانست کد دلخواه را اجرا کنند که به عنوان آرگومان هایی برای دستورات پنهان شده است.
تاثیر کامل این آسیب پذیری بستگی به پیاده سازی دارد که از یک زبان برنامه نویسی آسیب پذیر یا چنین ماژول آسیب پذیر استفاده میکند.
تمام زبان های برنامه نویسی این باگ را برطرف نکردهاند. از این رو، به توسعه دهندگان توصیه میشود هنگام اجرای دستورات در ویندوز احتیاط کنند. RyotaK در توصیهای به کاربران اعلام کرد که جهت جلوگیری از اجرای غیرمنتظره فایل های batch، بایستی فایل های batch را به دایرکتوری منتقل کنند که در متغیر محیطی PATH گنجانده نشده است. فایل های batch در این حالت، اجرا نمی شوند مگر اینکه مسیر کامل مشخص شده باشد، بنابراین می توان توسط این تکنیک از اجرای غیرمنتظره فایل ها جلوگیری به عمل آورد.
[1] CERT Coordination Center