4 juin 2021

Modification de données dans des PDF signés

La norme PDF (Portable Document Format) définit deux types différents de signatures numériques pour garantir l’authenticité et l’intégrité des documents. Nous avons d’une part les signatures d’approbation attestant d’un état spécifique du document PDF et d’autre part les signatures de certification ayant pour but d’être plus puissante et plus flexible. Elles couvrent généralement des opérations de travail plus complexes, comme la signature de contrat entre plusieurs parties.

Dans cet article, nous allons voir ensemble les deux dernières vulnérabilités découvertes sur les signatures, Evil Annotation et Sneaky Signature permettant d’exploiter la norme PDF actuelle.

Introduction

Les signatures PDF sont un mécanisme de protection bien établi pour garantir l’intégrité, l’authenticité et la non-répudiation d’un document PDF. Introduites en 1999, les signatures PDF sont utilisées pour protéger des documents importants tels que des documents de certification, les contrats et les factures. Selon Adobe, 300 milliards de documents PDF ont été ouverts par leurs applications l’année dernière. Parmi eux, 8 milliards ont été signés[1]. La base juridique pour les documents signés numériquement est fournie dans l’Union européenne par le règlement eIDAS[2] et aux États-Unis par la loi sur les signatures électroniques dans le commerce mondial et national (ESIGN[3])


[1] https://www.adobe.com/content/dam/cc/en/fast-facts/pdfs/fast-facts.pdf

[2] https://eur-lex.europa.eu/legal-content/EN-FR/TXT/?from=DE&uri=CELEX%3A32014R0910

[3] https://www.govinfo.gov/content/pkg/PLAW-106publ229/pdf/PLAW-106publ229.pdf

Les différents types de signature

Comme expliqué précédemment, la norme PDF définis deux types de signatures.

  1. Les signatures d’approbation témoignent d’un état spécifique d’un document. La norme autorise l’utilisation de plusieurs signatures sur un même document. Toute autre modification sur un document signé entraîne l’invalidation de la signature d’approbation ou des avertissements dans les visionneurs PDF.
  2. Les signatures de certifications fournissent un mécanisme plus puissant et plus souple pour traiter les documents signés numériquement. Lors de la certification du document, le propriétaire définit une liste de modifications autorisée qui n’invalide pas la signature du document. Ces modifications autorisées peuvent être un sous-ensemble des actions suivantes :
    • Écrire du texte dans des champs de formulaire spécifiques
    • Fournir des annotations aux documents
    • Ajouter des signatures d’approbation

Étant donné qu’une signature de certification définit des autorisations pour l’ensemble du document, une seule signature de certification est autorisée dans un document PDF. Cette signature doit également être la première signature du document.

Scénario d’attaque

Dans un scénario d’attaque idéal, le certificateur crée un contrat certifié avec des informations sensibles qui ne peuvent pas être modifiées. Le certificateur autorise des modifications spécifiques au contrat PDF, par exemple, des signatures supplémentaires. En utilisant ces modifications autorisées, l’attaquant peut changer le montant de 100 $ à 100 000 $ et afficher l’IBAN de son propre compte. Sur la base des nouvelles attaques, la victime ne peut pas détecter la modification malveillante et accepte le contrat modifié.

Figure 1 : Scénario d’attaque

Evil Annotation Attack (EAA)

L’idée de l’attaque par annotation malveillante est de montrer un contenu arbitraire dans un document certifié en abusant des annotations. Puisque les documents certifiés P3 permettent d’ajouter des annotations, l’EAA brise l’intégrité de la certification.

Actuellement, il y a 3 annotations avec un niveau de danger élevé capable de cacher et d’ajouter du texte et des images : FreeText, Redact et Stamp. Ces trois annotations peuvent être utilisées pour modifier furtivement un document certifié et injecter du contenu malveillant.

En outre, 11 sur 28 sont classifiés comme moyennes, car un attaquant peut cacher du contenu dans le document certifié.

Le niveau de danger des annotations restantes est classifié comme faible ou nul puisque ces annotations sont soit assez limitées, soit non autorisées dans les documents certifiés.

Figure 2 : Classification des annotations par criticité

Selon le modèle de l’attaque, l’attaquant possède un document valablement certifié permettant l’insertion d’annotations. Pour exécuter l’attaque, l’attaquant modifie un document certifié en incluant l’annotation avec le contenu malveillant à une position du choix de l’attaquant. Ensuite, l’attaquant envoie le fichier modifié à la victime qui vérifie la signature numérique.

La victime pourrait détecter l’attaque si elle ouvre manuellement l’une des barres latérales ou clique sur l’annotation. Cependant, aucune des applications PDF testées n’a ouvert les barres latérales automatiquement. De plus, l’attaquant peut verrouiller une annotation pour empêcher de cliquer dessus.

Pour améliorer la furtivité de l’attaque, il existe une technique pour empêcher la visualisation de l’annotation, afin qu’elle n’apparaisse dans aucune barre latérale. De manière surprenante, un contournement générique et simple peut être appliqué à toutes les annotations. Les visionneurs de PDF identifient les annotations par leur /SubType spécifié. Ce /SubType est également utilisé par le lecteur pour affecter les différents outils d’édition, tels qu’un éditeur de texte pour les commentaires FreeText. Si la valeur de /SubType est soit manquante, soit définie sur une valeur non spécifiée, les deux cas n’étant pas interdits selon la norme, le lecteur PDF est incapable d’attribuer l’annotation. En résumé, l’annotation est indiscernable du contenu original.

Sneaky Signature Attack (SSA)

L’idée derrière l’attaque Sneaky Signature Attack (SSA) est de manipuler l’apparence d’un contenu arbitraire dans le PDF en ajoutant des éléments de signature superposés à un document PDF qui est certifié au niveau P2.

Selon l’analyse des chercheurs, le niveau de danger des formulaires était nul, car l’insertion de nouveaux éléments de formulaire, la personnalisation de la taille et de l’apparence de la police et la suppression d’éléments de formulaire sont interdites. La seule modification autorisée porte sur la valeur stockée dans le champ. Ainsi, un attaquant n’est pas en mesure de créer des formulaires qui cachent un contenu arbitraire dans le document PDF.

De manière surprenante, ces restrictions ne sont pas valables pour le champ de signature. En insérant un champ de signature, le signataire peut définir la position exacte du champ, et en plus son apparence et son contenu. Cette flexibilité est nécessaire, car chaque nouvelle signature pourrait contenir les informations du signataire. Ces informations peuvent être un graphique, un texte, ou une combinaison des deux.

Néanmoins, l’attaquant peut abuser de cette flexibilité pour manipuler furtivement le document et insérer un nouveau contenu.

Figure 3 : Scénario d’attaque SSA

Réduction des risques

À l’heure actuelle, Adobe, Foxit et LibreOffice ont déjà corrigé toutes les vulnérabilités liées à ces problèmes. Les chercheurs travaillent également en collaboration avec l’organisme mondial de normalisation pour développer une nouvelle génération de spécifications PDF afin de corriger les défauts des spécifications existantes.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *