Peut-on faire confiance aux signatures numériques dans les fichiers PDF ?

Il n’y a guère d’entreprise ou d’agence gouvernementale qui n’utilise pas les fichiers PDF pour gérer leurs documents électroniques. En outre, les signatures numériques sont souvent utilisées pour garantir l’authenticité de ces documents. Lorsque vous ouvrez un fichier signé à l’aide d’un visualiseur de PDF, le programme affiche un marqueur indiquant que le document a été signé et par qui. Vous pouvez également accéder au menu de vérification des signatures électroniques.

Une équipe de recherche de plusieurs universités allemandes a testé la robustesse de ces signatures de fichier PDF. Vladislav Mladenov, de la Ruhr-Universität Bochum, a partagé les résultats de l’équipe lors du Congrès sur la communication du chaos (36С3).

La tâche des chercheurs était simple : modifier le contenu d’un document PDF signé sans affecter la validité de la signature. En théorie, les cybercriminels pourraient faire la même chose pour ajouter de fausses informations ou un contenu nuisible à un fichier signé. Après tout, les clients font confiance à un document signé par une banque et cliquent très probablement aussi sur les liens qu’il contient.

L’équipe a sélectionné les 22 lecteurs de PDF les plus populaires pour différentes plateformes et les a systématiquement alimentés des résultats de leurs expériences.

La structure d’un fichier PDF

Premiers mots sur le format PDF lui-même. Chaque dossier se compose de quatre parties principales : Header, qui affiche la version PDF ; Body, qui reflète le contenu principal ; XRef-Table, un répertoire énumérant les objets dans le corps et leurs positions (pour afficher le contenu) ; et Trailer, qui est utilisé par les lecteurs de PDF pour lire le document. La bande-annonce contient deux paramètres importants qui indiquent au programme où commencer le traitement du fichier et où commence la section Xref.

Une fonction de mise à jour incrémentale est intégrée au format PDF, permettant aux utilisateurs de sélectionner une partie du texte et de laisser des commentaires, par exemple. D’un point de vue technique, la fonction ajoute trois sections supplémentaires : des mises à jour pour le corps, un nouveau répertoire XRef et une nouvelle bande-annonce. Cela permet aux utilisateurs de modifier la façon dont ils visualisent les objets et d’ajouter de nouveaux contenus. Essentiellement, une signature numérique est également une mise à jour incrémentielle qui ajoute un autre élément et les sections correspondantes au fichier.

Attaque d’enregistrement incrémentielle (ISA)

Tout d’abord, l’équipe a essayé d’ajouter des sections supplémentaires au fichier avec une autre mise à jour incrémentielle en utilisant un éditeur de texte. À proprement parler, il ne s’agit pas d’une attaque – l’équipe a simplement utilisé une fonctionnalité mise en place par les créateurs du format. Lorsqu’un utilisateur ouvre un fichier ainsi modifié, le lecteur de PDF affiche généralement un message indiquant que la signature numérique est valide mais que le document a été modifié. Ce n’est pas le message le plus informatif, surtout pour un utilisateur inexpérimenté. Pire, l’un des lecteurs de PDF (LibreOffice) n’affichait même pas le message.

La prochaine expérience consistait à supprimer les deux dernières sections (c’est-à-dire à ajouter une mise à jour du corps, mais pas la nouvelle XRef et la bande-annonce). Certaines demandes ont refusé de travailler avec un tel dossier. Deux visionneuses de PDF ont détecté les sections manquantes et les ont automatiquement ajoutées sans informer le lecteur de toute modification du contenu. Trois autres ont ouvert le fichier sans aucune objection.

Ensuite, les chercheurs se sont demandé ce qui se passerait s’ils copiaient simplement la signature numérique dans leur propre mise à jour “manuelle”. Deux autres programmes ont été dupés, Foxit et MasterPDF.

Au total, 11 des 22 lecteurs de PDF se sont révélés vulnérables à ces simples manipulations. En outre, six d’entre eux n’ont pas averti que le document ouvert à la consultation avait été modifié. Dans les cinq autres cas, l’utilisateur a dû entrer dans le menu et vérifier manuellement la validité de la signature numérique pour détecter toute altération. La simple ouverture du fichier ne suffisait pas.

Attaque d’enveloppement de la signature (SWA)

La signature d’un document ajoute deux champs importants au corps du document en tant que mises à jour incrémentielles : “/ Contents” (contient la signature) et “/ ByteRange” (la description exacte de ce qui a été effectivement signé). La plage d’octets est constituée de quatre paramètres qui

1. définissent le début du fichier,

2. comptent le nombre d’octets avant le code de signature,

3. définissent un octet pour clarifier la fin de la signature,

4. comptent le nombre d’octets après la signature, puisque la signature numérique est une chaîne de caractères générée cryptographiquement à partir du code du document PDF.

Bien sûr, la signature ne peut pas se signer elle-même, donc la zone où elle est stockée est exclue du calcul de la signature.

Les chercheurs ont essayé d’ajouter un autre champ “/ ByteRange” immédiatement après la signature. Les deux premières valeurs sont restées inchangées, seule la position de la fin du code de signature a été modifiée. Cela a créé une zone supplémentaire dans le fichier où les objets malveillants peuvent être ajoutés, ainsi qu’une section XRef descriptive. Théoriquement, le lecteur de PDF ne lirait pas correctement les nouvelles sections si le PDF était lu correctement si le PDF était traité correctement. Cependant, 17 des 22 applications étaient vulnérables à une telle attaque.

Falsification de la signature universelle (USF)

Pour de bonnes raisons, l’équipe de recherche a soumis les applications à un test de stress. Cela implique de tenter de remplacer les valeurs des champs par de fausses valeurs ou simplement de les supprimer. Lors de l’expérimentation de la section “/ Contenu”, il s’est avéré que deux spectateurs ont quand même validé la signature réelle, après qu’elle ai été remplacée par la valeur 0x00.

Et si la signature était laissée en place mais que la section “/ ByteRange (informations sur ce qui a été signé exactement) était supprimée ? Ou bien un zéro a été inséré à la place des valeurs réelles ? Dans les deux cas, certains spectateurs ont validé une telle signature.

Au total, 4 des 22 programmes présentaient des erreurs de mise en œuvre qui pouvaient être exploitées.

Le tableau récapitulatif des résultats montre que pas moins de 21 des 22 spectateurs de PDF ont pu être trompés. Cela signifie que pour tous, sauf un, il est possible de créer un fichier PDF avec un contenu malveillant ou de fausses informations qui semblent valables pour l’utilisateur.

Il est amusant de constater qu’Adobe Reader 9 est la seule application qui n’est pas tombée dans le piège des chercheurs. Le problème est que cette version d’Adobe Reader est vulnérable au RCE et n’est utilisée par les utilisateurs de Linux que parce que c’est la dernière version disponible.

Conclusions pratiques

Quelles conclusions pratiques pouvons-nous en tirer ? Premièrement, personne ne doit faire aveuglément confiance aux signatures numériques PDF. Si vous voyez une coche verte quelque part, cela ne signifie pas nécessairement que la signature est valide.

De plus, même un document signé peut présenter un risque. Par conséquent, assurez-vous que vous disposez d’une solution de sécurité fiable, Kaspersky Endpoint Security for Business, installée sur votre ordinateur avant d’ouvrir les fichiers reçus en ligne ou de cliquer sur les liens .</p>