Kritická chyba kryptografické komponenty Windows
V lednové sadě oprav pro Windows 10 a Windows Server 2016/2019 je přítomna i jedna záplata pro systémovou knihovnu
s kryptografickými funkcemi. Zranitelnost je natolik závažná, že byste měli aktualizaci nainstalovat hned teď a až poté číst dále.
Chyba v šifrování
Sám Microsoft chybu specifikuje takto:
Zranitelnost je ve způsobu, jakým Windows CryptoAPI (Crypt32.dll) ověřuje certifikáty založené na eliptických křivkách.
Útočník by mohl využít zranitelnosti použitím podvrženého certifikátu k podepsání škodlivého software, čímž by se zdálo,
že soubor pochází z důvěryhodného a legitimního zdroje. Uživatel by neměl žádnou možnost poznat, že je soubor škodlivý,
protože by elektronický podpis vypadal jako od důvěryhodného vydavatele.
Úspěšný exploit by také útočníkovi umožnil provést útoky typu man-in-the-middle a dešifrovat důvěrné informace.
Ze strohého popisu je jasné, že chyba je skutečně závažná, NSA (která o ní Microsoft informovala) ještě doplňuje,
že mezi dotčenými můžou být HTTPS spojení či podepsané soubory a emaily.
Z dostupných informací plyne, že problém je ve způsobu ověřování certifikátů pro podpis. Dalo by se to připodobnit
k pokusu otevřít neznámé zamčené dveře – pravděpodobnost, že budete mít správný klíč, je mizivá. Nyní ale máte
možnost do zamčených dveří vložit i vlastní zámek, ke kterému už klíč přirozeně máte.
Popis zranitelnosti
O něco více technicky: k zaručenému elektronickému podpisu a jeho ověření jsou potřeba dva klíče, soukromý a veřejný.
Podepisující entita použije soukromý klíč k podepsání dat a kdokoliv další pak může podpis ověřit pomocí veřejného klíče.
Svázání veřejného klíče s identitou podepisujícího zajišťují certifikáty, jejichž autenticitu garantuje certifikační autorita,
která certifikát taktéž podepíše. Certifikační autority se mohou řetězit, proto existují tzv. kořenové certifikační autority,
kterým se apriori věří a jejichž certifikáty jsou v operačním systému již předinstalované.
Eliptická křivka nad prvočíselným tělesem je velmi zjednodušeně množina řešení rovnice y^2=x^3+ax+b (mod p). Tato řešení
dohromady tvoří aditivní grupu, tj. jednotlivé body lze sčítat a výsledek opět leží na křivce. K užití v kryptografii je pro danou
křivku (charakterizovanou parametry a, b, p) standardizován také bod G, který generuje všechny další používané body (jsou jeho násobky).
Soukromý klíč je pak náhodné k, veřejný klíč bod na křivce Q = k*G.
Nyní si představte, že si definujete “vlastní” křivku se stejnými parametry a, b, p, ovšem s jiným bodem G’.
Ten si zvolíte jako G’ = (1/k’) * Q pro nějaké vhodné k’. Ze situace, kdy znáte veřejný klíč (např. certifikační autority),
ale nikdy nebudete znát soukromý klíč, se rázem stala situace, kdy soukromý “klíč” již znáte. Můžete tedy podepsat falešný
certifikát pomocí klíče k’ a podle popisu zranitelnosti je možné Windows přinutit, že jeho ověření pomocí certifikační autority
s veřejným klíčem Q = k’*G’ projde. Falešný certifikát je již dále možné používat bez omezení, aniž by uživatel měl šanci
detekovat podezřelé chování. Problém tedy spočívá v tom, že chybná knihovna zřejmě ověřuje jen některé parametry křivky, ale ne bod G.
Důsledky
Zatím nejsou známé přesné podmínky a mechanismy úspěšného útoku (nebyly nalezeny známky toho, že by zranitelnost již byla využívána),
nicméně lze předpokládat, že mnoho hackerských skupin nyní horečně pracuje na přípravě exploitů.
Probíhá tedy závod s časem: podaří se dřív záplatovat všechny systémy, nebo spustit útočnou kampaň?
Zdroje: https://media.defense.gov , https://krebsonsecurity.com/ , https://portal.msrc.microsoft.com/