David Madore's WebLog: Mes 0.02¤ sur la sécurité des avions vis-à-vis des attaques informatiques

[Index of all entries / Index de toutes les entréesLatest entries / Dernières entréesXML (RSS 1.0) • Recent comments / Commentaires récents]

↓Entry #2298 [older| permalink|newer] / ↓Entrée #2298 [précédente| permalien|suivante] ↓

(dimanche)

Mes 0.02¤ sur la sécurité des avions vis-à-vis des attaques informatiques

[Dessin humoristique de Ritsch & Renn]J'ai le souvenir d'avoir vu (il y a longtemps) un dessin humoristique qui montrait un passager sur un siège d'avion, avec son portable ouvert devant lui, et qui regardait avec un air terrifié l'écran de ce portable qui affichait quelque chose comme nouveau périphérique BlueTooth détecté : Airbus A310 ; autoconfigurer ? OK / annuler. [Ajout : apparemment ce dessin (dont l'original, allemand, est ci-contre) est de Ritsch & Renn — même si je ne peux pas vraiment vérifier vu que leur site tout en Flash est tout cassé chez moi.]

Je mentionne ça parce que j'ai entendu quelques échos d'une histoire selon laquelle un expert en sécurité informatique (Chris Roberts) aurait réussi à plusieurs reprises à émettre des commandes en direction du système de pilotage d'avions commerciaux en vol en se branchant simplement au niveau du système d'in-flight entertainment [je ne sais pas comment on dit ça en français : je veux dire le système qui vous propose de voir des films, d'écouter de la musique, de voir la position de l'avion sur une carte, etc.]. C'est du moins ce qu'il a lui-même déclaré dans un tweet, puis expliqué au FBI qui l'a interrogé, comme il résulte d'un affidavit du FBI (les deux sont liés depuis l'article d'Ars Technica vers lequel je viens de pointer).

Je ne sais pas si ces affirmations sont vraies (je dois dire que si je crois vaguement qu'il aurait pu envoyer une commande pour lâcher les masques à oxygène, j'ai du mal à croire qu'il aurait pu passer une commande climb au système de navigation : je serais déjà surpris, en fait, qu'il existât une telle commande — que ce soit entre les commandes du cockpit et le pilote automatique, ou entre le pilote automatique et l'avionique, les commandes doivent probablement refléter soit l'interface côté cockpit soit les mouvements de bas niveau des différentes parties de l'avion, et je ne vois pas à quel niveau on dirait à l'avion grimpe, mais bon). Comme le dit quelqu'un dans un autre tweet cité par Ars Technica, soit Chris Roberts a menti, soit il a vraiment joué avec un avion en vol, et dans les deux cas c'est irresponsable pour un expert en sécurité informatique. Je suis d'accord avec ce jugement, mais ça n'empêche pas qu'on ait envie de se pencher sur la question de savoir si ce serait possible. Une autre question est de savoir si une attaque serait possible depuis le Wifi de bord, ou en utilisant celui-ci pour monter l'attaque depuis le sol (ce qui serait encore plus terrifiant).

Le problème, c'est que je doute que nous obtenions une réponse claire et publique de la part d'Airbus ou Boeing (ou d'autres concernés) : je soupçonne qu'ils n'ont pas compris que la seule approche qui marche un peu pour la sécurité informatique, c'est la transparence. Et en l'occurrence, j'aimerais bien avoir confirmation du fait qu'ils ont suivi des principes qui me semblent aller complètement de soi, tels que :

  • la séparation absolue et complète au niveau des câbles (et pas simplement logicielle) entre les circuits de communication servant (A) au pilotage de l'avion (depuis le niveau le plus bas de contrôle des capteurs et moteurs jusqu'au niveau le plus haut présenté aux pilotes), (B) à la sécurité et au contrôle de la cabine (tout ce qui concerne l'équipage de cabine), et (C) à l'in-flight entertainment et au Wifi de bord, et
  • le placement des câbles servant à (A) à un endroit où il est invraisemblable de les atteindre depuis la cabine sans attirer énormément d'attention (par exemple en commençant à utiliser une perceuse, ce qui va sans doute se remarquer).

Est-ce le cas ? Je l'ignore. En principe, il devrait être possible de faire quelque chose de sûr où les câbles (A), (B) et (C) seraient interconnectés, mais vue notre incapacité (où nous = l'espèce humaine) à écrire du code informatique sûr même pour des choses très simples, je n'aurais vraiment pas envie de me risquer dans un avion où un simple switch sépare les commandes de vol et la diffusion des films dans la cabine. Même si un switch est probablement ce qu'on a le plus de chances d'arriver à programmer de façon totalement sûre (interdire tout paquet passant dans un certain sens, même un chimpanzé relativement réveillé doit réussir à programmer ça si on lui propose une banane suffisamment juteuse), je me méfierais quand même des attaques de déni de service (risque-t-on de pouvoir flooder le switch ?), y compris au niveau physique (risque-t-on de pouvoir griller le switch depuis un port de façon à l'empêcher de fonctionner depuis d'autres ?). Je me sentirais plus à l'aise de savoir que les signaux sont totalement séparés (d'ailleurs, je me sentirais aussi plus à l'aise de savoir que les commandes de vol, à tous les niveaux, utilisent non pas Ethernet mais quelque chose qui garantit des canaux à bande passante fixe, comme une forme de bus série blindé — peut-être que David Monniaux saura nous en dire plus).

Remarquez que si la séparation dont je parle peut sembler de simple bon sens, elle a des conséquences non évidentes : par exemple, s'il ne doit y avoir une séparation absolue entre les commandes de vol et tout ce qui concerne la cabine, ceci signifie que l'affichage fait aux passagers de la position actuelle, vitesse et altitude de l'avion doit venir d'un GPS (par exemple) différent de celui qui assiste le pilotage, puisque la transmission d'informations de ce dernier vers la cabine, même à sens unique juste pour les afficher, violerait la séparation que je propose. Bon, à défaut d'un second GPS juste pour afficher la position aux passagers (enfin, c'est pas comme si un GPS coûtait cher, par rapport à un avion, mais c'est vrai que si c'est pour un usage aéronautique, tous les prix sont multipliés par un zillion, même les sièges coûtent les yeux de la tête), on peut imaginer capter le signal émis par le transpondeur de l'avion lui-même, comme le fait FlightRadar (si vous ne connaissez pas, suivez ce lien, c'est fascinant — d'ailleurs, mon poussinet est totalement accroc). Mais en tout cas, ce n'est pas totalement évident. Et il y a probablement d'autres choses qu'il faudrait penser intelligemment comme ça.

(Dans le genre, il me semble comprendre que toutes les agences de services de renseignements ont deux ordinateur dans chaque bureau — typiquement repérés par un code de couleur, genre blanc et noir —, l'un étant connecté à Internet, l'autre étant connecté au réseau interne sécurisé, et il n'y a tout simplement aucune connexion entre les deux. J'imagine qu'ils ont des règles très strictes pour passer quand même de temps en temps des informations de l'un à l'autre : peut-être graver un DVD avec des fichiers sous un format précis et très contrôlé, et insérer le disque dans l'autre ordinateur où il sera soigneusement validé avant quelque usage que ce soit.)

[Mise à jour () : on me signale que Bruce Schneier a écrit une entrée de blog sur le sujet, où il affirme explicitement : Newer planes such as the Boeing 787 Dreamliner and the Airbus A350 and A380 have a single network that is used both by pilots to fly the plane and passengers for their Wi-Fi connections. Mais comment a-t-on pu autoriser ça ‽ (Par ailleurs, sur le fond, Schneier a le même avis que moi.) • Pour ce qui est des services de renseignement ou autres agences sensibles, je propose que le transfert se fasse par média optique plutôt que par clé USB, parce qu'une clé USB contient une puce qui a un firmware, et qu'on dont on peut donc potentiellement prendre le contrôle, donc c'est une mauvaise idée. (Après, je suis aussi persuadé que l'immense majorité des secrets des services secrets sont totalement bidon, donc je m'en fous un peu, mais bon.)]

Je répète que je ne sais pas ce qu'il en est pour ce qui est de l'éventuelle connexion des avions. Mais le simple fait qu'on peut avoir à se poser la question n'est pas très rassurant. Je pourrais me moquer de l'aviation, une industrie qui comme beaucoup d'autres continue à penser la sécurité en terme d'obscurité plutôt que de transparence (pour donner un exemple : quand j'étais à l'ENS, le laboratoire d'analyse statique était très fier de ce que leur analyseur statique, Astrée, avait réussi, en partenariat avec Airbus, à analyser et valider le système de commande de vol principal de l'Airbus A340 ; mais une question à laquelle je n'ai pas eu de réponse est : pourquoi ce logiciel de commande de vol n'est-il pas rendu public, au juste ?, ce qui permettrait à d'autres gens de faire des analyseurs statiques capables de l'étudier, ou simplement de l'examiner avec des yeux d'humains ; étant donné que le business d'Airbus est de vendre des avions, pas du logiciel, pourquoi les sources de toutes les parties logicielles de leurs avions ne sont-elles pas publiées ? ce n'est pas comme si leurs concurrents pouvaient les exploiter sur des avions différents avec des technologies différentes — et de toute façon je suis sûr que les espions industriels sont assez bons pour que Boeing ait déjà le code utilisé par Airbus et réciproquement, donc l'enjeu est juste de savoir si le public, lui, l'aura). L'avion est, par ailleurs, un milieu où on continue à mesurer la hauteur des avions en multiples de la longueur du pied de je ne sais quel roi anglo-saxon : c'est-à-dire, un monde complètement enfermé dans ses habitudes absurdes et incapable d'évoluer. (Je pourrais aussi raconter que les systèmes de réservation des places des compagnies aériennes sont, encore de nos jours, écrits en assembleur IBM/360 et échangent des données en EBCDIC. Ça va très bien avec l'usage du pied et du mille comme unités de mesure pour démontrer l'état d'esprit de tout le milieu.) Bref, je ne sais pas si je fais confiance aux constructeurs d'avions pour avoir fait les choses correctement au départ en ce qui concerne la sécurité informatique, mais je suis persuadé d'une chose : s'ils n'ont pas fait les choses correctement au départ, alors ils vont tout faire pour le cacher, et surtout ne rien changer, nier le problème, menacer ceux qui en parlent de procès en diffamation, etc.

Mais bon, au-delà des petites turpitudes du monde de l'aviation, de façon plus large, ceci doit nous inviter à méditer sur ce problème qui se pose de façon de plus en plus aiguë : nous sommes incapables d'écrire du code informatique sûr, et nous avons besoin de quantités de plus en plus gigantesques de code informatique. Je ne sais pas où nous allons au juste comme ça, mais c'est inquiétant, parce que dans le monde de l'Internet des objets, on devra se soucier en permanence de la sécurité logicielle de chacun des objets qui nous entourent — bof.

↑Entry #2298 [older| permalink|newer] / ↑Entrée #2298 [précédente| permalien|suivante] ↑

[Index of all entries / Index de toutes les entréesLatest entries / Dernières entréesXML (RSS 1.0) • Recent comments / Commentaires récents]