A biztonsági megoldások folyamatos fejlesztése arra kényszerítette a támadókat, hogy alternatív módszereket keressenek a rendszerek megfertőzésére. Egyre gyakoribbak a VPN eszközökön és más internetre csatlakozó rendszereken keresztül végrehajtott firmware és zsarolóprogram támadások.
A közelmúltban olyan sebezhetőségeket fedezett fel a Microsoft a NETGEAR DGN-2200v1 routerekben, amelyek veszélyeztethetik a szervezetek hálózatbiztonságát, úgy, hogy közben hozzáférést biztosíthatnak a támadók számára. A Microsoft munkatársai egy furcsa eseményre lettek figyelmesek: egy nem informatikai osztály tulajdonában lévő eszköz megpróbált hozzáférni egy NETGEAR DGN-2200v1 router admin felületéhez.
A kutatás során a router firmware-je kicsomagolásra került, és három kihasználható sebezhetősére derült fény. A Microsoft a megszerzett információkat és eredményeket megosztotta a NETGEAR-rel, így – mindkét cég szakemberei szoros együttműködésének eredményeképpen – sikerült kijavítania a kritikus biztonsági hibákat.
A firmware egy egyszerű .zip fájl, amely kiadási megjegyzéseket (.html) és magát a firmware-t (.chk fájl) tartalmazta. A binwalk futtatása a .chk fájlon a fájlrendszer (squash-fs) kicsomagolását eredményezte.
Maga a fájlrendszer egy szabványos Linux root fájlrendszer, néhány kisebb kiegészítéssel. A kutatás szempontjából a következők a fontosak:
- /www – html oldalakat és .gif képeket tartalmaz
- /usr/sbin – a NETGEAR különböző egyéni bináris programjait tartalmazza, beleértve a HTTPd-t, az FTPC-t és másokat
Mivel a rendellenes kommunikáció a HTTPd által kiszolgált szabványos portot használta, a HTTPd-re összpontosítottak a vizsgálat során. Maga a HTTPd egy 32 bites big-endian MIPS ELF. A teljes szerveroldali logika (CGI) HTTPd-re lett fordítva.
A szakemberek statikus elemzést végeztek a HTTPd bináris programon, valamint dinamikus elemzést a QEMU-val, amely egy nyílt forráskódú emulátor.
Annak vizsgálata során, hogy a HTTPd hogyan rendelkezik, hogy mely oldalakat kell hitelesítés nélkül kiszolgálni, a következő kódot találták:
Ez az első oldalkezelő kód a HTTPd-n belül, és automatikusan jóváhagy bizonyos oldalakat (form.css, func.js). Ami feltűnő itt, hogy a NETGEAR az strstr használatával ellenőrzi, hogy az oldal tartalmaz-e “.jpg”, “.gif” vagy “ess_” substringeket. Így bármilyen oldal elérhető, beleértve a hitelesítést igénylő oldalakat is, ha egy GET változóhoz hozzáadjuk a megfelelő substringet (“?.gif”).
Például: hxxps://10[.]0[.]138/WAN_wan.htm?pic.gif. Ez teljes értékű hitelesítés megkerülésének számít.
Ebben a fázisban már teljes irányításuk volt a router felett, de tovább vizsgálták, hogyan valósul meg maga a hitelesítés.
Ha egy oldalt hitelesíteni kellene, a HTTPd HTTP alapszintű hitelesítést igényelne. A felhasználónevet és a jelszót base64 karakterláncként kódolná (kettősponttal elválasztva), elküldené a HTTP fejlécben, és végül összehasonlítaná a router memóriájában tárolt felhasználónévvel és jelszóval. A router ezt az információt (a konfigurációjának nagy részével együtt) az NVRAM-ban tárolja, vagyis a kinyert fájlrendszeren kívül.
A felhasználónév és a jelszó összehasonlítása strcmp segítségével történik. Az strcmp libc implementációja karakterről karakterre történő összehasonlítással dolgozik, amíg egy NUL terminator nem jelenik meg, vagy amíg nem történik egyezés.
Egy támadó kihasználhatja az utóbbit azzal, hogy megméri a hiba bekövetkeztéig eltelt időt. Ha például az első karakter idejét mérjük, a következő grafikont kapjuk:
Ez azt jelzi, hogy az első karakter “n”. A támadó megismételheti ezt a folyamatot (“na”, “nb”, “nc” és így tovább), hogy megszerezze a második karaktert, amíg a teljes felhasználónév és jelszó ki nem derül.
A Microsoft azt javasolta a NETGEAR-nek, hogy az ilyen támadásokat XOR-alapú memória-összehasonlítással el tudják kerülni:
A routerek szerves részét képezik a hálózatépítésnek, ezért fontos, hogy a funkcióit támogató programok biztonságosak legyenek. A sebezhetőségi kutatók, a szoftvergyártók és más szereplők közötti együttműködés kulcsfontosságú a teljes felhasználói élmény biztosításának elősegítése szempontjából. Ez magában foglalja a sebezhetőségek nyilvánosságra hozatalát a gyártók felé a CVD irányadó elvei szerint.
CVSS Score: 7.1 – 9.4