CVE-2024-24576
أمر std::process::Command في Rust لم يقم بإفلات وسائط ملفات الدُفعات بشكل صحيح على نظام ويندوز.
- تم النشر
- 09/04/2024
- محدث
- 04/11/2025
- تخصيص CNA
- GitHub_M
- الأدلة المرصودة
- 08/08/2026
CVSS الأساسي
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:Hمتوسط · الثلاثين يومًا القادمة
- المئوية
- 97.4%
- تاريخ الموديل
- 21/09/2026
EPSS هو تقدير إحصائي، وليس يقينًا أو مقياسًا للتأثير. ادمجها مع CVSS وحالة KEV والتعرض وبيئتك.
ملخص
Rust هي لغة برمجة. تم إخطار فريق الاستجابة الأمنية لـ Rust (Rust Security Response WG) بأن المكتبة القياسية لـ Rust قبل الإصدار 1.77.2 لم تكن تفلت الوسائط بشكل صحيح عند استدعاء ملفات الدفعات (بالامتدادين `bat` و `cmd`) على Windows باستخدام `Command`. يمكن لمهاجم قادر على التحكم في الوسائط المُمرَّرة إلى العملية المستدعاة تنفيذ أوامر شل تعسفية عن طريق تجاوز آلية الإفلات. شدة هذه الثغرة حرجة بالنسبة لمن يستدعون ملفات الدفعات على Windows بوسائط غير موثوقة. لا تتأثر أي منصة أو استخدام آخر. تنص واجهتا برمجة التطبيقات `Command::arg` و `Command::args` في توثيقهما على أن الوسائط ستُمرَّر إلى العملية المستدعاة كما هي، بغض النظر عن محتوى الوسائط، ولن يتم تقييمها بواسطة شل. هذا يعني أنه يجب أن يكون من الآمن تمرير مدخلات غير موثوقة كوسيطة. على Windows، يكون تنفيذ هذا أكثر تعقيدًا من المنصات الأخرى، لأن واجهة برمجة تطبيقات Windows توفر فقط سلسلة واحدة تحتوي على جميع الوسائط للعملية المستدعاة، ويقع على عاتق العملية المستدعاة تقسيمها. تستخدم معظم البرامج argv القياسي لوقت تشغيل لغة C، والذي يؤدي عمليًا إلى طريقة متسقة إلى حد كبير في تقسيم الوسائط. لكن هناك استثناء واحد وهو `cmd.exe` (المستخدم من بين أمور أخرى لتنفيذ ملفات الدفعات)، والذي يمتلك منطق تقسيم وسائط خاصًا به. وهذا يفرض على المكتبة القياسية تنفيذ إفلات مخصص للوسائط المُمرَّرة إلى ملفات الدفعات. لسوء الحظ، تم الإبلاغ عن أن منطق الإفلات لدينا لم يكن دقيقًا بما يكفي، وكان من الممكن تمرير وسائط خبيثة تؤدي إلى تنفيذ أوامر شل تعسفية. بسبب تعقيد `cmd.exe`، لم نتمكن من تحديد حل يفلت الوسائط بشكل صحيح في جميع الحالات. للحفاظ على ضمانات واجهة برمجة التطبيقات لدينا، قمنا بتحسين متانة كود الإفلات، وغيّرنا واجهة برمجة تطبيقات `Command` لإرجاع خطأ `InvalidInput` عندما يتعذر عليها إفلات وسيطة بأمان. سيتم إصدار هذا الخطأ عند إنشاء العملية. الإصلاح مضمن في Rust 1.77.2. لاحظ أن منطق الإفلات الجديد لملفات الدفعات يميل إلى الجانب التحفظي، وقد يرفض وسائط صالحة. يمكن لمن ينفذون الإفلات بأنفسهم أو يتعاملون فقط مع مدخلات موثوقة على Windows استخدام طريقة `CommandExt::raw_arg` أيضًا لتجاوز منطق الإفلات الخاص بالمكتبة القياسية.
المصادر
7الاستخدام المسؤول
استخدم معلومات الثغرات الأمنية فقط على الأنظمة التي تمتلكها أو المرخص لها باختبارها. يرتبط Kitploit ببيانات تعريف البحث العامة ولا يخزن أكواد الاستغلال أو الحمولات الضارة.