
بحث سلسلة استغلال يستهدف CVE-2026-43499 على Samsung Galaxy S21
مشروع KernelSU عامل ونشط لهذا الجهاز: kurtulusakyuz/dfroot-s21 — ابدأ من هناك. هذا المستودع يحتفظ بأبحاث IonStack فقط.
حمولة IonStack الخاصة بالجهاز لجهاز Samsung Galaxy S21 (o1s) على
البرنامج الثابت G991BXXSJHZC2. الحالة: البحث مُغلق — حجب خدمة
حتمي فقط؛ مسار الكتابة في النواة مُثبت استحالته على هذا البناء.
الأدلة الكاملة في RESEARCH.md.
| الحقل | القيمة |
|---|---|
| الطراز | SM-G991B |
| الجهاز | o1s |
| البرنامج الثابت | G991BXXSJHZC2 |
| Android | 15 / API 35 (AP3A.240905.015.A2، البصمة samsung/o1sxeea/o1s) |
| حجم الصفحة | 4096 |
| النواة | 5.4.242-30958140-abG991BXXSJHZC2 |
| SoC | Exynos 2100 |
| التخفيفات | CFI+PAC+PAN/UAO، KDP_CRED، SELinux enforcing، لا userfaultfd |
استنادًا إلى تطبيق IonStack CVE-2026-43499 المنشور في
NebuSec/CyberMeowfia (المنبع b850d3bddc74c3328d5fbcc0568d21962b55d949)
و BuSung-dev/CVE-2026-43499-S25U، مع الشكر لـ F-19-F/IonStackQuest3.
تم الاحتفاظ بترخيص Apache License 2.0 الأصلي في LICENSE (انظر NOTICE).
برنامج الكتابة GhostLock لهذا الجهاز منتهٍ ومُغلق، وليس متوقفًا مؤقتًا. ما تم إثباته، بالترتيب:
remove_waiter() يمسح
current->pi_blocked_on بدلًا من waiter->task->pi_blocked_on،
لذا فإن تراجع FUTEX_CMP_REQUEUE_PI يترك مؤشرًا معلقًا إلى
rt_waiter على المكدس. الإصلاح المنبعي 3bfdc63 غائب من 5.4.242.sched_setattr للمستهلك يعيد إنتاج Oops مطابق للجهاز
(rt_mutex_adjust_prio_chain+0x108 → _raw_spin_trylock+0x1c،
خطأ VA 0) سواء في ضيف QEMU بدون KDP أو على الهاتف نفسه
(lastkmsg 118/119). الفتحة المعلقة مُعيَّنة بالكامل
(قمة المكدس E-0x328، دورة الحياة مُوصَّفة عبر QEMU+GDB).lock (+0x38) لا يخضع لسيطرة المهاجم أبدًا
(15/15 تفريغًا). المنافذ المستقلة (ASUS i005، مسار sigreturn في AQUOS)
اصطدمت بنفس الجدار. هندسة، وليست احتمالًا.كما تم إغلاق مسارات LPE الأخرى لنواة 2026 على هذا البناء
بإعدادات البرنامج الثابت (USER_NS، RDS، CRYPTO_USER_API_AEAD كلها غير مضبوطة؛
MFC double-free غير قابل للوصول مع MFC_USE_DMABUF_CONTAINER=n؛
AF_ALG/eBPF مُقيَّدة للـ shell). مخرجات ما بعد الكتابة
(KernelSU .ko + ksud المبنيان لهذا البرنامج الثابت بالتحديد) مُجهَّزة
بشكل منفصل؛ ترويسات src/kernelsnitch/ في هذه الشجرة
تبقى مُجهَّزة لكن غير مبنية (لا يوجد مستهلك بدون كتابة).
Makefile build (NDK r27+, ANDROID_NDK_HOME)
src/ exploit source (o1s profile only)
src/targets/o1s-G991BXXSJHZC2/ target.h + p0_fingerprint.h
src/kernelsnitch/ mm_struct leak (futex hash collision, staged)
tools/ p0 fingerprint helper
RESEARCH.md research notes (geometry, verdicts)
export ANDROID_NDK_HOME=/path/to/android-ndk
make clean all
# SLIDE_WRITER_SEL=1|2|3 selects mcast/sigreturn(default)/xattr writers.
# Unset selects the experimental pselect writer (see RESEARCH.md).
المخرجات (build/o1s-G991BXXSJHZC2/):
cve-2026-43499 (حمولة LD_PRELOAD)، cve-2026-43499-app.so (حمولة التطبيق)،
cve-2026-43499-root (مساعد root).
adb push build/o1s-G991BXXSJHZC2/cve-2026-43499 /data/local/tmp/cve-2026-43499
adb push build/o1s-G991BXXSJHZC2/cve-2026-43499-root /data/local/tmp/cve-2026-43499-root
adb shell chmod 755 /data/local/tmp/cve-2026-43499 /data/local/tmp/cve-2026-43499-root
adb shell "LD_PRELOAD=/data/local/tmp/cve-2026-43499 sh"
# on success:
adb shell "/data/local/tmp/cve-2026-43499-root -c 'id; getenforce'"
إدارة التوقعات: على هذا البناء تعني "النجاح" مشي المُحفِّز ومخرجات الأوراكل الخاصة به — مشي NULL-lock يعيد تشغيل الجهاز بدلًا من منح root (انظر "الحالة النهائية" أعلاه). الـ root، إن تحقق يومًا عبر بدائية كتابة مستقبلية، يعيش فقط حتى إعادة التشغيل؛ لا شيء يُثبَّت على القرص.
/data/local/tmp عند إعادة التشغيل — أعد دفع
الملفات التنفيذية بعد كل إقلاع.