Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
dirtyfrag-arm64 — نسخة arm64/aarch64 من V4bel/dirtyfrag (CVE-2026-43284). يدعم ESP فقط — مسار rxrpc يُحدث kernel oops على arm64 بسبب flush_dcache_page | Kitploit
أدوات/GitHubGitHub/linnemanlabs/dirtyfrag-arm64
تصعيد الامتيازاتتحليل الثغرات الأمنيةالاستغلالاختبار الاختراقالأوراق والأبحاثالتعلم والتعليمالفريق الأحمراستغلال الملفات الثنائية
GitHublinnemanlabs/dirtyfrag-arm64

dirtyfrag-arm64

نسخة arm64/aarch64 من V4bel/dirtyfrag (CVE-2026-43284). يدعم ESP فقط — مسار rxrpc يُحدث kernel oops على arm64 بسبب flush_dcache_page

عرض المستودع
288منذ 3 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
الموقع الإلكتروني

dirtyfrag-arm64

منفذ arm64/aarch64 من V4bel/dirtyfrag (CVE-2026-43284, CVE-2026-43500).

تم اختباره على Ubuntu 24.04.4 LTS مع linux-aws 6.17.0-1013-aws على AWS Graviton (الأحدث المتاح وقت كتابة هذا).

شرح كامل مع تحليل تجاوز AppArmor، وملاحظات التقوية، وملاحظات الكشف: linnemanlabs.com/posts/porting-dirtyfrag-arm64

⚠️ قيود AppArmor userns في Ubuntu لا تمنع هذا الاستغلال بشكل موثوق

لدى Ubuntu اثنان من sysctls الخاصة بـ AppArmor:

  • kernel.apparmor_restrict_unprivileged_userns
  • kernel.apparmor_restrict_unprivileged_unconfined

يمكن تجاوز كلاهما عن طريق تسلسل aa-exec مع نفسه باستخدام ملفات التعريف الموجودة في صور Ubuntu السحابية وصور المثبّت القياسية التي اختبرتها:

root@kitploit:~
aa-exec -p crun -- aa-exec -p crun -- ./dirtyfrag_arm64 --force-esp

لمزيد من المعلومات، راجع Two Hops and a Shell للتحليل الكامل لتجاوز Ubuntu AppArmor.

ما المختلف على arm64

يستخدم PoC الأصلي x86_64 مسارين للاستغلال: مسار ESP/xfrm الذي يفسد /usr/bin/su، ومسار احتياطي rxrpc/rxkad يفسد /etc/passwd. على arm64، يتسبب مسار rxrpc في انهيار النواة (kernel oops) ولا يمكن استخدامه. مسار ESP يعمل بشكل نظيف.

انهيار rxrpc: flush_dcache_page

على x86_64، تكون flush_dcache_page() بلا عملية (no-op). تمتلك x86 مخابئ بيانات/تعليمات متماسكة عبر العتاد. على arm64، تقوم بصيانة حقيقية للـ dcache وتفك مرجع البيانات الوصفية struct page*. عندما يستدعي مسار التشفير rxrpc (rxkad_secure_packet -> crypto_pcbc_encrypt -> skcipher_walk_done) الدالة flush_dcache_page على صفحة تم التلاعب بمرجعها عبر سلسلة splice/vmsplice، يتجاوزها x86_64 بصمت بينما يصطدم arm64 بخطأ ترجمة (translation fault) وينهار (oops):

root@kitploit:~
pc : flush_dcache_page+0x18/0x58
lr : skcipher_walk_done+0xbc/0x260
     crypto_pcbc_encrypt+0xe8/0x1c8 [pcbc]
     crypto_skcipher_encrypt+0x48/0xb8
     rxkad_secure_packet+0x108/0x270 [rxrpc]
     rxrpc_send_data+0x264/0x550 [rxrpc]

على أنظمة arm64 التي اختبرتها، أدى رفض كتابة uid_map إلى إزالة مسار ESP العامل. قد يظل الـ namespace يُنشأ، لكن العملية لا تستطيع تعيين نفسها إلى root داخله أو الحصول على capabilities الخاصة بالـ namespace اللازمة لإعداد XFRM. لم يوفر مسار rxrpc الاحتياطي مسارًا عمليًا لتصعيد الامتيازات بدون namespace على arm64، بل تسبب في انهيار النواة oops بدلاً من ذلك.

