Sebezhetőség a 270 ezer projektben használt node-netmask NPM csomagban

A node-netmask NPM csomag, amelyet körülbelül 3 millióan töltenek le hetente, és amelyet több mint 270 ezer projekt függőségeként használnak a GitHubon, van egy sérülékenysége (CVE-2021-28918), amely lehetővé teszi a hálózati maszkot használó ellenőrzések megkerülését. címtartományok előfordulásának meghatározásához vagy szűréshez. A problémát a node-netmask 2.0.0 kiadása javította.

A sérülékenység lehetővé teszi a külső IP-címek belső hálózatból származó címként történő kezelését és fordítva, valamint bizonyos logikával, hogy az alkalmazásban a csomópont-hálózati maszk modult használják SSRF (Server-side request forgery), RFI végrehajtására. (Remote File Inclusion) és LFI (Local File Inclusion) támadások ), hogy hozzáférjenek a belső hálózat erőforrásaihoz, és külső vagy helyi fájlokat vonjanak be a végrehajtási láncba. A probléma az, hogy a specifikáció szerint a nullával kezdődő címsor értékeket oktális számként kell értelmezni, de a csomópont-netmaszk modul ezt nem veszi figyelembe, és decimális számként kezeli.

Például egy támadó kérhet egy helyi erőforrást a "0177.0.0.1" érték megadásával, amely a "127.0.0.1" értéknek felel meg, de a "node-netmask" modul elveti a nullát, és a 0177.0.0.1-et ""-ként kezeli 177.0.0.1", amely az alkalmazásban a hozzáférési szabályok kiértékelésekor nem lesz meghatározható a „127.0.0.1" azonosítóval. Hasonlóképpen, a támadó megadhatja a „0127.0.0.1” címet, amelynek meg kell egyeznie a „87.0.0.1” címmel, de a „node-netmask” modul „127.0.0.1”-ként kezeli. Hasonlóképpen csalhatja az intranetes címekhez való hozzáférés ellenőrzését, ha olyan értékeket ad meg, mint a „012.0.0.1” (egyenértékű a „10.0.0.1”-el, de az ellenőrzés során 12.0.0.1-ként kerül feldolgozásra).

A problémát azonosító kutatók katasztrofálisnak nevezik a problémát, és több támadási forgatókönyvet is bemutatnak, de ezek többsége spekulatívnak tűnik. Például szó esik egy olyan Node.js alapú alkalmazás megtámadásának lehetőségéről, amely külső kapcsolatokat létesít, hogy erőforrást kérjen a bemeneti kérés paraméterei vagy adatai alapján, de az alkalmazás nincs konkrétan megnevezve vagy részletezve. Még ha talál is olyan alkalmazásokat, amelyek a megadott IP-címek alapján töltik be az erőforrásokat, nem teljesen világos, hogy a gyakorlatban hogyan lehet kihasználni a sérülékenységet helyi hálózathoz való csatlakozás vagy a „tükör” IP-címek feletti irányítás megszerzése nélkül.

A kutatók csak azt feltételezik, hogy a 87.0.0.1 (Telecom Italia) és a 0177.0.0.1 (Brasil Telecom) tulajdonosai képesek megkerülni a 127.0.0.1-re vonatkozó hozzáférési korlátozást. Reálisabb forgatókönyv az, ha kihasználják a sérülékenységet a különféle alkalmazásoldali tiltólisták megkerülésére. A probléma az intranet tartományok meghatározásának megosztására is alkalmazható az NPM „private-ip” moduljában.

Forrás: opennet.ru

Hozzászólás