D-Link Network Attached Storage (NAS) ehk võrgumälu seade on arvutivõrku ühendatav kõvakettaga (või -ketastega) seade failide talletuseks ja ühiskasutuseks. Erinevalt tavalisest välisest kõvakettast, mis on liidestatud otse arvutiga, ühendub võrgumälu seade kohtvõrguga, võimaldades mitmel kasutajal või seadmel üheaegselt faile kasutada ja jagada. Võrgumälu seadmed on kasutusel nii kodu- kui ka ärilahendustes.
Turvauuringuid koostav ettevõte VulDB Coordination avastas osadel D-Link võrgumälu seadmetel kriitilise turvanõrkuse (CVE-2024-3273), mis võimaldab pahatahtlikel kasutajatel teha üle võrgu käsusüste, käivitades pahatahtlikke programmikäske ohvri seadmes.
Käesolev turvanõrkus puudutab vaid teatud D-Link seadmeid, mille eluiga on juba läbi ning tootja on nende seadmete tarkvaralise ja riistvaralise toetamise lõpetanud. Mõjutatud on järgmised mudelid:
- DNS-320L Version 1.11, Version 1.03.0904.2013, Version 1.01.0702.2013
- DNS-325 Version 1.01
- DNS-327L Version 1.09, Version 1.00.0409.2013
- DNS-340L Version 1.08
Antud turvanõrkus eeldab ka ühe teise nõrkuse samaaegset ärakasutamist. Nimelt muudab võrgumälu seadme eriti haavatavaks püsiprogrmmeeritud sisselogimissuvandite põhjustatud tagauks. Selleks tagaukseks on turvanõrkus (CVE-2024-3272), kus kasutajal on võimalik autentimisest mööda pääseda kasutades vaikimisi kõigis mõjutatud seadmetes olevat "süsteemikasutajat" messagebus.
Selle Linux süsteemides vaikimisi oleva süsteemi deemon (system daemon) kasutajaga ei saa küll otseselt süsteemi sisse logida, kuid piisab osavalt meisterdatud HTTP päringust kindlasse otspunkti, et juba kahju teha.
Vaja on teada ka rünnatava seadme ip addressi
.
Turvanõrkus peitub võrgumälu seadme /cgi-bin/nas_sharing.cgi
failis HTTP GET päringu töötlemisfunktsioonis. Pahatahtlikul kasutajal on võimalik saata GET päring üle võrgu ohvri seadmesse andes parameetritena kaasa kasutajanimi "messagebus"
ja parool jätta tühjaks
. Käsusüst tuleb siin mängu system
parameetrit kasutades, määrates parameetri väärtuseks soovitud programmikäsu.
Käsk peidetakse base64 kodeeringuga ning lisatakse system parameetri väärtuseks. Hiljem dekodeerides avaldub pahatahtlik käsujupp mis käivitub shell käsuna rünnatavas seadmes.
🗒️ CVSS Baasskoor: 7.3 Kõrge
- AV: N - Nõrkus on ära kasutatav üle võrgu.
- AC: L - Rünnaku keerukus on madal, kuna rünnakuks vajalikud vahendid on lihtsasti kättesaadavad.
- PR: N - Rünnakuks ei ole vaja eraldi privileege.
- UI: N - Kasutaja interaktsioon ei ole vajalik.
- S: U - Puudutab vaid kindlaid mudeleid ja ei laiene üle teistele seadmetele.
- C: L - Konfidentsiaalsuse mõju on madal, kuna rünnak ei paljasta olulist konfidentsiaalset teavet.
- I: L - Terviklikkuse mõju on madal, kuna rünnak ei muuda oluliselt süsteemi andmeid ega konfiguratsiooni.
- A: L - käideldavuse mõju on madal, kuna rünnak ei põhjusta teenuste katkemist.
Turvanõrkuse CVE-2024-3273 põhjuseks on CWE-77
ehk käsusüst. See tähendab, et ründaja saab sisestada pahatahtlikke käske, mida rünnatav süsteem seejärel täidab, kuna sisestatud käsku ei valideerita.
Kuna seadmete lähtekood pole avalik siis arvatavasti tuleks selle probleemi vältimiseks lisada päringutega tegelevasse meetodisse valideerimisfunktsioon. Näiteks võiks olla list lubatud süsteemi käskudest, et vältida suvalise käsu jooksutamist.
Turvanõrkus rikub peamiselt järgmisi turvaeesmärke:
- Konfidentsiaalsus: Ründaja võib saada juurdepääsu konfidentsiaalsetele andmetele, nt isiklikud andmed või ärisaladused
- Privaatsus: Saades ligipääsu konfidentsiaalsetele andmetele võib see rikkuda kasutaja privaatsust.
- Terviklus: Ründajal on võimalik muuta andmeid ja süsteemi seadeid
- Usaldusväärsus: Haavatavate D-Link seadmete kasutajad võivad kaotada usalduse tootja vastu.
Antud turvanõrkus puudutab vaid seadmeid, mille eluiga on juba läbi, seega soovitab tootja seadmed asendada ning haavatavaid seadmeid mitte kasutada.
Kuna neid seadmeid enam ei toetata, siis ei saa need enam ka tarkvaralisi turvauuendusi, mis tähendab et turvaauku ära ei parandata
. Seega ainuke lahendus on turvaauguga toodete kasutamine lõpetada.
Kui haavatava seadme asendamine pole võimalik, tuleks seade kindlasti eemaldada avalikust võrgust ning äärmisel juhul olla kasutuses vaid lokaalses kohtvõrgus olevatele seadmetele (tuleks paigaldada tulemüür väliste päringute blokkeerimiseks).
Esialgse raporti kohaselt oli turvaaugu avastamise hetkel võrgus üle 92 000 seadme
. Hilisema uuringu kohaselt võis see number olla aga oluliselt väiksem, jäädes 5500 seadme kanti. Sellest hoolimata on täna veel tõenäoliselt paljud vanad seadmed veel endiselt võrku ühendatud ja seeläbi haavatavad.
Avaldatud on mitmeid rünnaku kontseptsiooni tõendusi (PoC) ning tõenäoliselt kasutatakse turvaauku endiselt laialdaselt ära. Praeguseks hetkeks on avastatud vähemalt 146 juhtumit
, kus on proovitud ära kasutada CVE-2024-3273 turvanõrkust.
Jupp näidiskoodist:
def execute_command(ip, command: str = "id", verbose: bool = True) -> str:
command_hex = ''.join(f'\\\\x{ord(c):02x}' for c in command)
command_final = f"echo -e {command_hex}|sh".replace(' ', '\t')
base64_cmd: str = base64.b64encode(command_final.encode()).decode()
url: str = f"{ip}/cgi-bin/nas_sharing.cgi"
params: dict = {
"user": "messagebus",
"passwd": "",
"cmd": "15",
"system": base64_cmd,
}