2 points par GN⁺ 2024-01-29 | 1 commentaires | Partager sur WhatsApp
  • Dans les toilettes accessibles aux personnes handicapées des trains britanniques Class 800, une vulnérabilité DoS a été confirmée : elle exploite l’instant où l’état de la porte et l’interprétation du levier de verrouillage divergent, de sorte que la porte se verrouille dès qu’elle se ferme
  • L’ancienne conception à boutons séparait « fermer » et « verrouiller », empêchant qu’une personne verrouille les toilettes depuis l’extérieur, mais les utilisateurs pouvaient facilement se tromper sur l’état du verrouillage
  • La conception récente à levier est plus intuitive, mais dans l’approche de Hitachi, le levier n’est pas ramené en arrière : son mouvement est bloqué par une broche métallique, ce qui crée un jeu entre la course du levier et l’interprétation par le contrôleur
  • Pour reproduire le problème, il faut fermer la porte, déplacer le levier juste assez pour que la broche de verrouillage ne s’engage pas, rouvrir la porte afin que la broche sorte dans le vide, puis placer le levier en position verrouillée
  • Lors d’un test, le contrôleur de la porte est passé en mode out-of-order, mais la démonstration n’a été réalisée que lorsqu’il n’y avait personne en attente et que le train disposait de plusieurs toilettes

Mécanisme de verrouillage des portes des toilettes des Class 800

  • Les trains britanniques Class 800 disposent de toilettes accessibles aux personnes handicapées équipées de portes électriques
  • Les toilettes de génération précédente avaient à l’intérieur des boutons open, close et lock
    • L’utilisateur devait appuyer sur close, attendre que la porte se ferme, puis appuyer sur lock
    • Il n’y avait pas de bouton unlock séparé : appuyer sur le bouton intérieur open déverrouillait automatiquement la porte puis l’ouvrait
  • Séparer « fermer » et « verrouiller » permet d’empêcher une attaque par déni de service où quelqu’un appuierait sur close puis sortirait avant la fermeture de la porte, rendant les toilettes durablement inutilisables
  • En contrepartie, cela prêtait à confusion pour les utilisateurs peu familiers avec une machine à états, avec des situations où la porte n’était pas correctement verrouillée, ou où l’utilisateur pensait à tort qu’elle l’était

La vulnérabilité apparue avec le verrouillage à levier

  • Les toilettes accessibles récentes utilisent souvent un levier plutôt que des boutons pour verrouiller la porte
    • C’est plus intuitif pour l’utilisateur
    • Mais ce levier n’est pas un levier mécanique directement relié au dispositif de verrouillage : c’est une entrée pour microcontrôleur
  • Dans certains trains britanniques, si l’on tente de déplacer le levier en position verrouillée alors que la porte est ouverte, le levier revient en position unlocked afin de gérer l’incohérence d’état
  • Dans l’approche de Hitachi, au lieu de ramener le levier en arrière, une petite broche métallique sort et maintient le levier en position unlocked lorsqu’il ne devrait pas pouvoir être déplacé en position de verrouillage
  • La vulnérabilité vient du jeu entre le point où le levier est détecté comme « verrouillé » et le point où la broche métallique peut effectivement s’engager
    • Après avoir fermé la porte, on peut déplacer le levier jusqu’à une position où la broche ne s’engage pas, tout en restant à un endroit que le contrôleur ne lit pas encore comme locked
    • Si l’on ouvre alors la porte, la broche de verrouillage sort dans le vide
    • Comme la broche ne touche pas le levier, celui-ci peut être déplacé en position locked
    • Ensuite, le bouton close continue de fonctionner, et la porte se verrouille dès qu’elle se ferme
  • Une vidéo démontrant ce problème a été publiée
  • Lors du deuxième test sur une Class 800, le contrôleur de la porte des toilettes est passé en mode out-of-order
    • Cela ne s’était pas produit lors du premier test
    • Quand l’auteur est descendu du train, les toilettes fonctionnaient de nouveau
    • On ne sait pas si elles se sont réinitialisées automatiquement après un certain temps, ou si quelqu’un à bord du train les a réinitialisées
  • La démonstration n’a été réalisée que lorsqu’il n’y avait personne à proximité attendant les toilettes et que le train disposait de plusieurs toilettes ; l’objectif de la vidéo n’était pas de provoquer réellement un DoS sur les toilettes, mais d’en montrer la possibilité

