# Astral تكتب parser جديدًا لملفات tar في uv، والدافع الأول أمني قبل السرعة

> **المغزى:** المغزى: حين يُفحص الملف في مكان ويُفك في مكان آخر بأداة مختلفة، قد يمر ملف سليم في نظر الفاحص ويتصرف بشكل مختلف عند التثبيت، فيصبح الفحص شكلًا بلا مضمون.

- المصدر: المغزى (https://almaghza.com/a/2026-10-28-astral-uv-tar-codec-parser-differential/)
- التاريخ: 17 جمادى الأولى - 28 أكتوبر 2026 (2026-10-28)
- القسم: برمجيات
- الوسوم: uv، Python، هجمات سلسلة التوريد

نشر William Woodruff على مدونة Astral، الشركة المطوّرة لأداتي uv وruff، في 27 أكتوبر 2026، مقالة تشرح لماذا كتب الفريق parser جديدًا لملفات tar من الصفر اسمه tar-codec. وبدءًا من الإصدار 0.13 يستخدمه uv لقراءة حزم الـ sdist. والمقالة صريحة في الترتيب: الأمن والأداء، لكن الأمن أولًا.

تصل حزم Python بشكلين. الـ wheel ملف ZIP فيه ملفات جاهزة توضع في مكانها، والـ sdist ملف tar يحمل الكود المصدري، وهو بحكم تصميمه يشغّل كودًا وقت التثبيت. فمن يتحكم في محتوى هذا الملف يتحكم في شيء يُنفَّذ على جهاز المستخدم.

والمشكلة التي يعالجها الفريق اسمها parser differential: أن يقرأ برنامجان الملف نفسه فيصلا إلى نتيجتين مختلفتين. وحين يصل الاختلاف إلى الحدود بين الملفات داخل الأرشيف، تسمى الحالة parser desynchronization، أي أن القارئ الثاني يبدأ قراءة ملف جديد من موضع خاطئ. وخطورة ذلك أن الفحص والتثبيت لا يحدثان في المكان نفسه. فقد يقرأ index مثل PyPI الأرشيف بأداة ويراه سليمًا، ثم يقرأه installer مثل uv أو pip بأداة أخرى فيُخرج محتوى مختلفًا.

وكان الـ parser القديم astral-tokio-tar نسخة متفرعة عن سلسلة طويلة من المشاريع، تبدأ من tar-rs ثم async-tar ثم نسختين من tokio-tar. ويأتي الجديد أسرع بنحو مرتين، لكن السرعة في هذه القصة مكسب جانبي.

والدرس أوسع من Python ومن tar: كل نظام يفحص الملفات في موضع ويفكها في موضع آخر يحتاج إلى أن يقرأ الطرفان بالمكتبة نفسها. ولا تقول المقالة إن هجومًا وقع فعلًا على PyPI بهذه الطريقة، بل تتحدث عن تقارير أمنية وصلت الفريق عن الـ parser القديم، وعن قرار بتقليص المساحة المعرّضة للخطر.

## المصادر

- [مقالة Astral عن tar-codec](https://astral.sh/blog/tar-codec)
- [موقع أداة uv](https://astral.sh/uv)
