ترجمة آلية لم تُراجَع بعد. النص الإنجليزي هو المرجع في حال الاختلاف.
الملخص
في أداة fickling من Trail of Bits حتى الإصدار 0.1.12، تضيف طريقة _process_import() في fickle.py اسمًا مستوردًا إلى مجموعة likely_safe_imports متى كانت وحدة المصدر موجودة في sys.stdlib_module_names وكان الاسم غائبًا عن قائمة الحظر UNSAFE_IMPORTS، دون فحص ما يتم حل الاسم إليه أو كيفية سلوكه. بعد ذلك، يتخطى تمرير تحليل OvertlyBadEvals في analysis.py دون قيد أو شرط أي استدعاء يظهر اسم دالة فيها ضمن likely_safe_imports، بما في ذلك الاستدعاءات التي يتم الإبلاغ عنها بخلاف ذلك على أنها خطيرة صراحة. ونتيجة لذلك، يرث أي عنصر قابل للاستدعاء يمكن الوصول إليه من خلال وحدة قياسية غير محظورة ثقة مستوى الوحدة بغض النظر عن سلوكه الخاص، وتُرجع الدالة check_safety() النتيجة LIKELY_SAFE مع صفر نتائج لحمولات التخزين المؤقت (pickle) التي تصل إلى تنفيذ الشيفرة أو الكتابة على الملفات من خلال هذه العناصر القابلة للاستدعاء. البدائل المُثبتة: dataclasses._create_fn، والتي تمرر جسم دالة يتحكم فيه المهاجم إلى exec() وتنتج تنفيذاً عشوائياً للشيفرة على إصدارات Python من 3.7 حتى 3.12 (تمت إزالة دالة _create_fn الداخلية في Python 3.13)؛ وmailcap.findmatch، التي تستدعي داخليًا os.system() على أمر اختبار مأخوذ من قاموس caps يتحكم فيه المهاجم، مما ينتج عنه تنفيذ شيفرة عشوائية على إصدارات Python حتى 3.12 (تمت إزالة وحدة mailcap في Python 3.13)؛ وreadline.add_history() متبوعًا بـ readline.write_history_file()، والذي يكتب محتوى يتحكم فيه المهاجم إلى مسار نظام ملفات عشوائي (منصات POSIX، حيث تتوفر وحدة readline). تربط fickling.load() الدالة check_safety() بـ pickle.loads() كبوابة أمان صريحة، لذا فإن حكم LIKELY_SAFE يتسبب في إلغاء تسلسل الحمولة وتنفيذها بصلاحيات عملية الضحية. السبب الجذري هو استنتاج أمان القابل للاستدعاء من أصل الوحدة؛ وهو مستقل عن، وقابل للإصلاح بشكل منفصل عن، ضعف حل نقطة __qualname__ المتتبع كـ CVE-2026-118938، والذي لا تعالجه هذه الاستشارة. اعتبارًا من 2026-10-30، تمت إضافة الوحدات الثلاث التي تم إثباتها إلى UNSAFE_IM...