
تطبيق بلغة Go لـ fragnesia (CVE-2026-46300)
SA واحدة. بايت واحد في كل مرة. بدون سباق.
مَنفذ Go من fragnesia (CVE-2026-46300). عضو في فئة الثغرات Dirty Frag - ثغرة منفصلة، نفس السطح، تصحيح خاص بها.
توجد الثغرة في النظام الفرعي XFRM الخاص بـ ESP-in-TCP في لينكس. عندما يتم تثبيت TCP_ULP espintcp على مقبس بعد أن تم بالفعل نقل البيانات عبر splice() من ملف إلى قائمة انتظار استقبال TCP، يعامل النواة البيانات المُصطفة كسجل نص مشفر ESP ويفك تشفيرها في مكانها. مصدر تلك البيانات هو صفحة من ذاكرة التخزين المؤقت للصفحات. يقوم فك التشفير بإجراء XOR على تدفق مفاتيح AES-GCM مباشرة داخلها.
النتيجة هي كتابة مُتحكَّم بها لبايت واحد في ذاكرة التخزين المؤقت للصفحات لأي ملف قابل للقراءة.
جدول تدفق المفاتيح
كتلة العداد AES-GCM (RFC 4106) في الموضع 2 هي [salt(4) || IV(8) || 0x00000002]. تشفيرها تحت مفتاح الجلسة يعطي كتلة تدفق مفاتيح بطول 16 بايت. البايت 0 من تلك الكتلة هو ما يتم إجراء XOR عليه مع البايت الهدف. بتغيير البتات الـ 32 السفلية من nonce الخاص بـ IV، يمكن الوصول إلى جميع القيم الـ 256 الممكنة لبايت تدفق المفاتيح خلال أول 65536 nonce. يبني الاستغلال جدول البحث هذا مرة واحدة عند بدء التشغيل عبر AF_ALG AES-ECB.
حلقة قلب البايت
لكل بايت من الحمولة:
needed_keystream = current XOR desired.TCP_ULP حتى تُصطف البيانات).current XOR keystream = current XOR (current XOR desired) = desired.SA واحدة. 192 مشغل كحد أقصى. حتمي.
go build -o fragnesia-go .
./fragnesia-go
عند النجاح يفتح غلاف جذر عبر PTY جديدة. الملف الثنائي على القرص يبقى دون تغيير - فقط ذاكرة التخزين المؤقت للصفحات.
echo 1 | tee /proc/sys/vm/drop_caches
esp6 (وضع النقل، IPv6 حلقة محلية)جميع النوى قبل التصحيح: https://lists.openwall.net/netdev/2026/05/13/79
نفس النطاق مثل dirtyfrag.
نفس التخفيف الخاص بـ dirtyfrag:
rmmod esp4 esp6
printf 'install esp4 /bin/false\ninstall esp6 /bin/false\n' \
> /etc/modprobe.d/fragnesia.conf
| dirtyfrag-go | fragnesia-go |
|---|
| CVEs | CVE-2026-43284 / CVE-2026-43500 | CVE-2026-46300 |
| النقل | ESP-in-UDP + RxRPC | ESP-in-TCP (ULP) |
| دقة الكتابة | 4 بايت لكل مشغل | 1 بايت لكل مشغل |
| XFRM SAs | 48 | 1 |
| التشفير | HMAC-SHA256 + CBC-AES | AES-128-GCM |
| عائلة IP | IPv4 | IPv6 |