التشغيل عبر ESP فقط

على arm64، كان مسار ESP فقط هو الوحيد القابل للتطبيق في اختباري. يتطلب هذا المسار إنشاء user namespace و network namespace ثم تعيين المستخدم المستدعي بنجاح إلى root داخل ذلك namespace. يمكن أن تكسر تقوية التوزيعة هذا المسار بطرق مختلفة: يمكن لـ Ubuntu رفض كتابة uid_map من خلال قيود AppArmor userns؛ لم أختبر على Debian/RHEL.

AppArmor: محظور افتراضيًا، قابل للتجاوز على Ubuntu

على صورة Ubuntu 24.04 AWS التي اختبرتها، منع apparmor_restrict_unprivileged_userns=1 الاستغلال المباشر من قشرة SSH العادية الخاصة بي عن طريق رفض كتابة uid_map داخل الـ namespace الجديد.

ومع ذلك، مع القيمة الافتراضية apparmor_restrict_unprivileged_unconfined=0، يمكن لمستخدم غير مقيد (unconfined) الانتقال إلى ملف تعريف موجود بوضع complain (مثل runc) عبر aa-exec وتجاوز القيد:

root@kitploit:~
aa-exec -p runc -- ./dirtyfrag_arm64 --force-esp

يؤدي تعيين kernel.apparmor_restrict_unprivileged_unconfined=1 إلى حظر هذا المسار، ويُوصى به حاليًا على نطاق واسع كحل لحظر جميع المسارات. ومع ذلك، فإن إضافة aa-exec آخر يتجاوز ذلك أيضًا:

root@kitploit:~
aa-exec -p crun -- aa-exec -p crun -- ./dirtyfrag_arm64 --force-esp

راجع المشاركات المرتبطة سابقًا للحصول على التفاصيل.

حمولة خاصة بالبنية المعمارية

يستبدل الاستغلال /usr/bin/su في ذاكرة التخزين المؤقت للصفحات (page cache) بملف ELF ثابت ضئيل. يضمّن PoC الأصلي ملف ELF لـ x86_64 مع شِل كود (shellcode) لـ x86_64. يستبدل هذا المنفذ ذلك بملف ELF مكافئ لـ aarch64:

  • ELF e_machine: EM_AARCH64 (183) بدلاً من EM_X86_64 (62)
  • شِل كود: تعليمات aarch64 تستخدم svc #0 بدلاً من syscall
  • أرقام استدعاءات النظام: setgid=144, setuid=146, setgroups=159, execve=221 (مقابل 106, 105, 116, 59 على x86_64)
  • عرض تعليمة ثابت 4 بايت (مقابل الطول المتغير في x86_64)، مما ينتج حمولة أكبر قليلاً (~216 بايت مقابل 192)

البناء والتشغيل

root@kitploit:~
# Clone
git clone https://github.com/linnemanlabs/dirtyfrag-arm64.git

# Build
cd dirtyfrag-arm64
gcc -O0 -Wall -o dirtyfrag_arm64 dirtyfrag_arm64.c -lutil

# Run
./dirtyfrag_arm64 --force-esp

تتخطى علامة --force-esp مسار rxrpc بالكامل لضمان تجنب انهيار نواة arm64.

البيئة المختبرة

اعتبارًا من 2026-05-09، يأتي أحدث نواة aws متاحة لـ Ubuntu 24.04 (6.17.0-1013-aws، المبنية في 24 أبريل) بدون تصحيحات لكل من Copy Fail (CVE-2026-31431، المُعلن عنها في 29 أبريل) أو Dirty Frag (CVE-2026-43284/43500، المُعلن عنها في 7 مايو).

التخفيف الفوري

قم بحظر الوحدات المعرضة للخطر، وطبّق التقوية المناسبة للنظام حسب توزيعة Linux لديك.

حظر الوحدات المعرضة للخطر

آمن على أي نظام لا يستخدم بنشاط وضع النقل IPsec أو AFS. لمنع تحميل الوحدات، ضع ما يلي في /etc/modprobe.d/dirtyfrag.conf:

root@kitploit:~
install esp4 /bin/false
install esp6 /bin/false
install rxrpc /bin/false

