- No fluxo de autenticação KCM/CASS da TSA, se o sistema do lado da companhia aérea fosse comprometido, seria possível adicionar usuários arbitrários como se tivessem passado na verificação de vínculo empregatício, permitindo desde burlar a triagem de segurança até acessar a cabine de comando
- O FlyCASS fornecia uma interface web do CASS para companhias aéreas menores, e uma injeção de SQL na página de login da Air Transport International permitia login de administrador
- A tela de administrador podia conceder permissões de KCM e CASS ao adicionar um novo funcionário sem verificação adicional, e um usuário de teste apareceu como aprovado em ambos os sistemas
- Após a divulgação à ARINC, FAA e DHS/CISA no fim de abril de 2024, o DHS confirmou que o FlyCASS foi separado do KCM/CASS, mas não respondeu ao pedido de correção sobre a explicação da TSA
- A TSA afirmou que o acesso ao checkpoint era impossível por causa da triagem antes da emissão do código de barras KCM, mas o procedimento real ainda mantinha um caminho de entrada manual do ID do funcionário, ampliando o impacto da falha
O que KCM e CASS verificam
- Known Crewmember (KCM) é um programa da TSA que permite que pilotos e comissários bypassiem a triagem de segurança mesmo em viagens pessoais domésticas
- O funcionário apresenta um código de barras KCM em uma fila dedicada ou informa ao agente da TSA seu número de funcionário e companhia aérea
- O laptop do agente da TSA confirma o vínculo empregatício com a companhia aérea e, se der certo, esse funcionário pode entrar na área segura sem uma triagem separada
- Cockpit Access Security System (CASS) é um sistema separado que verifica a elegibilidade para acesso à cabine de comando
- A maioria das aeronaves tem um jumpseat dentro da cabine, atrás dos pilotos em comando
- Quando pilotos estão se deslocando ou em trânsito e não conseguem usar um assento pago, podem usar o jumpseat
- O pessoal do portão usa o CASS para verificar se o usuário do jumpseat é um piloto aprovado e pode informar à tripulação que a autenticação no CASS foi confirmada
- O ponto central dos dois processos é a verificação do vínculo empregatício atual com a companhia aérea
- Se a pessoa não for funcionária da companhia, ela não terá passado por investigação de antecedentes, então não deveria poder burlar a triagem nem acessar a cabine
- Uma foto do tripulante também é retornada para confirmar que a pessoa aprovada é realmente quem diz ser
ARINC e os sistemas de autenticação de cada companhia
- ARINC é uma subsidiária da Collins Aerospace e parece operar o KCM em nome da TSA
- A ARINC opera componentes centrais como um site onde pilotos e comissários consultam seu status no KCM e uma API que roteia pedidos de aprovação entre companhias aéreas
- Cada companhia aérea aparentemente opera seu próprio sistema de autenticação para participar do KCM e do CASS, e esse sistema interage com o hub da ARINC
- A TSA e as companhias podem enviar à ARINC solicitações como
CockpitAccessRequesteCrewVerificationRequest - A ARINC encaminha a solicitação ao sistema da companhia correspondente e recebe a resposta
- A TSA e as companhias podem enviar à ARINC solicitações como
- Atualmente, 77 companhias aéreas participam do KCM
- As grandes companhias provavelmente criaram seus próprios sistemas, mas a investigação passou a focar em como as menores respondiam a solicitações do KCM ou do CASS
A injeção de SQL encontrada no FlyCASS
- Ao procurar o fornecedor que realmente operava o sistema de autenticação, os pesquisadores encontraram o site FlyCASS
- O FlyCASS oferecia uma interface web baseada em navegador para o CASS de companhias aéreas menores
- Cada companhia tinha sua própria página de login, e a Air Transport International (8C) podia ser acessada em
/ati
- Ao inserir uma aspas simples no nome de usuário da página de login, um erro do MySQL foi retornado imediatamente
- Isso sugeria que o nome de usuário era inserido diretamente na consulta SQL de login
- O problema de injeção de SQL foi confirmado com sqlmap
- Com a combinação de nome de usuário
' or '1'='1e senha') OR MD5('1')=MD5('1, era possível entrar na conta administradora da Air Transport International
Adição de usuários aprovados no KCM/CASS com privilégio de administrador
- O FlyCASS operava tanto o KCM quanto o CASS para as companhias participantes
- Depois de obter privilégios de administrador da Air Transport International, era possível gerenciar a lista de pilotos e comissários vinculados à companhia
- Ao adicionar um novo funcionário à companhia aérea, não havia confirmação ou autenticação adicional
- Um administrador da companhia podia adicionar qualquer pessoa como usuário aprovado no KCM e no CASS
- Como teste, foi criado um funcionário chamado
Test TestOnly, com uma foto de teste escolhida, e depois foram concedidas permissões de acesso ao KCM e ao CASS- Ao verificar depois com a função Query, o usuário de teste aparecia como aprovado tanto no KCM quanto no CASS
- Bastava conhecimento básico de injeção de SQL para entrar no site e adicionar usuários arbitrários ao KCM e ao CASS
- Na prática, isso poderia permitir pular a triagem de segurança e até acessar a cabine de comando de aviões comerciais de passageiros
- Logo após a descoberta do primeiro problema, o processo de divulgação foi iniciado, e vários outros problemas graves também foram encontrados
Processo de divulgação e reação da TSA
- Encontrar um contato adequado para divulgação responsável já não foi fácil
- Como o FlyCASS parecia ser operado por uma única pessoa, os pesquisadores não quiseram contatar o serviço diretamente de início e causar surpresa
- Em 23 de abril de 2024, o problema foi divulgado ao Department of Homeland Security, que confirmou estar ciente e disse que o estava levando “muito a sério”
- Depois disso, o FlyCASS foi desativado do KCM/CASS e, mais tarde, o problema aparentemente foi corrigido
- Após a correção, tentou-se coordenar uma divulgação segura, mas o DHS deixou de responder
- A assessoria de imprensa da TSA divulgou uma explicação negando o impacto da vulnerabilidade
- A TSA afirmou que, antes de emitir um código de barras KCM para um novo membro do KCM, um processo de triagem é iniciado, então essa vulnerabilidade não permitiria acesso a um checkpoint do KCM
- Porém, o código de barras KCM não é obrigatório para usar um checkpoint do KCM, e um TSO pode inserir manualmente o ID do funcionário da companhia aérea
- Depois que os pesquisadores informaram isso à TSA, a TSA removeu a seção do site que mencionava a entrada manual do ID do funcionário e não respondeu ao pedido de correção
- Foi confirmado que a interface usada pelos TSOs ainda permite entrada manual do ID do funcionário
Outros ataques possíveis e cronologia da divulgação
- Como a vulnerabilidade permitia modificar membros existentes do KCM, também era possível alterar a foto e o nome de usuários já cadastrados
- Esse método poderia contornar a triagem de novos membros mesmo que esse processo existisse
- Se fosse possível obter um código de barras KCM ainda não registrado, ele também poderia ser vinculado diretamente a um ID de funcionário no site do KCM
- Cronologia da divulgação:
- 2024-04-23: divulgação inicial à ARINC e à FAA
- 2024-04-24: divulgação adicional ao DHS via CISA
- 2024-04-25: o CISO do DHS confirmou que estava trabalhando na mitigação
- 2024-05-07: o CISO do DHS confirmou que o FlyCASS havia sido removido do KCM/CASS
- 2024-05-17: novo contato com o CISO do DHS sobre a explicação da TSA, sem resposta
- 2024-06-04: novo follow-up com o CISO do DHS sobre a explicação da TSA, novamente sem resposta
1 comentários
Opiniões no Hacker News
A resposta da TSA aqui é infantil e constrangedora, mas, considerando que é uma organização que não se importa muito com segurança de verdade, nem chega a surpreender.
O DHS parece ter lidado com a denúncia de forma rápida e profissional no início, mas é curioso que depois não tenha conseguido manter até o fim a autoridade superior sobre o processo de correção e divulgação.
Já vi problemas graves, como chaves expostas, serem tratados como coisa pequena, enquanto questões como bibliotecas JavaScript antigas ou falta de suporte a IPv6 eram escaladas.
Está claro que a TSA e suas contratadas estão tentando minimizar uma possível exposição, mas é bem provável que muitos gestores tenham dificuldade em entender o significado das vulnerabilidades, e que os desenvolvedores também estejam reduzindo a própria responsabilidade e culpando os outros.
Na prática, parece que o objetivo é consolidar um sistema de vigilância e criar uma aparência de força.
Eles não pararam em confirmar a injeção de SQL; chegaram a criar até um registro de funcionário falso, e é chocante que a Homeland Security não tenha aparecido para prender os envolvidos.
Eu achava que a Homeland Security seria justamente o lugar com maior probabilidade de confundir divulgação responsável com hacking malicioso e chamá-la assim.
Isso me impressiona mais do que a incompetência da vulnerabilidade em si.
Se eles tivessem se adicionado ao Known Crewmember e realmente burlado a triagem do aeroporto, aí sim teriam ido para a prisão.
Então os melhores talentos de outros países menos amigáveis é que vão olhar, e a chance de eles divulgarem de forma responsável é baixa.
https://bugcrowd.com/engagements/dhs-vdp
Como já existe uma relação há alguns anos, imagino que eles tenham alguma familiaridade com isso. A própria TSA pode estar menos acostumada, mas, já que o DHS opera a política de divulgação de vulnerabilidades (VDP) de todo o departamento e, por meio da CISA, aconselha outros órgãos a operarem VDPs, não acho provável que peça ao DOJ para abrir um processo.
Dito isso, talvez eu esteja sendo otimista demais.
Assim, é possível reduzir o risco de ser processado por causa de uma divulgação responsável.
Um método ainda mais seguro é enviar o relatório de forma anônima e estabelecer um prazo claro para divulgação ou divulgação completa, embora nesse caso seja difícil receber crédito pela descoberta.
O caso é tão grave que, no momento em que este texto é escrito, ninguém está nem falando sobre o quão ruim é o problema de armazenar senhas com MD5.
Neste caso, também fica claro que nem salt foi usado, e mesmo com salt o MD5 continuaria sendo insuficiente.
Mas, se uma simples requisição permite mexer livremente na própria consulta SQL, a qualidade do armazenamento das senhas acaba não importando muito.
A proporção dos que usavam salt e ainda por cima um hash criptograficamente seguro provavelmente ficava abaixo de 20%, e MD5 aparecia com muita frequência.
Considerando que já havia bastante filtragem antes dessa entrevista, a linha de base geral era ainda pior.
A explicação de que “não entraram em contato primeiro porque a FlyCASS parecia ser operada por uma única pessoa” é difícil de acreditar.
Dá a impressão de que eles sabiam que o desenvolvedor do site corrigiria imediatamente e queriam dar mais repercussão à própria descoberta.
Não é algo para o responsável corrigir discretamente e encerrar; todas as pessoas no banco de dados precisam ser verificadas novamente.
Se o único desenvolvedor tivesse corrigido imediatamente, teria sido difícil escalar o problema para a chefia e fazer com que fosse tratado de forma sistêmica.
Não sei se uma reformulação completa dessas de fato vai acontecer, mas, sem escalonamento, a chance seria ainda menor.
Não surpreende que tenham negado a gravidade do problema, mas é bem surpreendente que não tenham avisado o FBI nem tentado prender alguém.
Talvez seja um pequeno progresso.
Se tivesse denunciado diretamente à TSA, havia uma boa chance de isso resultar em ameaças legais e bravatas.
Apostaria 50 dólares que Ian será processado.
É até surpreendente que algum adolescente entediado de 17 anos com uma identidade falsa ainda não tenha postado no TikTok um vídeo embarcando escondido em um avião.
Injeção de SQL, sério.
É engraçado que uma única injeção de SQL antiquada consiga neutralizar todo um teatro de segurança que custa bilhões de dólares por ano, mas também não é tão surpreendente.
É bastante surpreendente que companhias aéreas comprem software tão sensível em termos de segurança de uma empresa de uma pessoa só
Quando você chega a certo ponto tentando vender SaaS para a maioria das empresas dos EUA, elas exigem no mínimo um relatório de auditoria SOC2
Pelos critérios de auditoria, o SOC2 costuma ser relativamente fácil de passar sem grandes apontamentos, mas, se a empresa é tocada por uma única pessoa, há vários critérios que deveriam acender luzes vermelhas no relatório
Eu imaginava que, para um software integrado a um sistema de acesso da TSA, os requisitos seriam muito mais rigorosos do que SOC2
Tudo no backend é mantido de pé com mais fita adesiva do que numa pequena empresa média
Se você compra alguns aviões de passageiros antigos e os converte em cargueiros, pode virar uma “companhia aérea”
É algo valioso que novas companhias aéreas surjam? Devemos fechá-las porque ainda não têm sistemas que levam anos ou décadas para construir? Uma empresa que opera uma única rota entre lugar nenhum e lugar nenhum, com 2 aeronaves, deveria pagar caro por sistemas sob medida para grandes companhias aéreas de passageiros?
Aqui, requisitos e auditorias não são a resposta. O problema fundamental de projeto é que a TSA combinou a autenticação de “a companhia aérea XXX diz que você é funcionário” com uma permissão extremamente ampla de “poder contornar toda a triagem de segurança em qualquer aeroporto do país”, sem nem mesmo uma verificação básica como “essa companhia aérea opera neste aeroporto?”
Também foi surpreendente que algo assim pudesse ser tão fácil, mas a explicação posterior sobre a resposta da TSA é realmente muito preocupante
As pessoas que fizeram isso provavelmente vão receber uma visita do Homeland Security ou do FBI
Não sei o que achavam que poderiam ganhar com isso
Não acho que o governo se importe com segurança, mas ele é vingativo
O método possível aqui seria comprar uma passagem de uma grande companhia aérea, colocar itens proibidos na bagagem de mão e, por meio de injeção de SQL em um sistema FlyCASS de terceiros, adicionar a si mesmo à lista de Known Crew Member de uma companhia aérea pequena para contornar a triagem da TSA
Então a vulnerabilidade seria embarcar em um avião de grande porte levando itens proibidos?
Hoje em dia, a maioria das filas de triagem da TSA nem exige cartão de embarque, então, em tese, você poderia levar uma bomba e contornar todo esse teatro de segurança