Sårbarheder i GnuPG, der muliggør omgåelse af verifikation og udførelse af egen kode

På konferencen 39C3 (Chaos Communication Congress) i Tyskland blev detaljerne om 12 tidligere ukendte og uoprettede (0-day) sårbarheder i GnuPG (GNU Privacy Guard) afsløret. Dette værktøj tilbyder OpenPGP og S/MIME-kompatible værktøjer til kryptering af data, håndtering af digitale signaturer, nøgleadministration og adgang til offentlige nøgleopbevaringssteder. De mest kritiske sårbarheder tillader omgåelse af digital signaturverifikation og muliggør udførelse af kode ved behandling af krypterede data i ASCII-repræsentation (ASCII Armor). Arbejdende prototyper af exploits og patches forventes offentliggjort senere. CVE-id'er er endnu ikke tildelt.

Sårbarhederne skyldes fejl i koden til behandling af data og parsing af formater og er ikke relateret til brister i kryptografiske algoritmer. For eksempel forårsager en fejl i parseren en nedbrud, når der skal bestemmes faktiske underskrevne data, og skaber betingelser, hvor de validerede data ikke nødvendigvis stemmer overens med de underskrevne data, hvilket gør det muligt for angriberen at ændre den åbne tekst uden adgang til den private nøgle.

Identificerede problemer:

  • Fejl i koden til parseren af krypterede data, der distribueres i ASCII-Armor-format (tekstfiler med blokken «BEGIN/END PGP ARMORED FILE»), der fører til skrivning ud over buffergrænsen. Problemet kan føre til udførelse af kode ved behandling af specifikt formaterede data i gpg. Sårbarheden fremkommer i funktionen armor_filter() og skyldes en dobbelt inkrementering af tælleren “n” i for-løkken – på trods af at “n++” er angivet i selve løkken, øges tælleren også i kroppens løkke under skrivning af data til bufferen “buf[n++]”. Resultatet er, at der skrives et ekstra byte ud over buffergrænsen, og variablen med størrelsen “ret_len” sættes til en værdi, der overstiger den faktiske størrelse.
  • Muligheden for at oprette eller overskrive enhver fil, så langt som de nuværende adgangsrettigheder tillader det, på grund af forkert behandling af indholdet af feltet «filename» i datapakken. Sårbarheden kan udnyttes til at udføre kode i systemet, når modtageren udfører kommandoerne «gpg —decrypt poc.enc» og «gpg poc.enc» for at se den fil, som angriberen har sendt, poc.enc. Udførelse af kode kan opnås f.eks. ved at oprette filer ~ / .bash_completion eller ~ / .ssh / authorized_keys.
  • Mulighed for at ændre den åbne tekst, der vises for brugeren ved angivelse af indstillingen «—decrypt» og verificering ved hjælp af separat leverede digitale underskrifter (Detached Signature, oprettet ved indstillingen «—detach-sig» og leveret i en separat sig-fil). Problemet er, at når beskeden og sig-filen sendes separat, kan en angriber, der kontrollerer den mellemledende trafik (MITM), ændre sig-filen, så verificeringen forbliver succesfuld, men når indholdet af beskeden fra sig-filen vises ved hjælp af indstillingen «—decrypt», vises et andet indhold. echo Plaintext > plaintext gpg —detach-sig plaintext # ændring plaintext.sig af angriberen med tilføjelse af ekstra tekst gpg —verify plaintext.sig plaintext # verificeret gpg —decrypt plaintext.sig # verificeret, men der vises en anden tekst
  • Mulighed for at tilføje vilkårlige data til den signerede besked, mens den succesfulde kontrol af underskriften bevares. Problemet opstår på grund af afskæringen af data ved grænsen på 20000 tegn under beregning af hash.
  • Forkert kontrol af autentificerede krypteringskoder (MDC — Modification Detection Codes), der muliggør manipulation af krypterede pakker, så det ved dekrypteringen behandlede indhold opfattes som en anden type pakke (f.eks. opfattet som beregnet til offentliggørelse af den åbne nøgle).
  • Mulighed for at indsætte yderligere data i CS-underskrifter (Cleartext Signature), oprettet ved hjælp af flaget «—not-dash-escaped» eller konverteret fra separat leverede underskrifter (Detached Signature). Sårbarheden kan bruges til at skabe et falsk indtryk for brugeren om, hvilke data der faktisk blev underskrevet. For eksempel kan en bruger hente en korrekt nøgle fra pålidelige kilder til verifikation af den digitale underskrift, men en angriber kan under en MITM-angreb ændre den iso-billede, som brugeren henter, og tilføje en ekstra hash til underskriften af billedet, således at verifikationen af det ændrede billede vil gå succesfuldt, så længe der er en korrekt verifikationsnøgle i systemet.
  • Indsættelse af yderligere data i ASCII-repræsentationen af CS-underskriften (Cleartext Signature) via indsættelse af et nul-tegn. Sårbarheden muliggør f.eks. indsættelse af vilkårlig tekst i Hash-headeren.
  • Forkert fortolkning af OpenPGP-formatet, som kan medføre, at meddelelsen «One-Pass Signed Message» i ASCII-kodet format behandles som en «Cleartext Signature» ved en bestemt ændring af overskriften. Sårbarheden tillader, at de oprindelige signerede data erstattes med ondsindet indhold, mens valideringen stadig ser ud til at være succesfuld.
  • Manglende klar adskillelse i output af information om succes med validering af den digitale signatur og indholdet i meddelelsen, hvilket muliggør oprettelse af falske usignerede meddelelser, der ved udførelse af «gpg —decrypt» ser ud som ægte.
  • Mulighed for at oprette OpenPGP-meddelelser, som i gpg vil blive behandlet anderledes end i andre implementeringer af OpenPGP. Problemet skyldes en særlig behandling af meget lange linjer i ASCII-repræsentationen af OpenPGP-data.
  • Skabelse af betingelser under valideringsprocessen af den digitale signatur, der muliggør en tilbageførsel af hash-valideringsalgoritmen til den usikre SHA1.
  • Mulighed for at indsætte egne sekundære nøgler (subkey) uden autorisation ved at bruge den private komponent af master-nøglen. Angrebet udføres ved at tilføje et falsk nøglelager ved hjælp af optionen «—keyring».

Der er yderligere afsløret to sårbarheder i minisign, et forenklet værktøj til oprettelse og verifikation af digitale signaturer. Begge sårbarheder (1, 2) gør det muligt at bruge kontrolsekvenser til terminalen («\e[1E») eller specialtegn («\r») i kommentarfeltet for at modificere programmets output, eksempelvis ved at erstatte informationen om valideringsresultatet.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster