A digitális aláírásokhoz alkalmazott kriptográfiai műveleteknél használt elliptikus görbékkel a nagyoknak is meggyűlik a baja: a Microsoft Windows CryptoAPI-t érintő korábbi hiba után most, 2022 április 19-ei bejelentéssel az Oracle Java SE keretrendszer is elesett. Az E-Group kriptográfiai szakértői elemezték a hibát, amely azonnali beavatkozást igényel.
A hibajegy (CVE-2022-21449) szerint az Oracle több megoldásánál, közöttük az Oracle Java SE keretrendszernél sérülékenység található az ECDSA digitális aláírások ellenőrzésénél.
A CVE/NVD leírások és egyéb elemzések szerint a hiba egy 0 értékre való vizsgálat hiányából fakad az elliptikus görbés digitális aláírások ellenőrzésénél (vagyis a pl. NIST P-256 görbén alapuló ECDSA aláírások ASN.1(r,s) vagy nyers (r,s) értékeinél). A felhasználók ritkán találkoznak ilyen aláírási műveletekkel közvetlenül, azonban a háttérben számtalan esetben jönnek létre és kerülnek ellenőrzése ilyen adatok, mint pl.:
- OASIS SAML protokoll XML Signature rétegeinél, OpenID Connect protokoll JWS (aláírt JWT) adatainál (pl. 3rd party Single Sign-On rendszereknél);
- állományok aláírásainál (pl. chipkártyával hitelesített dokumentumoknál, X.509 tanúsítványoknál vagy rendszerállományok védelménél, amiket ráadásul SIEM/SOC rendszerek is monitoroznak és riasztanak, ha rendellenességet észlelnek);
- SSL/TLS handshake, azaz rejtjelezett kommunikációs csatornák felépítésénél;
Ezek csak a legfontosabb területek, de más protokollok, adatstruktúrák is érintettek.
Az elemzéseink során saját kódot használva, különböző Oracle Java SE verziók érintettségét vizsgáltuk, többféle adatstruktúra esetén. Ezek alapján meg tudjuk erősíteni, hogy a korábbi, sok legacy rendszernél használt Oracle Java SE 8 nem érintett, viszont a támogatott (LTS) verziók közül az Oracle Java SE 17.0.2 és újabb változatai mind tartalmazzák a kihasználható sérülékenységet, amíg a 2022 áprilisi security patch nem kerül telepítésre.
Egy adott rendszer érintettsége azonban nem állapítható meg könnyen. A sérülékenység kihasználása ugyanis nem csak az ECDSA aláírást ellenőrző fél oldalán futó Java verziótól (pl. Oracle Java SE 17.0.2), hanem az általa használt crypto library-től is függ (pl. A Bouncy Castle vagy az Apache Santuario nem érintett). A kommunikációban résztvevő feleknél – szervereknél, klienseknél (elsősorban gépi interfészt használó Java klienseknél) – a felülvizsgálat az üzemeltetés, illetve esetlegesen a fejlesztők bevonásával lehetséges csak, de a lényeg, hogy mindenképpen hibamentes Java verzióra és crypto library-re kell mihamarabb áttérni.
Mindenkinek javasoljuk a fejlesztőivel való egyeztetést, vagy akár az E-Group szakmailag felkészült kriptográfiai csapata is szívesen vesz minden megkeresést.