Sammy Azdoufal csak egy PS5 kontrollerrel akart takarítani, de helyette egy globális botnetet talált a DJI backendjében. Így omlik össze az IoT biztonság egy hiányzó jogosultság-ellenőrzés miatt.
Az okosotthon-ipar (IoT) ismét bebizonyította, hogy a ‘smart’ jelző gyakran csak annyit tesz: ‘távolról is sebezhető’. A történet főszereplője Sammy Azdoufal, egy francia szoftvermérnök, aki nem akart mást, mint egy kis kényelmi funkciót: PlayStation 5 kontrollerrel irányítani a DJI Romo típusú robotporszívóját. Amit viszont talált, az a modern szoftverarchitektúrák egyik leggyakoribb és legveszélyesebb rákfenéje: egy masszív BOLA (Broken Object Level Authorization) sérülékenység.
A technikai mélység: MQTT és a hitelesítési káosz
A modern robotporszívók nem csak úgy ‘vannak’ a hálózaton; folyamatosan kommunikálnak a gyártó felhőalapú backendjével. A DJI Romo esetében ez a kommunikáció az MQTT (Message Queuing Telemetry Transport) protokollon alapul, ami egy pehelykönnyű, publish-subscribe modellű üzenetküldő protokoll, ideális alacsony sávszélességű IoT eszközökhöz.
Azdoufal a forgalom elemzése során (melyhez az Anthropic-féle Claude Code CLI eszközt is igénybe vette a protokoll visszafejtéséhez) rájött, hogy a porszívó és a szerver közötti handshake során használt tokenek nincsenek megfelelően izolálva. Amikor lekérte a saját eszközéhez tartozó privát tokent, a backend nem ellenőrizte, hogy a kérés indítója valóban csak a saját erőforrásaihoz férhet-e hozzá.
Egy egyszerű paraméter-manipulációval (IDOR - Insecure Direct Object Reference) hirtelen nem csak a saját porszívója, hanem további 7000 eszköz adatai ömlöttek be hozzá.
Mit látott a ‘hacker’?
Ez nem csak egy elméleti hozzáférés volt. A mérnök teljes kontrollt kapott a következő erőforrások felett:
| Adattípus | Hozzáférés szintje | Kockázati besorolás |
|---|---|---|
| Kamerakép | Élő stream (néhány eszköznél) | Kritikus |
| Mikrofon | Valós idejű lehallgatás | Kritikus |
| Lidar Térképek | Az ingatlan pontos alaprajza | Magas |
| IP-cím / Lokáció | Hálózati adatok és fizikai helyzet | Magas |
| Telemetria | Akku állapot, üzemidő, hibaüzenetek | Alacsony |
“Pár sornyi kód után ott álltam egy kis hadseregnyi porszívó felett. Láthattam a lakások alaprajzát, és elméletileg bárki otthonába benézhettem volna a kamerákon keresztül” – nyilatkozta Azdoufal.
A ‘Marketing Bullshit’ vs. Valóság
A DJI, amely drónjaival már bizonyított a piacon, a Romo szériát prémium termékként (1200+ euró) pozicionálja. A hivatalos közleményük szerint “szigorú adatvédelmi normákat” követnek és “többszintű biztonsági rendszert” használnak. Ehhez képest a valóság az, hogy a backendjükön egy olyan alapvető validáció hiányzott, amit egy junior webfejlesztőnek is tudnia kellene: sose bízz a kliens által küldött ID-ban.
Az, hogy az adatok egy része (egyes források szerint) plain text közeli állapotban vagy gyenge titkosítással utazott, csak hab a tortán. Ha egy mérnök egy PS5 kontrollerrel és egy AI-asszisztenssel képes ‘véletlenül’ feltörni egy globális flottát, akkor ott a biztonsági architektúra alapjaiban hibás.
Patch log és konklúzió
A DJI szerencséjére Azdoufal etikus módon járt el. Miután a gyártó elsőre nem reagált érdemben, a The Verge bevonásával sikerült nyomást gyakorolni a cégre. A DJI végül február elején két OTA (Over-The-Air) frissítéssel foltozta be a rést. A javítás lényege:
1. Szigorúbb token-validáció: A backend most már ellenőrzi a kérést indító felhasználó és az eszköz közötti kapcsolatot.
2. PIN-kódos hitelesítés: Bevezettek egy extra réteget a kritikus funkciók (kamera, távvezérlés) eléréséhez.
Mérnöki vélemény: Ha olyan eszközt veszel, aminek a működéséhez elengedhetetlen a gyártó felhője, akkor nem te birtokolod az eszközt, hanem a gyártó – és bárki, aki megtalálja a hátsó kaput. Amíg nincs ‘Local-only’ mód és nyílt forráskódú firmware (mint pl. a Valetudo a Xiaomi porszívókhoz), addig a magánszférád egyetlen elrontott if feltételen múlik a DJI backendjében.
Ha van ilyen porszívód, az első dolgod legyen a firmware frissítése, a második pedig – ahogy Azdoufal felesége tette – a kamera letakarása egy darab szigetelőszalaggal. Mert a kód hibázhat, de a fizikai neponttranszparencia nem.