2 pontos por GN⁺ 2024-01-29 | 1 comentários | Compartilhar no WhatsApp
  • Foi confirmada uma vulnerabilidade de DoS no banheiro acessível dos trens britânicos Class 800, explorando o momento em que o estado da porta e a detecção da alavanca de trava ficam dessincronizados, fazendo com que a porta trave assim que se fecha
  • O projeto anterior com botões separava “fechar” e “travar”, evitando situações em que alguém pudesse trancar o banheiro por fora, mas era fácil para o usuário se confundir sobre o estado da trava
  • O projeto mais recente com alavanca é mais intuitivo, mas o método da Hitachi, em vez de retornar a alavanca, bloqueia o movimento com um pino metálico, criando uma folga entre o jogo da alavanca e a interpretação do controlador
  • A reprodução consiste em, depois de fechar a porta, mover a alavanca apenas o suficiente para que o pino de trava não engate, abrir a porta novamente para fazer o pino sair no vazio e então mover a alavanca para a posição de travado
  • Em um dos testes, o controlador da porta entrou em modo out-of-order, mas a demonstração só foi realizada quando não havia ninguém esperando e o trem tinha vários banheiros

Estrutura de trava da porta do banheiro no Class 800

  • Os trens britânicos Class 800 têm banheiros acessíveis com portas motorizadas
  • Os banheiros da geração anterior usavam uma estrutura com botões open, close e lock no interior
    • O usuário precisava apertar close, esperar a porta fechar e então apertar lock
    • Não havia botão separado de unlock; ao apertar o botão interno open, a trava era liberada automaticamente e a porta se abria
  • Separar “fechar” e “travar” pode impedir um ataque de negação de serviço em que alguém aperta close e sai antes de a porta fechar, tornando o banheiro permanentemente indisponível
  • Em compensação, isso era confuso para usuários não acostumados com máquinas de estado, podendo causar situações em que a porta não era travada corretamente ou a pessoa achava que estava travada quando não estava

Vulnerabilidade surgida no sistema de trava por alavanca

  • Os banheiros acessíveis mais recentes costumam usar uma alavanca em vez de botões para travar a porta
    • Isso é mais intuitivo para o usuário
    • No entanto, essa alavanca não é uma alavanca mecânica ligada diretamente ao mecanismo de trava, mas sim uma entrada para um microcontrolador
  • Em alguns trens britânicos, quando se tenta mover a alavanca para a posição de travado com a porta aberta, a alavanca volta para a posição unlocked, tratando a inconsistência de estado
  • No método da Hitachi, em vez de fazer a alavanca voltar, um pequeno pino metálico se projeta para fixá-la na posição unlocked quando ela não deveria ser movida para a posição de travado
  • A vulnerabilidade surge da folga entre o ponto em que a alavanca é detectada como “travada” e o ponto em que o pino metálico realmente consegue engatar
    • Depois de fechar a porta, é possível mover a alavanca até uma posição em que o pino não engata, mas o controlador ainda não a interpreta como locked
    • Nesse estado, ao abrir a porta, o pino de trava se projeta no vazio
    • Como o pino não toca a alavanca, é possível movê-la para a posição locked
    • Depois disso, o botão close continua funcionando, e a porta trava no instante em que se fecha
  • Foi publicado um vídeo demonstrando esse problema
  • No segundo teste no Class 800, o controlador da porta do banheiro entrou em modo out-of-order
    • Isso não aconteceu no primeiro teste
    • Quando o autor desceu do trem, o banheiro já estava funcionando novamente
    • Não se sabe se houve um reset automático depois de algum tempo ou se alguém no trem o reiniciou
  • A demonstração só foi feita quando não havia ninguém esperando pelo banheiro e o trem tinha vários banheiros; o objetivo do vídeo não era de fato causar DoS no banheiro, mas mostrar que isso era possível

