Problème des terminaux sous Unix
Date : 23 Juin 2005
Il ne s'agit pas vraiment d'un problème nouveau (il est connu depuis une dizaine d'années), mais un article récent de "Digital Defense Inc" a remis au goût du jour les attaques de sessions utilisateurs au moyen des caractères d'échappement des émulateurs de terminaux. Il présente en particulier de nouvelles variantes de ces attaques.
Dans la mesure où ce type d'attaque représente toujours une menace, nous avons décidé d'y consacrer cet article du Bulletin.
Attaque par caractères d'échappement
Les terminaux alphanumériques traditionnels (par exemple "vt100") et les émulateurs de terminaux sous X11 (par exemple "xterm") disposent de fonctions "avancées" qui sont activables en leur envoyant une suite de caractères de commandes. Ces suites de caractères sont souvent appelées "caractères d'échappement" car elles débutent par le caractère <escape>. Elles peuvent servir :
- à des fonctions simples comme le passage en inverse-video,
- ou à des fonctions plus complexes comme la génération d'une copie d'écran dans un fichier.
L'article de "Digital Defense Inc." explique comment utiliser de façon malicieuse ces fonctions pour faire exécuter des commandes, à son insu, par l'utilisateur d'un émulateur de terminal vulnérable. Un des exemples présentés est le suivant :
- Un internaute (l'attaquant) envoie à un serveur Web une URL contenant une séquence d'échappement.
- Cette URL n'existant pas, elle est journalisée dans le fichier des erreurs par le serveur Web.
- Si un administrateur visualise ensuite ce fichier des erreurs, son émulateur de terminal, s'il est vulnérable, va interpréter ces séquences d'échappement et exécuter une fonction choisie par l'internaute.
On voit que par ce moyen, l'internaute parvient à faire exécuter au sein de la session de travail de l'administrateur, des commandes qu'il aura choisies. Il s'agit donc typiquement d'une attaque de type "vol de session".
L'article de "Digital Defense Inc" présente plusieurs cas d'attaques et identifie les émulateurs de terminaux vulnérables à ces attaques par caractères d'échappement. Le tableau ci-dessous résume cette étude.
Emulateur | Screen dumping attack | Window title attack |
Eterm | Vulnérable | Vulnérable |
xterm |
| Vulnérable |
dtterm |
| Vulnérable |
uxterm |
| Vulnérable |
rxvt | Vulnérable | Vulnérable |
aterm |
|
|
Putty |
| Partiellement vulnérable |
Gnome-terminal |
|
|
hanterm-xf |
| Vulnérable |
Kconsole |
|
|
SecureCRT |
|
|
Nota :
- Les discussions survenues suite à la publication de cet article ont mis en évidence que la version de Eterm testée ici n'était pas la dernière. La dernière version (0.9.2) n'est vulnérable à aucune des attaques décrites.
- Une nouvelle version de "rxvt" a été publiée suite à l’étude de "Digital Defense" corrigeant les problèmes identifiés. Reportez-vous à la rubrique "Failles n’ayant pas fait l’objet d’avis".
Moyens de protection
Il n'existe pas vraiment de moyens de protection, hormis :
- Ne pas utiliser un émulateur de terminal connu comme vulnérable,
- Etre attentif, lors du développement d'émulateurs, à ce type d'attaque (limiter les fonctions disponibles, analyser leur sensibilité à ce type d'attaque, etc…),
- Etre attentif, lors du développement d'applications (par exemple de serveurs Web, ou d'outils de type syslog), à refuser l'enregistrement dans les fichiers de journalisation de séquences d'échappement.
Pour plus d'information
Article de Digital Defense Inc. : http://www.digitaldefense.net/labs/papers/Termulation.txt