Signer ou ne pas signer : vulnérabilités pratiques dans GPG et ses amis
Ça pourrait contenir des zerodays. https://gpg.fail/ Des communications sécurisées aux mises à jour logicielles : des implémentations PGP telles que *GnuPG* étaient omniprésentement utilisées pour fournir des garanties cryptographiques. De nombreuses applications, des communications sécurisées aux mises à jour logicielles, reposent fondamentalement sur ces utilitaires. Comme ces systèmes sont développés depuis des décennies, on peut s’attendre à des bases de code matures, une multitude de rapports d’audit de code et des tests continus étendus. En examinant diverses bases de code liées au PGP pour certains cas d’usage personnels, nous avons constaté que ces attentes n’étaient pas satisfaites, et avons découvert de multiples vulnérabilités dans les utilitaires cryptographiques, notamment dans *GnuPG*, *Sequoia PGP*, *age* et *minisign*. Les vulnérabilités ont au cœur des bugs d’implémentation, par exemple dans l’analyse du code, plutôt que des bugs dans les mathématiques de la cryptographie elle-même. Une vulnérabilité dans un parseur pourrait, par exemple, entraîner une confusion sur les données réellement signées, permettant aux attaquants sans la clé privée du signataire d’échanger le texte en brute. Comme nous n’avions pas initialement l’intention de mener des recherches en sécurité, mais plutôt de comprendre certains aspects internes de la gestion des clés et des signatures pour un usage personnel, nous discutons également du processus de découverte de ces bugs. De plus, nous abordons le rôle de la spécification OpenPGP et le processus de divulgation. Au-delà des mathématiques sous-jacentes des algorithmes cryptographiques, il existe toute une autre couche de code d’implémentation, attribuant un sens aux données traitées. Par exemple, une opération de vérification de signature nécessite à la fois une cryptographie robuste **et** l’assurance que les données vérifiées sont bien les mêmes que celles transmises à l’opération de signature. Pour faciliter la seconde partie, des logiciels tels que *GnuPG* implémentent un code d’analyse et de traitement dans un format standardisé. Surtout lorsqu’on implémente une norme riche en fonctionnalités et en évolution, il existe un risque de spécifications ambivalentes et de bugs classiques d’implémentation. L’impact des vulnérabilités que nous avons trouvées s’étend de divers contournements de vérification de signature, la rupture du chiffrement en transit et du chiffrement au repos, la sapeinement des signatures clés, jusqu’à des vulnérabilités exploitables de corruption mémoire. Autorisé au public sous http://creativecommons.org/licenses/by/4.0
LicenseCreative Commons Attribution