1 comentários

 
GN⁺ 2024-01-29
Comentários do Hacker News
  • No ensino fundamental, isso também acontecia com aquelas fechaduras analógicas de girar à mão. Do lado de fora da porta havia uma interface parecida com uma fenda de parafuso, mais ou menos assim, então uma criança que saía 5 minutos antes do fim da aula dizendo “preciso ir ao banheiro” trancava todos os cubículos pelo lado de fora com uma chave de fenda ou um Swiss Army knife, e aí todos pareciam ocupados

    • No ensino fundamental, eu trancava a porta por dentro do cubículo e depois passava por cima para sair
  • Uma vez, enquanto eu usava o banheiro em um trem na Suécia, a porta elétrica começou a abrir. A maçaneta estava ao alcance, então tentei empurrá-la para fechar, mas no fim tive que priorizar subir as calças
    O banheiro daquele vagão era maior do que um assento duplo comum, e do lado de fora havia até assentos virados para o banheiro. Foi bem constrangedor, mas todo mundo nasce pelado, então acabou virando uma história engraçada, e eu não fiquei curioso a ponto de voltar para descobrir a causa; simplesmente voltei ao meu lugar e tentei fingir que ninguém tinha visto

    • Os trens da família Pendolino no Reino Unido, pelo menos na época em que eram operados pela Virgin, eram famosos por um loop vibratório de abre/fecha. Depois de sair de cada estação, a equipe chegava a anunciar quais banheiros de quais vagões estavam funcionando, e também era comum pedirem desculpas pelo cheiro em outros vagões
  • Antigamente, na Austrália, havia aparelhos que pareciam uma tentativa inicial de telefone público digital, e alguns ainda existem, embora eu ache que não vão durar muito. Se você mantivesse pressionado o botão de idioma antes e durante o ato de tirar o fone do gancho, o telefone público mostrava “Out of Order”, e a mensagem permanecia mesmo depois de recolocar o fone no gancho, até a próxima pessoa tirar o fone Como bons estudantes do ensino médio, adotamos uma abordagem puramente científica para arruinar a vida de muita gente. Se deixássemos 2 de 3 telefones públicos “desligados” desse jeito, ninguém investigava os fones supostamente quebrados o suficiente para reverter o estado, e uma longa fila se formava diante do único que funcionava. Mas, se desligássemos os 3, usuários irritados testavam os fones e acabavam fazendo todos voltarem ao normal; foi um estudo reproduzível em praticamente todos os conjuntos de telefones públicos do nosso bairro

  • Um certo vagão usado em linhas do Reino Unido, acho que vi perto de Bradford, tinha exatamente esse erro de design no botão interno de fechar.
    Eu tenho o reflexo de apertar “fechar” ao sair, por hábito de deixar as coisas arrumadas, então precisava tomar muito cuidado; acho que, na primeira vez que usei, acabei apertando de fato e só percebi o que tinha feito com os outros passageiros depois de ouvir o clique

    • Deve ter sido um class 333
  • Há também um aspecto psicológico em tornar fechar e trancar ações separadas. Alguns trens na Dinamarca têm apenas um botão de “fechar”, o que é bem desconcertante à primeira vista

  • É verdade que o design antigo confundia as pessoas, mas não sei por que não escolheram a solução óbvia de adicionar um botão de destravar. Ou então poderiam ter usado uma fechadura mecânica em que as pessoas claramente pudessem confiar
    A pior fechadura de banheiro que já vi era um botão estranho que trancava ao ser pressionado, mas passava tão pouca confiança sobre estar de fato trancado que o dono colocou uma placa explicando exatamente como trancar a porta e que ela realmente ficava trancada

    • Uma modificação muito mais fácil seria colocar uma etiqueta “Open/Unlock” ao lado do botão de abrir
  • Não sei qual era o problema das antigas fechaduras mecânicas dos banheiros de trem. Muitos passageiros, especialmente os mais velhos, têm dificuldade para usar corretamente esses dispositivos elétricos sofisticados; já houve muitos constrangimentos por portas que na prática não estavam trancadas, e algumas pessoas parecem achar divertido quebrá-los de propósito
    Às vezes alguém realmente precisa ir com urgência e precisa de um banheiro funcionando dentro do trem

    • Ainda não sou idoso, mas já sofri com uma porta de banheiro de trem parecida. Por que esse aparelho idiota precisa de um botão de trancar separado? Em que situação alguém entraria no banheiro, apertaria “fechar a porta” e não quereria que a porta trancasse?
      O design dos botões também não era particularmente claro. Entendo a vantagem de um mecanismo elétrico de abertura e fechamento, já que a porta de correr é pesada, mas a trava deveria ter sido física, ou no mínimo se comportar como uma trava física
    • Provavelmente esse tipo de porta de correr arredondada ocupa muito menos espaço do que uma porta manual. O problema é que fechar manualmente uma porta de correr arredondada pode ser muito pesado, especialmente para usuários de cadeira de rodas
      Para que usuários com deficiência também possam operar tudo da forma mais autônoma possível em um processo privado como usar o banheiro, é provável que esse sistema fosse praticamente a única opção
    • O contexto aqui é um banheiro projetado para pessoas com deficiência. Algumas deficiências tornam muito difícil operar trincos ou alavancas, e nesse contexto apertar um botão é considerado uma forma de acionamento mais acessível
    • Como experimento mental, em uma fechadura mecânica o condutor teria mais dificuldade para abrir em uma emergência, e ela poderia quebrar com mais frequência porque pessoas empurrariam a porta enquanto alguém estivesse usando. Se você estiver familiarizado com o sistema, um botão a mais pode ser mais conveniente em uma urgência, e menos contato com maçanetas ou trincos também ajuda na limpeza
      Além disso, nas estações, ela pode ser trancada automaticamente para que as pessoas só a usem entre estações, reduzindo o mau cheiro durante o embarque e desembarque
    • O único problema das antigas fechaduras mecânicas era que elas não eram “modernas” o suficiente, ou seja, eram simples e previsíveis demais
      Dito isso, se não houver intertravamento, até uma fechadura mecânica pode ser facilmente colocada em estado de negação de serviço. Quem já trancou um carro ou prédio deixando a chave dentro certamente se lembra disso
  • Esse tipo de hack mecânico é sempre divertido de descobrir. Mas a pessoa infeliz esperando pelo banheiro e descobrindo que ele está trancado embora não haja ninguém dentro também posso ser eu
    Essas coisas são mais difíceis de testar e não são apenas um problema de software simples ou de máquina de estados. Existem “hacks” mecânicos realmente perigosos, como o caso do aparelho de radioterapia Therac-25, que administrava doses incorretas de radiação

    • Parece mais próximo de colocar cola no buraco da fechadura do carro de alguém, tornando-o muito difícil de abrir, e então dizer: “veja, isso não é seguro”
  • Não entendo por que é preciso colocar microcontroladores em tudo. Banheiros de trem têm basicamente o mesmo caso de uso dos banheiros de avião, e em todos os aviões em que já estive havia uma trava deslizante à moda antiga, que funcionava sem problemas
    Fico me perguntando se o banheiro de trem mencionado no texto original tem um temporizador para impedir que alguém ocupe o banheiro durante toda a viagem, e se por isso uma trava mecânica não serviria

    • A obsessão por microcontroladores existe mesmo. O mesmo vale para o desejo de fazer tudo por software em vez de mecanicamente; as telas sensíveis ao toque nos carros são um exemplo. Como desenvolvedor, entendo bem a mentalidade de querer tornar tudo definido por software para poder mudar tudo depois, se necessário, mas isso parece estar levando a resultados cada vez piores
      Ouvi dizer que os “superloos”, banheiros públicos autolimpantes instalados nas calçadas, têm limite de tempo e reproduzem um aviso de voz alguns minutos antes de abrirem. Mais preocupantes são os casos em que a limpeza automática começou com alguém lá dentro. Se a pessoa anterior segura a porta para economizar dinheiro e deixa a próxima entrar, o banheiro entende que está vazio e, na prática, tenta afogar o usuário “não registrado”
    • Essas travas de portas de trem também comunicam o estado para a luz indicadora de ocupado na parte da frente do trem. Assim você sabe onde fica o banheiro livre mais próximo e pode decidir se aguenta mais um pouco ou, se for urgente, vai até um vagão mais distante
      Além disso, quando não estão em uso, elas fecham a porta automaticamente para conter odores. O principal motivo é que a porta não é amigável para cadeirantes. Muitos usuários de cadeira de rodas não têm força ou destreza suficiente para mover a porta. É bem difícil projetar um sistema de porta mecânica que satisfaça esses três requisitos, mas a UI certamente poderia ser melhor
      Pessoalmente, eu teria feito de modo que fosse necessário manter pressionado o botão “fechar” durante todo o fechamento da porta. Se a pessoa soltasse o botão no meio, ela abriria de novo, e só depois de totalmente fechada permaneceria fechada e “trancada”. Não seria necessária uma trava mecânica de verdade, mas deveria haver uma grande luz vermelha de cadeado acesa
    • Boa parte disso se deve à redução do custo de componentes. Dá para colocar uma trava solenoide robusta e controle por microprocessador por menos do que custaria um sistema totalmente mecânico robusto. Sistemas mecânicos exigem manutenção mecânica e ficam expostos a todo tipo de entrada indevida, como pessoas colocando todo o peso do corpo sobre a alavanca
      Botões nivelados com a superfície ou alavancas de perfil baixo como a da foto têm pouco peso e pouco curso, e não precisam oferecer vantagem mecânica, então podem ser mais robustos contra certos ataques mecânicos. Quando possível, prefiro mecanismos simples sem software, mas não sou eu quem lida diretamente com os problemas de custo e confiabilidade
    • Um pouco relacionado: acabei de descobrir que o Boeing 737MAX substitui o teclado CDU da cabine por uma tela sensível ao toque que imita o mesmo teclado
      https://www.gableseng.com/wp-content/uploads/2020/05/G7330-....
      Fiquei sem palavras
    • Eu também pensava de forma parecida, mas mudei de ideia depois de ler e refletir que, na prática, para pessoas com problemas motores ou musculares, um botão de pressão ou um dispositivo como a alavanca acima é muito mais fácil, porque não exige força física
      Acho que o motivo original para introduzir botões foi a acessibilidade, e entendo que aviões mais modernos também estão tentando migrar para sistemas semelhantes pelo mesmo motivo
  • Os banheiros de trem no Reino Unido são um clássico de coletânea de maus exemplos de design. Há pessoas que não conseguem trancar a porta e ficam expostas ao vagão, pessoas que não conseguem fechá-la e pessoas que não conseguem abri-la
    Isso quando você consegue chegar ao banheiro e o usuário anterior não o deixou destruído

    • Os banheiros antigos eram muito menores, podiam ser abertos e fechados rapidamente com uma maçaneta comum e tinham uma trava grande e simples. Mas esse modelo não serve para alguns passageiros, por exemplo usuários de cadeira de rodas ou pessoas com dificuldade para segurar uma maçaneta
      Ao tornar o banheiro mais acessível para um grupo, ele pode se tornar menos acessível para outro. É uma questão de decidir qual nível a sociedade escolhe. Alguns trens no Reino Unido têm um equilíbrio razoável, com um banheiro grande acessível para cadeirantes e um banheiro pequeno tradicional, mas muitas vezes têm dificuldade em informar isso aos passageiros