تحديث initramfs

توصي Ubuntu أيضًا بإعادة توليد initramfs بحيث يكون الحظر موجودًا أثناء الإقلاع المبكر:

root@kitploit:~
update-initramfs -u -k all
``

### إزالة أذونات القراءة من ثنائيات SUID

يحجب فئة هجوم ذاكرة التخزين المؤقت للصفحات القائمة على splice ضد أهداف ثنائيات SUID هذه. يحتاج الاستغلال إلى أذونات قراءة للملف الهدف من أجل `splice()`. لا يزال بإمكان المستخدمين تنفيذ الثنائيات.

**لا تنفذ هذا دون اختباره في بيئتك وعبر جميع أدواتك.**

```bash
chmod o-r /usr/bin/su

هذا ليس إصلاحًا، بل تخفيف فقط. هناك العديد من المسارات الأخرى لتصعيد الامتيازات.

تفريغ الوحدات

لتفريغ الوحدات من النظام قيد التشغيل:

root@kitploit:~
rmmod esp4 esp6 ipcomp4 ipcomp6 rxrpc 2>/dev/null

تأكد من تفريغها:

root@kitploit:~
grep -qE '^(esp4|esp6|rxrpc) ' /proc/modules \
  && echo "Affected modules are loaded" \
  || echo "Affected modules are NOT loaded"

مسح ذاكرة التخزين المؤقت للصفحات

يجب أن يؤدي مسح ذاكرة التخزين المؤقت للصفحات إلى إزالة المحتويات الخبيثة والتسبب في قراءة الملفات من القرص مرة أخرى.

root@kitploit:~
echo 3 > /proc/sys/vm/drop_caches

ملاحظة: حصلت على بعض النتائج غير المتسقة مع هذا، لكن كلما حاولت إعادة إنتاج الأمر كلما عمل كما هو متوقع. بالنسبة لهذا PoC، يمكنك التحقق من md5sum على /usr/bin/su، وإذا لم يتطابق، أعد التشغيل.

التنظيف بعد الاختبار

نفّذ خطوة مسح ذاكرة التخزين المؤقت للصفحات، ثم تحقق بعد ذلك باستخدام:

root@kitploit:~
sha256sum /usr/bin/su

# Or from package manager:

dpkg -V util-linux    # Debian/Ubuntu
rpm -V util-linux     # RHEL/Amazon Linux

خطوات استباقية

للحصول على وضعية أكثر استباقية تعالج فئة الثغرات هذه بالكامل (وليس فقط CVEs المحددة)، راجع الشرح الكامل لقيود AppArmor userns، ومنع التحميل المسبق للوحدات، والكشف في وقت التشغيل القائم على Tetragon بالإضافة إلى قواعد YARA.

الاعتمادات

  • Hyunwoo Kim (@v4bel) - بحث الثغرات الأصلي، والإفصاح، و PoC لـ x86_64
  • SiCk - بحث bypass-pwn حول تجاوز Ubuntu AppArmor
  • Keith Linneman / LinnemanLabs - منفذ arm64، تحليل انهيار flush_dcache_page، بحث AppArmor، ملاحظات الكشف

الإخلاء القانوني

هذه الأداة مخصصة للاختبارات الأمنية والبحث المصرح به فقط.

الاستخدام غير المصرح به ضد أنظمة لا تملكها أو ليس لديك إذن صريح لاختبارها غير قانوني وغير أخلاقي.

الترخيص

MIT. انسخه، اسرقه، عدّله، تعلم منه، شاركني تحسيناتك. أو لا تفعل. إنه كود، افعل به ما تشاء.

تنزيل الأداة
الخاصيةالقيمة
المثيلAWS t4g.micro (Graviton2)
نظام التشغيلUbuntu 24.04.4 LTS
النواة6.17.0-1013-aws #13~24.04.1-Ubuntu (مبنية في 2026-04-24)
البنيةaarch64
unprivileged_userns_clone1 (مفعّل)
وحدة esp4متوفرة، قابلة للتحميل
وحدة rxrpcمتوفرة، قابلة للتحميل (لكنها تنهار على arm64)
الإعدادصورة ubuntu 24.04 السحابية القياسية، وحدات النواة الافتراضية