Kwetsbaarheden in GnuPG die verificatie kunnen omzeilen en het uitvoeren van eigen code mogelijk maken

Tijdens de conferentie 39C3 (Chaos Communication Congress) in Duitsland zijn details onthuld over 12 eerder onbekende en nog niet gerepareerde (0-day) kwetsbaarheden in de GnuPG-tools (GNU Privacy Guard), die compatibele hulpmiddelen voor gegevensversleuteling, werken met digitale handtekeningen, sleutelbeheer en toegang tot openbare sleutels beschikbaar stellen volgens OpenPGP- en S/MIME-normen. De meest gevaarlijke kwetsbaarheden maken het mogelijk om de digitale handtekeningverificatie te omzeilen en code uit te voeren bij het verwerken van versleutelde gegevens in ASCII-representatie (ASCII Armor). Werkende prototype-exploits en patches worden later gepresenteerd. CVE-identificatoren zijn nog niet toegewezen.

De kwetsbaarheden worden veroorzaakt door fouten in de code voor gegevensverwerking en formaatparsing, en zijn niet gerelateerd aan hiaten in crypto-algoritmes. Bijvoorbeeld, een fout in de parser leidt tot een crash bij het bepalen van feitelijk ondertekende gegevens en creëert situaties waarin de gecontroleerde gegevens mogelijk niet overeenkomen met de ondertekende gegevens, waardoor een aanvaller de platte tekst kan vervalsen zonder toegang tot de privésleutel.

Geconstateerde problemen:

  • Een fout in de code van de parser van versleutelde gegevens die in het ASCII-Armor-formaat worden verspreid (tekstbestanden met het blok "BEGIN/END PGP ARMORED FILE"), wat leidt tot schrijfacties buiten de buffergrenzen. Dit probleem kan leiden tot code-executie bij de verwerking van speciaal opgemaakte gegevens in gpg. De kwetsbaarheid doet zich voor in de functie armor_filter() en is het gevolg van een dubbele incrementering van de teller "n" in de "for"-lus — ondanks de instructie "n++" in de lus zelf, wordt de teller ook in het lichaam van de lus verhoogd bij het schrijven van gegevens naar de buffer "buf[n++]". Dit resulteert in een extra byte die buiten de buffer wordt geschreven, terwijl de variabele met de grootte "ret_len" wordt ingesteld op een waarde die de werkelijke grootte overschrijdt.
  • De mogelijkheid om elk bestand te creëren of opnieuw te schrijven, voor zover de huidige toegangsrechten dit toestaan, door onjuiste verwerking van de inhoud van het veld "filename" in het gegevenspakket. Deze kwetsbaarheid kan worden gebruikt om code-uitvoering in het systeem te organiseren bij het uitvoeren van de opdrachten "gpg —decrypt poc.enc" en "gpg poc.enc" om het door de aanvaller verzonden bestand poc.enc te bekijken. Code-uitvoering kan bijvoorbeeld worden bereikt door bestanden ~/.bash_completion of ~/.ssh/authorized_keys te creëren.
  • De mogelijkheid om de zichtbare platte tekst die aan de gebruiker wordt getoond te vervangen bij het opgeven van de optie «—decrypt» en verificatie met behulp van apart geleverde digitale handtekeningen (Detached Signature, gemaakt met de optie «—detach-sig» en geleverd in een apart sig-bestand). Het probleem is dat wanneer het bericht en het sig-bestand afzonderlijk worden verzonden, een aanvaller die het tussenliggende verkeer controleert (MITM), wijzigingen in het sig-bestand kan aanbrengen, waardoor de verificatie succesvol blijft, maar bij het bekijken van het bericht uit het sig-bestand met de optie «—decrypt» andere inhoud zal worden weergegeven. echo Plaintext > plaintext gpg —detach-sig plaintext # wijziging plaintext.sig door de aanvaller met toevoeging van extra tekst gpg —verify plaintext.sig plaintext # geverifieerd gpg —decrypt plaintext.sig # geverifieerd, maar andere tekst wordt getoond
  • De mogelijkheid om een ondertekend bericht aan te vullen met willekeurige gegevens terwijl een succesvolle handtekeningcontrole behouden blijft. Het probleem ontstaat door het afkappen van gegevens bij 20000 tekens tijdens de hash-berekening.
  • Onjuiste controle van de gecodeerde authenticatie (MDC - Modification Detection Codes), waardoor bewerkte versleutelde pakketten zo kunnen worden gemanipuleerd dat de ontvangen inhoud tijdens decryptie wordt behandeld als een ander type pakket (bijvoorbeeld als een bedoeld voor publicatie van een open sleutel).
  • De mogelijkheid om extra gegevens in CS-handtekeningen (Cleartext Signature) in te voegen, die zijn gemaakt met de vlag «—not-dash-escaped» of geconverteerd uit afzonderlijk ingevoegde handtekeningen (Detached Signature). Deze kwetsbaarheid kan worden gebruikt om de gebruiker een valse indruk te geven van de gegevens die daadwerkelijk zijn ondertekend. Bijvoorbeeld, een gebruiker kan een correcte sleutel voor digitale handtekeningcontrole van betrouwbare bronnen downloaden, maar een aanvaller kan tijdens een MITM-aanval het door de gebruiker gedownloade iso-bestand vervangen en een extra hash aan de handtekening van het image toevoegen, zodat de verificatie van het gewijzigde image succesvol is met de juiste controle-sleutel in het systeem.
  • Invoegen van extra gegevens in de ASCII-representatie van de CS-handtekening (Cleartext Signature) door het invoegen van een nul-teken. Deze kwetsbaarheid stelt bijvoorbeeld in staat om willekeurige tekst in de Hash-header in te voegen.
  • Onjuiste interpretatie van het OpenPGP-formaat, waardoor een "One-Pass Signed Message" in ASCII-gecodeerd formaat kan worden verwerkt als een "Cleartext Signature" bij een bepaalde wijziging van de header. Deze kwetsbaarheid stelt een aanvaller in staat om de originele ondertekende gegevens te vervangen door kwaadaardige inhoud, terwijl de schijn van een succesvolle verificatie blijft bestaan.
  • Het ontbreken van een duidelijke scheiding in de output van de informatie over de succesvolle verificatie van de digitale handtekening en de inhoud van het bericht, waardoor vervalste niet-ondertekende berichten kunnen worden gemaakt die eruitzien als authentiek wanneer ze worden uitgevoerd met "gpg --decrypt".
  • De mogelijkheid om OpenPGP-berichten te creëren die in gpg anders worden behandeld dan in andere OpenPGP-implementaties. Het probleem wordt veroorzaakt door de manier waarop zeer lange regels in ASCII-representatie van OpenPGP-gegevens worden verwerkt.
  • Het creëren van omstandigheden in het verificatieproces van digitale handtekeningen om de hash-controle-algoritme terug te voeren naar de onveilige SHA1.
  • De mogelijkheid om eigen secundaire sleutels (subkey) in te voegen zonder autorisatie met behulp van het privécomponent van de master-sleutel. De aanval wordt uitgevoerd door een valse sleutelopslag toe te voegen met de optie "--keyring".

Daarnaast zijn er twee kwetsbaarheden ontdekt in minisign, een vereenvoudigde tool voor het creëren en verifiëren van digitale handtekeningen. Beide kwetsbaarheden (1, 2) maken gebruik van terminal control sequences ("\e[1E") of speciale tekens ("\r") in het opmerkingenveld om de output van het programma te wijzigen, bijvoorbeeld om informatie over de verificatieresultaten te vervangen.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster