Ve strongSwan, balíčku VPN založeném na protokolu IPSec používaném v Linuxu, Androidu, FreeBSD a macOS, byla nalezena zranitelnost (CVE-2023-41913), kterou lze využít k vzdálenému spuštění kódu útočníka. Zranitelnost je způsobena chybou v procesu charon-tkm s implementací protokolu pro výměnu klíčů (IKE) založeného na TKMv2 (Trusted Key Manager), která vede k přetečení bufferu při zpracování speciálně upravených hodnot schématu DH (Diffie–Hellman). Zranitelnost se projevuje pouze v systémech, které používají charon-tkm a ve verzích strongSwan od 5.3.0. Problém byl odstraněn v aktualizaci strongSwan 5.9.12. Opravy zranitelnosti byly také připraveny pro větve od 5.3.x.
Chyba je způsobena absencí kontroly velikosti veřejných hodnot Diffie-Hellman před jejich kopírováním do bufferu pevné velikosti na zásobníku. Přetečení může být iniciováno zasláním speciálně upravené zprávy IKE_SA_INIT, která je zpracovávána bez autentizace. Ve starších verzích strongSwan byla kontrola velikosti prováděna v zpracovateli KE payload (Key Exchange), ale ve verzi 5.3.0 byly přidány změny, které přesunuly kontrolu veřejných hodnot na stranu zpracovatele protokolu DH (Diffie-Hellman) a přidaly standardní funkce pro usnadnění kontroly správnosti známých skupin DH. Při nedopatření byly nové kontrolní funkce zapomenuty přidat do procesu charon-tkm, který funguje jako proxy mezi procesem IKE a TKM (Trusted Key Manager), takže v funkci memcpy() skončily neověřené hodnoty, což umožnilo zapsat do 512-bajtového bufferu až 10000 bajtů dat.
Zdroj: opennet.ru
