A Microsoft négy közepes súlyosságú sérülékenységet hozott nyilvánosságra a nyílt forráskódú OpenVPN szoftverben, amelyek távoli kódfuttatást (RCE – Remote Code Execution) és helyi jogosultság kiterjesztést (LPE- Local Privilege Escalation) eredményezhetnek.
A Microsoft Threat Intelligence Community nyilatkozata alapján ez a támadási lánc lehetővé teszi a támadók számára, hogy teljesen átvegyék az irányítást a végpontok felett, ezáltal jogosulatlanul hozzáférhetnek érzékeny információkhoz, adatszivárgást és rendszerkompromittálódást okozva.
A sebezhetőségek az OpenVPN 2.6.10 és 2.5.10 előtti összes verzióját érintik.
- CVE-2024-27459 – Stack overflow sebezhetőség, DoS állapotot és LPE-t eredményez a Windows rendszerben
- CVE-2024-24974 – Jogosulatlan hozzáférés az “\\\openvpn\\\service”-hez a Windowsban, lehetővé téve a támadók számára a távoli hozzáférést és műveletek indítását
- CVE-2024-27903 – A plugin mechanizmusának sebezhetősége, amely Windows rendszerben RCE-t okoz, valamint Android, iOS, macOS és BSD rendszerekben pedig LPE-t és adat manipulációt eredményez.
- CVE-2024-1305 – Memóriatúlcsordulást okozó sebezhetőség, amely DoS-t eredményez a Windows rendszerben
A felsorolt négy sérülékenység közül az első három az openvpnserv nevű összetevőben rejlik, míg az utolsó a Windows Terminal Access Point (TAP) driverében található.
Az összes sebezhetőség kihasználható, amint a támadók hozzáférést szereznek a felhasználó OpenVPN hitelesítő adataihoz. Ehhez különféle módszereket alkalmaznak. A darkweben megveszik az ellopott hitelesítő adatokat, adatalopó malwareket használnak vagy a hálózati forgalom figyelése során rögzítik az NTLMv2 hash-eket, majd cracking eszközökkel (HashCat, John the Ripper) dekódolják azokat.
A támadók a sérülékenységeket az alábbi kombinációkban fűzhetik össze egy hatékony támadási lánc létrehozásához:
CVE-2024-24974 és CVE-2024-27903 vagy CVE-2024-27459 és CVE-2024-27903
Ezekkel a technikákkal a támadók letilthatják a Protect Process Light (PPL) funkciót például a Microsoft Defender alkalmazásban, vagy megkerülve azt, manipulálhatják a rendszer alapvető funkcióit anélkül, hogy ezt bárki észlelné.
OpenVPN elemzés
Az OpenVPN nyílt forráskódú projekt vizsgálata során fedezték fel a sebezhetőségeket, hogy javítsuk a vállalati biztonsági szabványokat. E kutatás során megvizsgáltak két másik népszerű VPN megoldást is, és megállapították, hogy egy adott időpontban mindkettőt érintette egy sebezhetőség (CVE-2024-1305). Ezt követően elkezdtek további sebezhető illesztőprogramok felkutatását ugyanezzel a problémával, és úgy döntöttek, hogy alaposabban megvizsgáljuk a nyílt forráskódú VPN projekteket is. Az tapasztalták, hogy ugyanaz a sebezhetőség megtalálható az OpenVPN nyílt forráskódú tárolójában is, kutatásuk az OpenVPN Windows rendszerekre vonatkozó architektúrájának és biztonsági modelljének vizsgálatára összpontosított.
OpenVPN architektúra
Az OpenVPN egy kifinomult VPN rendszer, amelyet gondosan úgy terveztek, hogy biztonságos pont-pont vagy hálózat-hálózat közötti kapcsolatokat hozzon létre. Támogatja mind a routed, mind a híd (bridge) konfigurációkat, valamint a távoli hozzáférést is, ami sokoldalú választássá teszi különböző hálózati igényekhez. Az OpenVPN kliens- és szerveralkalmazásokat is magában foglal, biztosítva a biztonságos kommunikáció átfogó megoldását.
Az OpenVPN lehetővé teszi a felhasználók számára, hogy többféle módszerrel hitelesítsék egymást, beleértve az előre megosztott titkos kulcsokat, tanúsítványokat vagy felhasználónév/jelszó kombinációkat. Több klienssel rendelkező szerver környezetben a szerver képes egyéni hitelesítési tanúsítványt generálni és kiadni minden kliens számára, erős digitális aláírásokat és megbízható tanúsítványhatóságot alkalmazva. Ez biztosítja a hitelesítési folyamat magas szintű biztonságát és integritását, növelve a VPN kapcsolat általános megbízhatóságát.
Kliensoldali architektúra
A kliensoldali architektúra az a terület, ahol további három sebezhetőséget fedeztek fel (CVE-2024-27459, CVE-2024-24974, és CVE-2024-27903):
Az OpenVPN kliensarchitektúráját az alábbi egyszerűsített diagrammal lehet összefoglalni:
A rendszer szolgáltatás (openvpnserv.exe) magas jogosultsági szintű parancsokat indít el a felhasználó nevében, olyan feladatok végrehajtására, mint a DNS konfigurációk, IP címek és útvonalak hozzáadása vagy törlése, valamint a Dinamikus Gazdagép Konfigurációs Protokoll (DHCP) engedélyezése. Ezeket a parancsokat az openvpn.exe folyamattól kapja meg, egy névvel ellátott csővezetéken keresztül, amelyet erre a két entitásra hoztak létre, például "openvpn/service_XXX", ahol az XXX az újonnan létrehozott folyamathoz parancssori argumentumként átadott szálazonosító (TID).
Mi az az OpenVPN?
Az OpenVPN egy virtuális magánhálózat (VPN) rendszer, amely biztonságos, privát pont-pont vagy hálózat-hálózat közötti kapcsolatot hoz létre. Az OpenVPN egy nyílt forráskódú projekt, amely világszerte széles körben népszerű, beleértve az Egyesült Államokat, Indiát, Franciaországot, Brazíliát, az Egyesült Királyságot és Németországot. Az informatikai, pénzügyi szolgáltatások, távközlési és szoftveripar területein egyaránt elterjedt. A projekt támogatja a különböző főbb platformokat, és világszerte több millió eszközbe integrálták.
Az OpenVPN egyúttal annak az alagútkezelő protokollnak a neve is, amelyet a rendszer használ. Ez a protokoll a Biztonságos Socket Réteg (Secure Socket Layer, SSL) titkosítási protokollt alkalmazza, hogy biztosítsa az interneten megosztott adatok magánjellegét, az AES-256 titkosítás használatával. Mivel a forráskód szabadon hozzáférhető és ellenőrizhető, az esetleges sebezhetőségeket könnyen fel lehet fedezni és javítani.