1 commentaires

 
GN⁺ 2024-01-29
Avis sur Hacker News
  • À l’école primaire, ça arrivait aussi avec des verrous analogiques qu’on tournait à la main. À l’extérieur de la porte, il y avait une interface en forme de fente de vis comme celle-ci ; un élève qui sortait cinq minutes avant la fin du cours en disant « je dois aller aux toilettes » verrouillait toutes les cabines depuis l’extérieur avec un tournevis ou un Swiss Army knife, et toutes les cabines semblaient alors occupées.

    • À l’école primaire, je verrouillais la porte depuis l’intérieur de la cabine, puis je passais par-dessus pour sortir.
  • Une fois, dans un train suédois, alors que j’étais aux toilettes, la porte électrique a commencé à s’ouvrir. La poignée était à portée, donc j’ai essayé de la repousser pour la fermer, mais au final j’ai dû privilégier le fait de remonter mon pantalon.
    Les toilettes de cette voiture étaient plus grandes qu’une banquette classique de deux places, et il y avait même, à l’extérieur, des sièges orientés vers les toilettes. C’était assez embarrassant, mais comme on naît tous nus, c’est devenu une anecdote amusante ; je n’étais pas assez curieux de la cause pour y retourner, donc je suis simplement revenu à ma place en faisant autant que possible comme si de rien n’était.

    • Au Royaume-Uni, les trains de la famille Pendolino avaient mauvaise réputation, au moins à l’époque où ils étaient exploités par Virgin, à cause d’une boucle de vibrations ouverture/fermeture répétée. Après chaque départ de gare, le personnel annonçait quelles toilettes de quelle voiture fonctionnaient, et il était courant qu’ils s’excusent pour les odeurs dans les autres voitures.
  • Autrefois, en Australie, il existait des appareils qui ressemblaient à une tentative précoce de téléphone public numérique ; certains sont encore là, mais sans doute plus pour longtemps. Si l’on maintenait le bouton de langue enfoncé avant de décrocher et pendant qu’on décrochait, le téléphone affichait « Out of Order », et même après avoir raccroché, le message restait jusqu’à ce que quelqu’un décroche à nouveau.
    En bons lycéens, nous avions une approche purement scientifique pour gâcher la vie du plus grand nombre. Si l’on mettait hors service de cette façon seulement deux téléphones sur trois, personne n’examinait assez le combiné en panne pour rétablir l’état, et une longue file se formait devant celui qui fonctionnait. Mais si l’on désactivait les trois, des usagers en colère testaient les combinés et les remettaient tous en état normal ; c’était une étude reproductible sur presque tous les groupes de téléphones publics de notre quartier.

  • Sur une voiture utilisée sur des lignes britanniques, que j’ai probablement vue près de Bradford, le bouton fermer à l’intérieur avait exactement ce genre de défaut de conception.
    Comme j’ai le réflexe d’appuyer sur « fermer » en sortant, par souci de laisser les choses en ordre, je devais vraiment faire attention ; la première fois que je l’ai utilisée, je crois que j’ai effectivement appuyé dessus et que ce n’est qu’en entendant le clic que j’ai compris ce que je venais d’infliger aux autres voyageurs.

    • C’était sans doute une class 333.
  • Le fait de faire de la fermeture et du verrouillage deux actions distinctes a aussi une dimension psychologique. Dans certains trains danois, il n’y a qu’un bouton « fermer », ce qui est assez déroutant la première fois.

  • C’est vrai que l’ancien design embrouillait les gens, mais je ne comprends pas pourquoi ils n’ont pas choisi la solution évidente : ajouter un bouton de déverrouillage. Ou alors utiliser un verrou mécanique dans lequel les gens peuvent clairement avoir confiance.
    Le pire verrou de toilettes que j’aie vu était un bouton bizarre sur lequel on appuyait pour verrouiller ; il inspirait si peu confiance qu’il était impossible de savoir s’il était vraiment verrouillé, au point que le propriétaire avait mis un panneau expliquant exactement comment verrouiller la porte et assurant qu’elle était bien verrouillée.

    • Une modification beaucoup plus simple consisterait à mettre l’étiquette « Open/Unlock » à côté du bouton d’ouverture.
  • Je ne vois pas ce qui n’allait pas avec les anciens verrous mécaniques des toilettes de train. Beaucoup de passagers, surtout âgés, ont du mal à utiliser correctement ces dispositifs électriques sophistiqués, il y a eu pas mal de situations gênantes avec des portes qui n’étaient en fait pas verrouillées, et certains semblent trouver amusant de les saboter volontairement.
    Il arrive que quelqu’un ait vraiment une urgence et ait besoin de toilettes qui fonctionnent dans le train.

    • Je ne suis pas encore vieux, mais j’ai déjà galéré avec une porte de toilettes de train similaire. Pourquoi ce fichu dispositif a-t-il besoin d’un bouton de verrouillage séparé ? Quand on entre dans des toilettes et qu’on appuie sur « fermer la porte », dans quelle situation ne voudrait-on pas qu’elle se verrouille ?
      Le design des boutons n’était pas particulièrement clair non plus. Je comprends l’intérêt d’un mécanisme électrique d’ouverture/fermeture, puisque la porte coulissante est lourde, mais le verrouillage aurait dû être physique, ou au moins se comporter comme un mécanisme physique.
    • Ces portes coulissantes arrondies prennent probablement beaucoup moins de place qu’une porte à fermeture manuelle. Le problème, c’est qu’une porte coulissante arrondie peut être très lourde à fermer manuellement, surtout pour les personnes en fauteuil roulant.
      Pour permettre aux personnes handicapées de gérer le plus possible elles-mêmes un processus privé comme l’usage des toilettes, il est probable que ce type de solution ait été pratiquement la seule option.
    • Le contexte ici est celui de toilettes conçues pour les personnes handicapées. Certains handicaps rendent très difficile la manipulation d’un loquet ou d’un levier, et dans ce contexte, appuyer sur un bouton est considéré comme une commande plus accessible.
    • Comme expérience de pensée, un mécanisme mécanique est plus difficile à ouvrir rapidement par le contrôleur en cas d’urgence, et peut tomber en panne plus souvent si des gens poussent sur la porte pendant qu’elle est occupée. Si l’on connaît le système, un bouton unique peut être plus pratique en cas d’urgence, et le fait de moins toucher les poignées ou les loquets facilite aussi l’hygiène.
      De plus, en gare, on peut verrouiller automatiquement les toilettes afin que les gens ne les utilisent qu’entre deux gares, ce qui réduit les mauvaises odeurs pendant l’attente à la montée et à la descente.
    • Le seul problème des anciens verrous mécaniques était qu’ils n’étaient pas assez « modernes » : autrement dit, ils étaient trop simples et prévisibles.
      Cela dit, sans interverrouillage, un verrou mécanique peut lui aussi être facilement mis en état de déni de service. Quiconque s’est déjà retrouvé enfermé dehors après avoir laissé ses clés à l’intérieur d’une voiture ou d’un bâtiment s’en souvient sûrement.
  • Ces hacks mécaniques sont toujours amusants quand on les découvre. Cela dit, la personne malchanceuse qui attend les toilettes pour découvrir qu’elles sont verrouillées alors qu’il n’y a personne dedans, ça pourrait très bien être moi.
    Ces choses sont plus difficiles à tester, et ce n’est pas seulement un problème de logiciel simple ou de machine à états. Il existe aussi des « hacks » mécaniques vraiment dangereux : les appareils de radiothérapie comme le Therac-25, qui administraient de mauvaises doses de rayonnement, en sont un exemple.

    • Ça ressemble plutôt à quelqu’un qui met de la colle dans la serrure de la voiture d’une autre personne, la rendant très difficile à ouvrir, puis dit : « vous voyez, ce n’est pas sûr ».
  • Je ne comprends pas pourquoi il faut mettre des microcontrôleurs partout. Les toilettes de train ont fondamentalement le même cas d’usage que les toilettes d’avion, et tous les avions que j’ai pris avaient un verrou coulissant à l’ancienne qui fonctionnait sans problème.
    Je me demande si les toilettes de train mentionnées dans l’article ont un minuteur qui empêche quelqu’un de les occuper pendant tout le trajet, ce qui rendrait impossible un verrou mécanique.

    • L’obsession des microcontrôleurs existe bel et bien. Tout comme l’envie de tout faire en logiciel plutôt qu’en mécanique ; les écrans tactiles dans les voitures en sont un exemple. En tant que développeur, je comprends bien l’état d’esprit qui pousse à tout rendre défini par logiciel pour pouvoir tout modifier plus tard si nécessaire, mais j’ai l’impression que cela mène de plus en plus à de mauvais résultats.
      J’ai entendu dire que les « superloos », ces toilettes autonettoyantes installées sur la voie publique, ont une limite de temps et diffusent un avertissement vocal quelques minutes avant l’ouverture. Plus inquiétant encore, il y a eu des cas où le nettoyage automatique a démarré alors que quelqu’un était à l’intérieur. Si la personne précédente maintient la porte ouverte pour faire entrer la suivante et économiser de l’argent, les toilettes considèrent qu’elles sont vides et tentent en quelque sorte de noyer l’utilisateur « non déclaré ».
    • Ces verrous de portes de train transmettent aussi leur état aux voyants d’occupation à l’avant du train. On peut ainsi savoir où se trouvent les toilettes libres les plus proches, et décider si l’on peut encore attendre un peu ou s’il faut aller plus loin dans une autre voiture en cas d’urgence.
      De plus, la porte se ferme automatiquement quand les toilettes ne sont pas utilisées, afin de contenir les odeurs. La principale raison est que la porte n’est pas adaptée aux fauteuils roulants. Beaucoup d’utilisateurs de fauteuil roulant n’ont pas la force ou l’agilité nécessaires pour la manœuvrer. Concevoir un système de porte mécanique qui satisfasse ces trois contraintes est assez difficile, mais l’interface pourrait clairement être meilleure.
      Personnellement, j’aurais sans doute conçu le système de façon à devoir maintenir le bouton « fermer » enfoncé pendant toute la fermeture. Si on relâche le bouton en cours de route, la porte se rouvre ; elle ne reste fermée et « verrouillée » qu’une fois complètement fermée. Un vrai verrou mécanique n’est pas nécessaire, mais il faudrait un gros voyant rouge en forme de cadenas qui s’allume.
    • Cela tient en grande partie à la réduction du coût des composants. On peut intégrer un verrou à solénoïde robuste et un contrôle par microprocesseur pour moins cher qu’un système entièrement mécanique robuste. Un système mécanique nécessite de la maintenance mécanique et subit toutes sortes de mauvaises sollicitations, comme des gens qui mettent tout leur poids sur le levier.
      Un bouton affleurant ou un levier bas comme celui qu’on voit sur la photo a peu de masse et de course, et n’a pas besoin de fournir un avantage mécanique ; il peut donc être plus résistant à certaines attaques mécaniques. Quand c’est possible, je préfère les mécanismes simples sans logiciel, mais je ne suis pas celui qui doit gérer directement les questions de coût et de fiabilité.
    • Dans un registre un peu lié, je viens d’apprendre que le Boeing 737 MAX remplace le clavier CDU du cockpit par un écran tactile qui imite ce même clavier.
      https://www.gableseng.com/wp-content/uploads/2020/05/G7330-....
      Je suis sans voix.
    • Je pensais à peu près la même chose, mais j’ai changé d’avis après avoir lu qu’en réalité, pour les personnes ayant des troubles moteurs ou musculaires, un bouton-poussoir ne demandant pas de force physique, ou un dispositif comme le levier ci-dessus, est beaucoup plus facile à utiliser.
      Il me semble que la raison initiale de l’introduction des boutons était l’accessibilité, et je crois comprendre que les avions récents cherchent à passer à des systèmes similaires pour la même raison.
  • Les toilettes des trains britanniques sont un classique des recueils de mauvais design. Des personnes qui n’arrivent pas à verrouiller la porte se retrouvent exposées au compartiment, d’autres n’arrivent pas à la fermer, et d’autres encore n’arrivent pas à l’ouvrir.
    Tout cela, c’est quand on parvient jusqu’aux toilettes et que l’utilisateur précédent ne les a pas laissées dans un état lamentable.

    • Les anciennes toilettes étaient beaucoup plus petites, pouvaient s’ouvrir et se fermer rapidement avec une poignée ordinaire, et avaient un gros verrou simple. Mais ce système ne convient pas à certains passagers, par exemple les personnes en fauteuil roulant ou celles qui ont du mal à saisir une poignée.
      Améliorer l’accessibilité des toilettes pour un groupe peut la réduire pour un autre. C’est à la société de décider quel compromis elle accepte. Certains trains britanniques trouvent un équilibre correct en proposant à la fois de grandes toilettes accessibles en fauteuil roulant et de petites toilettes traditionnelles, mais ils ont souvent du mal à bien l’indiquer.