Analyse sur le danger induit par les imprimantes réseau Postscript
Date : 22 Juin 2005
Au cours du mois de janvier, des discussions intenses sur les vulnérabilités potentielles des imprimantes réseaux, et plus particulièrement d'imprimantes Postscript ont eu lieu dans les listes suivies par le Cert-IST.
Le problème initial soulevé était de savoir si une imprimante Postscript connectée simultanément sur 2 réseaux pouvait être utilisée illégalement pour transmettre des données d'un réseau vers l'autre. Nous n'entrerons pas dans le détail des discussions, mais nous vous présentons ici les conclusions qui nous paraissent les plus significatives.
Tout d'abord, il est clair que dès que l'on connecte un équipement sur deux réseaux, il y a un danger que cet équipement puisse être utilisé "contre son gré" pour transmettre des messages d'un réseau vers l'autre. Etant donné que les équipements "de service" (imprimantes, fax, photocopieurs, etc…) se multiplient dans les entreprises, l'éventualité d'une interconnexion réseau accidentelle au moyen de ces derniers est réelle.
Pour analyser plus spécifiquement la vulnérabilité potentielle d'une imprimante Postscript, il nous faut tout d'abord décrire plus précisément ce qu'est une imprimante Postscript :
- Postscript est un langage spécialisé pour réaliser des tracés et de la mise en forme de texte.
- Lorsqu'un travail d'impression est envoyé vers une imprimante Postscript, ce "travail" est un fichier, écrit en langage Postcript, qui contient tous les ordres nécessaires pour construire une à une les pages du document à imprimer.
- Ce fichier, une fois reçu par l'imprimante, est exécuté par un interpréteur Postscript qui se trouve sur l'imprimante.
En envoyant à un imprimante un document Postscript spécialement formaté, peut-on implanter sur cette imprimante un programme de relayage qui transmettra le trafic réseau d'un réseau vers l'autres ? Il y a deux approches théoriques possibles pour ce type d'attaque :
- La prise de contrôle de l'imprimante. Les fonctions de bas niveau de l'imprimante, et en particulier les fonctions réseaux (pile TCP/IP), sont implémentées par le système d'exploitation de l'imprimante (OS). Pour accéder à ces fonctions, il faut donc trouver un moyen de "sortir"' de l'interpréteur Postcript et de dialoguer directement avec le système d'exploitation. Cela semble possible, soit au travers des fonctions d'échappement "startjob()" et "exitserver()"de Postscript, soit en exploitant des défauts de type "débordement de mémoire" qui pourraient exister dans l'interpréteur Postscript.
- L'écriture d'un programme Postscript de relayage. Le langage Postscript dispose en standard de fonctions de manipulation de fichiers ("file()", "open()", "read()", "write()"). Si le système d'exploitation implémente l'accès au réseau au travers d'écriture et de lecture dans des fichiers spéciaux (ce sera le cas en particulier si l'OS est un UNIX, car le système UNIX permet l'accès au réseau via des fichiers de type "devices"), alors il devient possible d'écrire en Postcript une routine lisant des données sur un réseau et les recopiant sur l'autre.
Les vulnérabilités Postscript décrites ci-dessus restent des hypothèses, et aucune démonstration pratique n'existe à notre connaissance.
De façon plus générale, il a été argumenté cependant que les équipements réseau "de service" comme les imprimantes, les fax ou les photocopieurs constituaient des points faibles du système d'information : si peu d'attaques ont été relatées dans ce domaine, on peut aussi augurer que peu d'effort de sécurisation ont aussi été réalisés par les constructeurs. A titre d'illustration, il a été mentionné une étude présentée à la conférence "DefCon" d'août 2002 (dont la référence est donnée en fin d'article) et consacrée à la présentation de cas concrets de vulnérabilités constatées sur des imprimantes réseau.
Pour plus d'informations :
- Fil de discussion Bugtraq "Vulnerability of postscript printer" : http://archives.neohapsis.com/archives/bugtraq/2004-01/0216.html
- Etude "Network Printers Vulnerabilities" présentée au DefCon d'août 2002 : http://members.cox.net/ltlw0lf/printers/printers.pdf
- Manuel de référence du langage Postscript : http://partners.adobe.com/asn/developer/pdfs/tn/PLRM.pdf