🔍 Contexte

Le 5 juin 2026, Bishop Fox (chercheur Jon Williams) publie une analyse technique approfondie d’une chaîne d’exploitation affectant UniFi OS Server d’Ubiquiti, couverte par le Security Advisory Bulletin 064 (SAB-064) publié le 21 mai 2026. L’analyse porte sur les versions 5.0.6 et inférieures (unifi-core ≤ 5.0.126), validée sur une cible live.

🧩 Chaîne d’exploitation (3 parties)

Partie 1 — Contournement de l’authentification (CVE-2026-34908 / CVE-2026-34909, CVSS 10.0)

  • Le proxy Nginx utilise $request_uri (brut, encodé) pour la vérification d’authentification via auth_request, mais $uri (normalisé, décodé) pour le routage vers les backends.
  • Une requête dont l’URI brut commence par /api/auth/validate-sso/ (route publique exemptée) mais dont la forme normalisée résout vers /proxy/<service>/ (route authentifiée) contourne le contrôle d’accès.
  • Des séquences de path traversal encodées (..%2f, ..%2e, %2e%2e) permettent cette divergence.

Partie 2 — Injection de commande (CVE-2026-34910, CVSS 10.0 / CVE-2026-33000, CVSS 9.1)

  • La route package-update dans le backend Go ulp-go/identity-update construit une commande shell via fmt.Sprintf : sudo /usr/bin/uos runnable latest-versions %v%v est le nom de paquet fourni par l’attaquant, sans validation.
  • La chaîne est exécutée via sh -c, permettant l’interprétation de métacaractères shell.
  • CVE-2026-34910 = accès non authentifié via le bypass ; CVE-2026-33000 = même sink avec token valide.

Partie 3 — Élévation de privilèges vers root

  • L’injection s’exécute sous le compte de service ucs-update, qui dispose d’entrées sudoers sans mot de passe pour /usr/bin/dpkg, /bin/chmod, /bin/systemctl, /usr/bin/uos.
  • Installation d’un paquet .deb malveillant via sudo dpkg dont le script post-install s’exécute en root → shell root confirmé.

💥 Impact post-exploitation

  • Lecture de tous les secrets : clé de signature JWT (jwt.yaml), clés TLS privées, tokens cloud, base PostgreSQL (comptes, sessions, SSO), secrets RADIUS/WiFi/VPN/WireGuard, données NFC et biométriques (UniFi Access), hashes /etc/shadow.
  • Sessions forgées survivant au patch : la clé JWT permet de forger des tokens HS256 valides (role: owner) fonctionnant même sur une version 5.0.8 patchée tant que la clé n’est pas rotée.
  • Contrôle physique : déverrouillage de portes, désactivation de caméras, suppression d’enregistrements (UniFi Access / UniFi Protect).
  • Pivot multi-sites : tokens cloud permettant d’atteindre d’autres sites via le compte Ubiquiti cloud.
  • Impact disponibilité : effacement de configurations, reset usine, firmware brickant.

🛠️ Correctifs (UniFi OS Server 5.0.8)

  1. Guard Nginx : comparaison nom de service brut vs normalisé, rejet HTTP 400 en cas de divergence.
  2. Validation Go : allowlist de noms de paquets + réécriture du sink sans sh -c (tableau d’arguments).
  3. Durcissement sudoers : suppression de /usr/bin/dpkg et /bin/chmod de la liste passwordless de ucs-update (partiel — un autre compte conserve des droits root).

🔎 Détection

  • Outil de détection safe publié : https://github.com/BishopFox/CVE-2026-34908-check
  • Signature : URI contenant /api/auth/validate-sso/ avec séquences de traversal encodées.
  • Surveillance de la route .../ucs/update/latest_package avec métacaractères shell.
  • Processus enfants anormaux sous ucs-update (sudo dpkg, chmod, systemctl).

📋 Type d’article

Analyse technique et rapport de vulnérabilité publié par Bishop Fox, visant à documenter la chaîne d’exploitation, fournir un outil de détection et informer les défenseurs sur l’étendue réelle du risque post-exploitation.

🧠 TTPs et IOCs détectés

TTP

  • T1190 — Exploit Public-Facing Application (Initial Access)
  • T1059.004 — Command and Scripting Interpreter: Unix Shell (Execution)
  • T1068 — Exploitation for Privilege Escalation (Privilege Escalation)
  • T1552.001 — Unsecured Credentials: Credentials In Files (Credential Access)
  • T1553 — Subvert Trust Controls (Defense Evasion)
  • T1078 — Valid Accounts (Persistence)
  • T1505.003 — Server Software Component: Web Shell (Persistence)
  • T1083 — File and Directory Discovery (Discovery)
  • T1003 — OS Credential Dumping (Credential Access)
  • T1210 — Exploitation of Remote Services (Lateral Movement)

IOC

  • CVEs : CVE-2026-34908NVD · CIRCL
  • CVEs : CVE-2026-34909NVD · CIRCL
  • CVEs : CVE-2026-34910NVD · CIRCL
  • CVEs : CVE-2026-33000NVD · CIRCL
  • CVEs : CVE-2026-34911NVD · CIRCL
  • Chemins : /data/unifi-core/config/jwt.yaml
  • Chemins : /etc/shadow

🟡 Indice de vérification factuelle : 50/100 (moyenne)

  • ⬜ bishopfox.com — source non référencée (0pts)
  • ✅ 29125 chars — texte complet (fulltext extrait) (15pts)
  • ✅ 7 IOCs (IPs/domaines/CVEs) (10pts)
  • ⬜ pas d’IOC vérifié (0pts)
  • ✅ 10 TTPs MITRE identifiées (15pts)
  • ✅ date extraite du HTML source (10pts)
  • ⬜ aucun acteur de menace nommé (0pts)
  • ⬜ 0/5 CVE(s) confirmée(s) (0pts)

🔗 Source originale : https://bishopfox.com/blog/popping-root-on-unifi-os-server-unauthenticated-rce-chain-detection-analysis