أمن سيبرانيقراءة دقيقتين

uv 0.12.7 يرفض الأرشيفات ذات الـ hash غير المطابق قبل كتابتها في الـ cache

المغزى

الفحص كان موجودًا وصحيحًا، لكن ترتيبه بعد فك الأرشيف كان يترك محتوى مرفوضًا على القرص، وكثير من مشاكل سلسلة التوريد تأتي من ترتيب الخطوات لا من كسر التشفير.

صدر الإصدار 0.12.7 من uv، مدير الحزم الخاص بـ Python، في 27 أغسطس 2026. ومن بنوده إصلاح نصه في سجل التغييرات: رفض أرشيفات المصدر التي لا يطابق الـ hash الخاص بها القيمة المتوقعة، قبل كتابة محتواها المفكوك في الـ cache.

ولفهم الإصلاح، يلزم معرفة ما يحدث عند تنزيل حزمة. فـ uv يقوم بثلاث خطوات: يحمّل الأرشيف، ويتحقق من أن الـ hash الخاص به يطابق المسجّل في الـ lockfile، ثم يفك محتواه.

والترتيب بين الخطوتين الأخيرتين هو جوهر المسألة. فإذا جرى الفك قبل الفحص، يكون الأرشيف الذي فشل في الفحص قد كُتب على القرص قبل رفضه. فتفشل عملية التثبيت، لكن المحتوى يبقى داخل الـ cache.

والـ cache لا يُقرأ مرة واحدة ثم يُهمل. فهو يُقرأ في كل build لاحق، وفي الـ CI، وعلى كل جهاز في الفريق يحتفظ بالنسخة نفسها.

والإصلاح عكس الترتيب: الرفض أولًا، ثم الكتابة.

واللافت في هذا النوع من الأخطاء أنه لا يتعلق بالتشفير ولا باختيار الخوارزمية. فالفحص كان موجودًا ويعمل بشكل صحيح، والخطأ كان في ترتيب خطوتين. وكثير من مشاكل سلسلة التوريد تنتمي إلى هذه الفئة، لا إلى كسر التشفير.

والسؤال نفسه يمتد إلى كل أداة تحمّل وتفك وتتحقق، سواء كانت مدير حزم أو خطوة في الـ CI: هل يحدث التحقق قبل الكتابة على القرص أم بعدها؟

المصادر

  1. سجل تغييرات uv
  2. الملف نفسه على GitHub
  3. الـ PR رقم 21248
  4. تواريخ النشر على PyPI
  5. توثيق الـ hashes في uv

من عدد الجمعة 15 ربيع الأول - 28 أغسطس

أخبار ذات صلة

أخبار الجمعة 15 ربيع الأول - 28 أغسطس