Kwetsbaarheid in TLS waardoor sleutelbepaling voor verbindingen op basis van DH-cijfers mogelijk is

Onthuld informatie over het nieuwe kwetsbaarheden (CVE-2020-1968) in het TLS-protocol, met codenaam
Wasbeer en het in zeldzame omstandigheden mogelijk maken om een ​​voorlopige primaire sleutel (pre-master) te bepalen, die kan worden gebruikt om TLS-verbindingen, inclusief HTTPS, te decoderen bij het onderscheppen van transitverkeer (MITM). Opgemerkt wordt dat de aanval zeer moeilijk praktisch uitvoerbaar is en meer een theoretisch karakter heeft. Om een ​​aanval uit te voeren is een specifieke configuratie van de TLS-server en de mogelijkheid om de verwerkingstijd van de server zeer nauwkeurig te meten vereist.

Het probleem is rechtstreeks aanwezig in de TLS-specificatie en heeft alleen betrekking op verbindingen die gebruikmaken van cijfers die zijn gebaseerd op het DH-sleuteluitwisselingsprotocol (Diffie-Hellman, TLS_DH_*"). Met ECDH-cijfers treedt het probleem niet op en blijven ze veilig. Alleen TLS-protocollen tot en met versie 1.2 zijn kwetsbaar; TLS 1.3 heeft geen last van het probleem. De kwetsbaarheid doet zich voor in TLS-implementaties die de geheime DH-sleutel hergebruiken voor verschillende TLS-verbindingen (dit gedrag komt voor op ongeveer 4.4% van de Alexa Top 1M-servers).

In OpenSSL 1.0.2e en eerdere releases wordt de primaire DH-sleutel hergebruikt in alle serververbindingen, tenzij de optie SSL_OP_SINGLE_DH_USE expliciet is ingesteld. Sinds OpenSSL 1.0.2f wordt de primaire DH-sleutel alleen hergebruikt bij gebruik van statische DH-cijfers ("DH-*", bijvoorbeeld "DH-RSA-AES256-SHA"). De kwetsbaarheid komt niet voor in OpenSSL 1.1.1, omdat deze tak geen primaire DH-sleutel gebruikt en geen statische DH-cijfers gebruikt.

Bij gebruik van de DH-sleuteluitwisselingsmethode genereren beide zijden van de verbinding willekeurige privésleutels (hierna sleutel “a” en sleutel “b”), op basis waarvan publieke sleutels (ga mod p en gb mod p) worden berekend en verzonden. Nadat elke partij de publieke sleutels heeft ontvangen, wordt een gemeenschappelijke primaire sleutel (gab mod p) berekend, die wordt gebruikt om sessiesleutels te genereren. Met de Raccoon-aanval kun je de primaire sleutel bepalen via side-channel-analyse, gebaseerd op het feit dat de TLS-specificaties tot en met versie 1.2 vereisen dat alle leidende nulbytes van de primaire sleutel worden weggegooid voordat er berekeningen mee worden uitgevoerd.

Het opnemen van de ingekorte primaire sleutel wordt doorgegeven aan de functie voor het genereren van sessiesleutels, die is gebaseerd op hash-functies met verschillende vertragingen bij het verwerken van verschillende gegevens. Door nauwkeurig de timing te meten van sleutelbewerkingen die door de server worden uitgevoerd, kan de aanvaller aanwijzingen (orakel) vaststellen die het mogelijk maken om te beoordelen of de primaire sleutel helemaal opnieuw begint of niet. Een aanvaller kan bijvoorbeeld de door de client verzonden openbare sleutel (ga) onderscheppen, deze opnieuw naar de server verzenden en vaststellen
of de resulterende primaire sleutel vanaf nul begint.

Op zichzelf levert het definiëren van één byte van de sleutel niets op, maar door de “ga”-waarde te onderscheppen die door de client wordt verzonden tijdens de verbindingsonderhandelingen, kan de aanvaller een reeks andere waarden genereren die aan “ga” zijn gekoppeld en deze naar de server in afzonderlijke verbindingsonderhandelingssessies. Door ‘gri*ga’-waarden te genereren en te verzenden, kan een aanvaller, door veranderingen in vertragingen in de serverreactie te analyseren, de waarden bepalen die leiden tot het ontvangen van primaire sleutels, beginnend bij nul. Nadat dergelijke waarden zijn bepaald, kan de aanvaller een reeks vergelijkingen maken oplossingen verborgen nummerproblemen en bereken de oorspronkelijke primaire sleutel.

Kwetsbaarheid in TLS waardoor sleutelbepaling voor verbindingen op basis van DH-cijfers mogelijk is

OpenSSL-kwetsbaarheden toegewezen laag risiconiveau, en de oplossing werd beperkt tot het verplaatsen van de problematische cijfers “TLS_DH_*” in release 1.0.2w naar de categorie cijfers met een onvoldoende beschermingsniveau (“zwakke SSL-cijfers”), die standaard is uitgeschakeld . De Mozilla-ontwikkelaars deden hetzelfde: uitgeschakeld in de NSS-bibliotheek die in Firefox wordt gebruikt, de DH- en DHE-coderingssuites. Vanaf Firefox 78 zijn problematische cijfers uitgeschakeld. Chrome-ondersteuning voor DH werd in 2016 stopgezet. De BearSSL-, BoringSSL-, Botan-, Mbed TLS- en s2n-bibliotheken hebben geen last van het probleem, omdat ze geen DH-cijfers of statische varianten van DH-cijfers ondersteunen.

Bijkomende problemen worden afzonderlijk vermeld (CVE-2020-5929) in de TLS-stack van F5 BIG-IP-apparaten, waardoor de aanval realistischer wordt. In het bijzonder zijn afwijkingen in het gedrag van apparaten in de aanwezigheid van een nulbyte aan het begin van de primaire sleutel geïdentificeerd, die kunnen worden gebruikt in plaats van het meten van de exacte latentie van berekeningen.

Bron: opennet.ru

Voeg een reactie