Lors de la confĂ©rence 39C3 (Chaos Communication Congress) en Allemagne, des dĂ©tails ont Ă©tĂ© rĂ©vĂ©lĂ©s sur 12 vulnĂ©rabilitĂ©s auparavant inconnues et non corrigĂ©es (0-day) dans l'outil GnuPG (GNU Privacy Guard). Cet outil fournit des utilitaires conformes aux normes OpenPGP et S/MIME pour le chiffrement des donnĂ©es, la gestion des signatures Ă©lectroniques, la gestion des clĂ©s et l'accĂšs aux dĂ©pĂŽts publics de clĂ©s. Les vulnĂ©rabilitĂ©s les plus critiques permettent de contourner la vĂ©rification des signatures numĂ©riques et d'exĂ©cuter du code lors du traitement de donnĂ©es chiffrĂ©es au format ASCII (ASCII Armor). Des prototypes d'exploits et des correctifs devraient ĂȘtre publiĂ©s ultĂ©rieurement. Aucun identifiant CVE n'a encore Ă©tĂ© attribuĂ©.
Les vulnérabilités sont causées par des erreurs dans le code de traitement des données et d'analyse des formats, et ne sont pas liées aux failles dans les algorithmes cryptographiques. Par exemple, une erreur dans le parseur entraßne un échec dans la détermination des données effectivement signées et crée des conditions dans lesquelles les données vérifiées peuvent ne pas coïncider avec les données signées, permettant ainsi à un attaquant de remplacer le texte en clair sans accÚs à la clé privée.
ProblÚmes identifiés :
- Une erreur dans le code du parseur des donnĂ©es chiffrĂ©es, diffusĂ©es au format ASCII-Armor (fichiers texte comportant les blocs « BEGIN/END PGP ARMORED FILE »), entraĂźnant une Ă©criture dans la mĂ©moire en dehors des limites du tampon. Ce problĂšme peut conduire Ă l'exĂ©cution de code lors du traitement dans gpg de donnĂ©es spĂ©cialement formatĂ©es. La vulnĂ©rabilitĂ© se manifeste dans la fonction armor_filter() et est causĂ©e par l'incrĂ©mentation double du compteur « n » dans la boucle « for » â malgrĂ© l'indication « n++ » dans la boucle elle-mĂȘme, le compteur est incrĂ©mentĂ© dans le corps de la boucle lors de l'Ă©criture des donnĂ©es dans le tampon « buf[n++] ». Finalement, un octet supplĂ©mentaire est Ă©crit en dehors des limites du tampon, et la variable de taille « ret_len » est dĂ©finie Ă une valeur dĂ©passant la valeur rĂ©elle.
- La possibilitĂ© de crĂ©er ou de réécrire tout fichier, selon les permissions d'accĂšs actuelles, due Ă un traitement incorrect du contenu du champ « filename » dans le paquet de donnĂ©es. Cette vulnĂ©rabilitĂ© peut ĂȘtre exploitĂ©e pour exĂ©cuter du code sur le systĂšme lors de l'exĂ©cution par le destinataire des commandes « gpg âdecrypt poc.enc » et « gpg poc.enc » pour visualiser le fichier poc.enc envoyĂ© par l'attaquant. L'exĂ©cution de code peut ĂȘtre obtenue, par exemple, via la crĂ©ation de fichiers ~/ .bash_completion ou ~/ .ssh/authorized_keys.
- PossibilitĂ© de remplacement du texte visible affichĂ© Ă l'utilisateur lors de l'utilisation de l'option « âdecrypt » et de la vĂ©rification Ă l'aide de signatures numĂ©riques fournies sĂ©parĂ©ment (Signature DĂ©tachĂ©e, créées avec l'option « âdetach-sig » et fournies dans un fichier sig sĂ©parĂ©). Le problĂšme rĂ©side dans le fait que lors de l'envoi sĂ©parĂ© du message et du fichier sig, un attaquant contrĂŽlant le trafic intermĂ©diaire (MITM) peut apporter des modifications au fichier sig, aprĂšs quoi la vĂ©rification restera rĂ©ussie, mais en visualisant le message depuis le fichier sig Ă l'aide de l'option « âdecrypt », un contenu diffĂ©rent sera affichĂ©. echo Plaintext > plaintext gpg âdetach-sig plaintext # modification plaintext.sig par l'attaquant avec ajout de texte supplĂ©mentaire gpg âverify plaintext.sig plaintext # vĂ©rifiĂ© gpg âdecrypt plaintext.sig # vĂ©rifiĂ©, mais un autre texte est affichĂ©
- Possibilité d'ajouter des données arbitraires à un message signé tout en préservant la vérification réussie de la signature. Le problÚme survient en raison de la coupure des données à la limite de 20000 caractÚres lors du calcul du hachage.
- Vérification incorrecte des codes de chiffrement authentifié (MDC - Modification Detection Codes), permettant de manipuler des paquets chiffrés de sorte qu'à la déchiffrement, le contenu obtenu soit traité comme un autre type de paquet (par exemple, perçu comme destiné à la publication d'une clé publique).
- PossibilitĂ© d'injecter des donnĂ©es supplĂ©mentaires dans les signatures CS (Cleartext Signature), créées Ă l'aide du drapeau « ânot-dash-escaped » ou converties Ă partir de signatures fournies sĂ©parĂ©ment (Signature DĂ©tachĂ©e). La vulnĂ©rabilitĂ© peut ĂȘtre exploitĂ©e pour donner Ă l'utilisateur une fausse impression quant aux donnĂ©es qui ont rĂ©ellement Ă©tĂ© signĂ©es. Par exemple, l'utilisateur peut tĂ©lĂ©charger Ă partir de sources dignes de confiance une clĂ© correcte pour vĂ©rifier la signature numĂ©rique, mais un attaquant, lors d'une attaque MITM, peut remplacer l'image iso tĂ©lĂ©chargĂ©e par l'utilisateur et ajouter un hachage supplĂ©mentaire Ă la signature de l'image, de sorte que la vĂ©rification de l'image falsifiĂ©e rĂ©ussisse en prĂ©sence d'une clĂ© de vĂ©rification correcte dans le systĂšme.
- Injection de donnĂ©es supplĂ©mentaires dans la reprĂ©sentation ASCII de la signature CS (Cleartext Signature) via l'insertion d'un caractĂšre Ă code zĂ©ro. La vulnĂ©rabilitĂ©, par exemple, permet d'insĂ©rer du texte arbitraire dans l'en-tĂȘte Hash.
- InterprĂ©tation incorrecte du format OpenPGP, qui permet au message « One-Pass Signed Message » en format ASCII de ĂȘtre traitĂ© comme un message « Cleartext Signature » aprĂšs certaines modifications de l'en-tĂȘte. Cette vulnĂ©rabilitĂ© permet de remplacer les donnĂ©es signĂ©es originales par un contenu malveillant tout en conservant l'apparence d'une vĂ©rification rĂ©ussie.
- Absence de séparation explicite dans la sortie d'informations concernant le succÚs de la vérification de la signature numérique et du contenu du message, permettant de créer de faux messages non signés qui, lors de l'exécution de « gpg --decrypt », ressemblent à des messages authentiques.
- Possibilité de créer des messages OpenPGP qui seront traités différemment dans gpg par rapport à d'autres implémentations d'OpenPGP. Ce problÚme est causé par une particularité dans le traitement des trÚs longues lignes dans la représentation ASCII des données OpenPGP.
- Création de conditions lors de la vérification de la signature numérique permettant de faire revenir l'algorithme de vérification de hachage à l'insécurisé SHA1.
- Possibilité de substituer ses propres sous-clés sans autorisation en utilisant le composant privé de la clé maßtresse. L'attaque se réalise en ajoutant un faux dépÎt de clés via l'option « --keyring ».
Deux vulnérabilités supplémentaires ont été identifiées dans minisign, un outil simplifié pour créer et vérifier des signatures numériques. Les deux vulnérabilités (1, 2) permettent d'utiliser des séquences de contrÎle terminal (« \e[1E ») ou des caractÚres spéciaux (« \r ») dans le champ de commentaire pour modifier la sortie du programme, par exemple, pour remplacer les informations sur le résultat de la vérification.
Source : opennet.ru
