
منفذ بلغة Go لـ Copy Fail PoC الخاص بـ CVE-2026-31431، وهو ثغرة في نواة لينكس تتيح كتابة 4 بايتات في ذاكرة التخزين المؤقت للصفحات عبر AF_ALG و splice. يتضمن خط أنابيب بناء متعدد البنى ووثائق تقنية مفصلة.
يوفر هذا المستودع نسخة Go من PoC العامة لـ Copy Fail وخط أنابيب بناء قابل للتكرار لثنائيات Linux متعددة البنى.
Copy Fail (CVE-2026-31431) هو خلل منطقي في نواة Linux في authencesn يتيح كتابة حتمية من 4 بايت في بيانات ذاكرة التخزين المؤقت للصفحات المشار إليها عبر AF_ALG + splice().
استخدم هذا المشروع فقط في البيئات التي لديك فيها إذن صريح للاختبار. لا تشغّل هذا الـ PoC ضد أنظمة لا تملكها أو ليس لديك إذن كتابي لتقييمها.
إذا كنت تريد الاختبار فورًا دون البناء من المصدر، قم بتنزيل ثنائي من الإصدارات وتشغيله:
wget https://github.com/ErdemOzgen/copy-fail-cve-2026-31431/releases/download/v1.0.1/copy-fail-cve-2026-31431_linux_amd64
chmod +x copy-fail-cve-2026-31431_linux_amd64
./copy-fail-cve-2026-31431_linux_amd64
للبنى الأخرى، قم بتنزيل الملف المطابق من صفحة إصدارات GitHub:
https://github.com/ErdemOzgen/copy-fail-cve-2026-31431/releases
بناء جميع أهداف Linux:
make clean build-linux
البناء وإنشاء المجاميع الاختبارية:
make clean checksums
ملفات الإخراج في dist/:
copy-fail-cve-2026-31431_linux_amd64copy-fail-cve-2026-31431_linux_arm64copy-fail-cve-2026-31431_linux_386copy-fail-cve-2026-31431_linux_armv7SHA256SUMSالتشغيل الافتراضي:
./copy-fail-cve-2026-31431_linux_amd64
استخدام مسار هدف مخصص:
./copy-fail-cve-2026-31431_linux_amd64 -target /path/to/binary
تعطيل تنفيذ su بعد التشغيل:
./copy-fail-cve-2026-31431_linux_amd64 -spawn-su=false
طباعة بيانات تعريف البناء:
./copy-fail-cve-2026-31431_linux_amd64 -version
إذا فشل التنفيذ عند الإزاحة 0 مع خطأ مشابه لما يلي:
error: copy chunk at offset 0: splice(pipe->AF_ALG): software caused connection abort
فمن المرجح أن النواة رفضت مسار AEAD الموضعي الضعيف (على سبيل المثال لأن المضيف مصحح لـ CVE-2026-31431 أو أن algif_aead مخفف/معطل).
فحوصات سريعة:
uname -r
grep -E "algif_aead|authencesn" /proc/modules
على الأنظمة المعالجة، من المتوقع أن يفشل هذا الـ PoC.
وفقًا للإفصاح العام، يسمح المسار الضعيف لمستخدم محلي غير مميز بالتأثير على بدائية كتابة من 4 بايت في محتوى ذاكرة التخزين المؤقت للصفحات للملفات القابلة للقراءة في ظل ظروف محددة.
الخاصية التشغيلية المهمة هي أن نسخة ذاكرة التخزين المؤقت للصفحات في الذاكرة يمكن أن تتباعد عن البايتات الموجودة على القرص أثناء وقت التشغيل، مما قد يجعل تحليل التأثير غير تافه للفرق التي تعتمد فقط على فحوصات سلامة مستوى القرص.
Copy Fail جدير بالملاحظة لأنه تم الإبلاغ عنه على أنه:
على مستوى عالٍ، تكمن المشكلة عند تقاطع ثلاث آليات:
AF_ALG AEAD.splice().authencesn.في التصميم الضعيف، يمكن ربط المقاطع المدعومة بذاكرة التخزين المؤقت للصفحات في شكل طلب يتلقى لاحقًا عمليات كتابة أثناء معالجة الخوارزمية، مما ينتهك افتراضًا رئيسيًا بأن مناطق الوجهة المقصودة فقط هي التي يتم تعديلها.
في المسار الموثق، يستخدم authencesn عمليات مساحة مؤقتة على جانب الوجهة حول معالجة تخطيط ESN ويقوم بكتابة عند إزاحة تتجاوز عقد إخراج فك التشفير المتوقع.
عند دمجه مع إعداد AEAD الموضعي ومراجع scatterlist المتسلسلة، يمكن أن تصل هذه الكتابة إلى ذاكرة مدعومة بذاكرة التخزين المؤقت للصفحات لمناطق يختارها المهاجم.
يصف الإفصاح تطورًا متعدد الالتزامات:
authencesn في تاريخ تكامل سابق.AF_ALG AEAD قابلية الوصول من مساحة المستخدم مع تفاعل splice().algif_aead تدفق المصدر والوجهة بطريقة جعلت هذا التقاطع قابلاً للاستغلال.الدرس الرئيسي هو المخاطر التركيبية: التغييرات المعقولة بشكل فردي يمكن أن تصبح غير آمنة عند دمجها.
يصف المقال العام والـ PoC هذا التسلسل:
AF_ALG AEAD لـ authencesn(hmac(sha256),cbc(aes)).splice() لتوجيه بيانات الملف المدعومة بذاكرة التخزين المؤقت للصفحات عبر مسار الطلب.تنفيذ Go في هذا المستودع يعكس منطق الـ PoC العام لأغراض البحث والتحقق في البيئات المصرح بها.
الإصلاح المبلغ عنه يعيد عملية AEAD الموضعية الضعيفة في algif_aead إلى سلوك خارج الموضعية.
مفاهيميًا:
AF_ALG حيثما كان ذلك ممكنًا تشغيليًا).بناءً على المقال العام:
| التاريخ | الحدث |
|---|---|
| 2026-03-23 | تقديم التقرير إلى فريق أمان نواة Linux |
| 2026-03-24 | إقرار أولي |
| 2026-03-25 | مناقشة/مراجعة التصحيح |
| 2026-04-01 | الالتزام بالإصلاح في الخط الرئيسي |
| 2026-04-22 | تعيين CVE-2026-31431 |
| 2026-04-29 | الإفصاح العام |
يعزو البحث المنشور الفضل إلى تحليل الأنظمة الفرعية الموجه بشريًا والمدعوم بالذكاء الاصطناعي مع التركيز على مسارات الشيفرة المشفرة القابلة للوصول من مساحة المستخدم وبيان أصل الصفحة/scatterlist تحت splice().
main.go: نسخة Go من الـ PoC.Makefile: أهداف بناء Linux متعددة البنى حتمية..github/workflows/build.yml: سير عمل CI للبناء وإصدار الأصول.ملف سير العمل: .github/workflows/build.yml
المشغلات:
mainv*workflow_dispatch اليدويالسلوك:
make clean checksums.v*.تدفق الإصدار المقترح:
git tag v1.0.0
git push origin v1.0.0
| التوزيع | إصدار النواة |
|---|---|
| Ubuntu 24.04 LTS | 6.17.0-1007-aws |
| Amazon Linux 2023 | 6.18.8-9.213.amzn2023 |
| RHEL 10.1 | 6.12.0-124.45.1.el10_1 |
| SUSE 16 | 6.12.0-160000.9-default |