
يوفر تصحيح نواة مُجمّع مسبقًا لثغرة CVE-2026-31431 (Copy Fail) على أجهزة RK35xx SBC التي تعمل بنظام Ubuntu 24.04، مع تعليمات التثبيت وشفافية البناء.
تصحيح RK35xx CopyFail: تحديث CVE-2026-31431 لـ Ubuntu 24.04 الخاص بـ Joshua Riek

تصحيح نواة مُجمّع مسبقًا مقدّم من المجتمع لـ جميع أجهزة الكمبيوتر أحادية اللوحة RK35xx (Rock 5, Orange Pi 5, NanoPC, وغيرها) التي تعمل بنظام Ubuntu 24.04 الخاص بـ Joshua Riek (النواة 6.1.0-1025-rockchip).
في 29 أبريل 2026، تم الكشف عن ثغرة تصعيد صلاحيات محلية (LPE) عالية الخطورة تُعرف باسم "فشل النسخ" (CVE-2026-31431).
يقع الخلل في النظام الفرعي للتشفير في النواة (crypto/algif_aead.c). من خلال ربط عملية مقبس AF_ALG باستدعاء نظام splice()، يمكن لمستخدم محلي غير مميز فرض كتابة بدون نسخ (zero-copy) مباشرة إلى ذاكرة التخزين المؤقت للصفحات في النواة، مما يسمح له بالكتابة فوق ملفات setuid-root الثنائية في الذاكرة والحصول على وصول جذر فوري.
بسبب تكوين النواة (CONFIG_CRYPTO_USER_API_AEAD=y)، فإن استراتيجيات التخفيف القياسية عبر modprobe لا تعمل على هذا الإصدار.
يلزم تصحيح على مستوى الكود المصدري للنواة.
مع عدم نشاط مستودع Joshua Riek الرئيسي حاليًا، يبقى المستخدمون عالقين على نواة ضعيفة.
بصفتنا من الداعمين القدامى لمجتمع أجهزة SBC والحوسبة الطرفية الذكية (edge AI)، قامت Qengineering بنقل التصحيح الرئيسي من Linux يدويًا (الالتزام a664bf3d603d)، وأعادت تجميع النواة من علامة المصدر الدقيقة Ubuntu-rockchip-6.1.0-1025.25، ووضعته هنا للنشر الفوري.
جميع ميزات تسريع الأجهزة الأصلية NPU وVPU والشبكات محفوظة بنسبة 100%.
تستخدم صور Ubuntu الخاصة بـ Joshua Riek بيئة U-Boot مخصصة بدقة تتطلب صور نواة خام (غير مضغوطة) وتعيينًا محددًا لأشجار الأجهزة. لقد تعاملنا مع التجميع؛ كل ما عليك فعله هو تشغيل الأوامر التالية لتثبيت التصحيح.
1. تنزيل الملفات المطلوبة: قم بتنزيل هذه الملفات الثلاثة إلى لوحتك:
linux-image-6.1.75-copyfail-patched_*.deblinux-headers-6.1.75-copyfail-patched_*.debImage (النواة الخام غير المضغوطة)git clone https://github.com/Qengineering/RK35xx-CopyFail-Hotfix.git
2. افتح طرفية في المجلد الذي يحتوي على تنزيلاتك وشغّل كتلة الأوامر هذه:
cd RK35xx-CopyFail-Hotfix
# 1. تثبيت حزم Debian (يقوم هذا بتكوين الوحدات و initramfs)
sudo dpkg -i linux-image-6.1.75-copyfail-patched_*.deb
sudo dpkg -i linux-headers-6.1.75-copyfail-patched_*.deb
# 2. استبدال النواة المضغوطة بالصورة الخام غير المضغوطة المطلوبة من U-Boot
sudo cp Image /boot/vmlinuz-6.1.75-copyfail-patched
# 3. نقل أشجار الأجهزة الموجودة لديك
sudo mkdir -p /lib/firmware/6.1.75-copyfail-patched/
sudo cp -r /lib/firmware/6.1.0-1025-rockchip/device-tree /lib/firmware/6.1.75-copyfail-patched/
# 4. إعادة توليد تكوين محمل الإقلاع
sudo u-boot-update
# 5. إعادة تشغيل نظامك
sudo reboot
للمستخدمين الذين يفضلون عدم تثبيت ملفات ثنائية مُجمّعة مسبقًا، يمكنك إعادة إنتاج هذا البناء بالضبط على لوحتك الخاصة.
بسبب تعديلات Rockchip SDK، لا يُطبَّق التصحيح الرئيسي العلوي (upstream) بشكل نظيف عبر git. يتطلب تعديلًا يدويًا للكود.
# 1. استنساخ المستودع والتحقق من العلامة المحددة
git clone [https://github.com/Joshua-Riek/linux-rockchip.git](https://github.com/Joshua-Riek/linux-rockchip.git)
cd linux-rockchip
git checkout Ubuntu-rockchip-6.1.0-1025.25
git switch -c copyfail-patch-build
# 2. تطبيق التصحيح على الثغرة يدويًا
wget "[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/patch/?id=a664bf3d603dc3bdcf9ae47cc21e0daec706d7a5](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/patch/?id=a664bf3d603dc3bdcf9ae47cc21e0daec706d7a5)" -O copy-fail.patch
# افتح copy-fail.patch، ونفّذ تعديلات الكود بعناية.
# 3. نسخ تكوين الأجهزة الحالي لديك
cp /boot/config-6.1.0-1025-rockchip .config
make olddefconfig
# 4. تجميع الحزم (يستغرق حوالي 45-60 دقيقة على Rock 5C)
make -j$(nproc) bindeb-pkg LOCALVERSION=-copyfail-patched
# 5. اتبع تعليمات التثبيت أعلاه، باستخدام ملفات .deb المُجمّعة حديثًا
# والصورة غير المضغوطة Image الموجودة في arch/arm64/boot/Image.