Byly zveřejněny opravy distribučního balíčku OpenWrt a , ve kterých byla odstraněna (CVE-2020-7982) v balíčkovém správci , která umožňuje provést MITM útok a pozměnit obsah stahovaného balíčku z repozitáře. Kvůli chybě v kódu pro ověřování kontrolních součtů může útočník vytvořit podmínky, za kterých budou kontrolní součty SHA-256, obsažené v podepsaném digitálním podpisu indexu balíčků, ignorovány, což umožní obcházet mechanismy ověřování integrity stahovaných ipk zdrojů.
Problém se projevuje od února 2017, po kódu, který ignoruje počáteční mezery před kontrolním součtem. Kvůli chybě při přeskočení mezer nebyl posunut ukazatel na pozici ve řetězci a cyklus dekódování šestnáctkového řetězce SHA-256 okamžitě vrátil kontrolní součet nulové délky.
Jelikož balíčkový správce opkg v OpenWrt běží s právy root, útočník má možnost nenápadně měnit ipk balíček stahovaný z repozitáře při provádění příkazu „opkg install“ a uskutečnit provedení svého kódu s právy root přidáním vlastních skriptů zpracovatelů, které jsou vyvolány při instalaci. Pro využití zranitelnosti musí útočník také zajistit pozměnění správného a podepsaného indexu balíčků (například odebraného z downloads.openwrt.org). Velikost změněného balíčku musí odpovídat původní velikosti, uvedené v indexu.
V situaci, kdy je třeba se obejít bez aktualizace celého firmwaru, lze aktualizovat pouze balíčkového správce opkg pomocí následujících příkazů:
cd /tmp
opkg update
opkg download opkg
zcat .\/opkg-lists\/openwrt_base | grep -A10 "Package: opkg" | grep SHA256sum
sha256sum .\/opkg_2020-01-25-c09fe209-1_*.ipk
Dále je třeba porovnat zobrazené kontrolní součty a pokud se shodují, vykonat:
opkg install .\/opkg_2020-01-25-c09fe209-1_*.ipk
V nových verzích byla také odstraněna další v knihovně , která může vést k přetečení vyrovnávací paměti při zpracování ve funkci speciálně formátovaných serializovaných binárních dat nebo dat ve formátu JSON. Knihovna se používá v takových komponentech distribuce, jako jsou netifd, procd, ubus, rpcd a uhttpd, a také v balíčku (Attended sysUpgrade CLI). Přeplnění vyrovnávací paměti nastává při přenosu velkých číselných atributů typu „double“ v blob-bloce. Zranitelnost systému lze zkontrolovat provedením příkazu:
$ ubus call luci getFeatures \
‘{ «banik»: 00192200197600198000198100200400.1922 }’
Kromě odstranění zranitelností a opravy hromadících se chyb ve vydání OpenWrt 19.07.1 byla také aktualizována verze jádra Linux (z 4.14.162 na 4.14.167), byly vyřešeny problémy s výkonem při použití frekvencí 5GHz a zavedena podpora pro zařízení Ubiquiti Rocket M Titanium, Netgear WN2500RP v1,
Zyxel NSA325, Netgear WNR3500 V2, Archer C6 v2, Ubiquiti EdgeRouter-X, Archer C20 v4, Archer C50 v4, Archer MR200, TL-WA801ND v5, HiWiFi HC5962, Xiaomi Mi Router 3 Pro a Netgear R6350.
Zdroj: opennet.ru
