FacebookTwitterLinkedIn

Falha em compiladores facilita ataques ‘supply chain’

https://network-king.net/wp-content/uploads/2021/11/attack49-769x414.jpg

Pesquisadores da Universidade de Cambridge identificaram uma falha que afeta a maioria dos compiladores e permite introduzir nos programas em desenvolvimento vulnerabilidades invisíveis aos olhos humanos. Essas vulnerabilidades direcionadas podem abrir caminho para disparar ataques do tipo supply chain, que se tornaram mais conhecidos depois do caso envolvendo a empresa SolarWinds, que veio à tona no final de 2020 com uma enxurrada de sistemas comprometidos em empresas do setor privado e importantes agências do governo dos Estados Unidos.

Em um artigo intitulado “Trojan Source: Invisible Vulnerabilities“, os pesquisadores explicam que sistemas em desenvolvimento, como os de código aberto, contam com a revisão humana para detectar contribuições mal-intencionadas de voluntários.

Então, como é possível enganar os compiladores para que gerem códigos binários que não correspondam ao que está sendo programado, os chamados cavalos de Troia na forma de código-fonte? Foram descobertos alguns truques para manipular os arquivos de código-fonte para que revisores humanos e compiladores vejam lógicas diferentes. Segundo os pesquisadores, esse ataque funciona com as linguagens C, C ++, C #, JavaScript, Java, Rust, Go e Python. Há suspeitas de que funcionem com maioria das outras linguagens modernas.

O ponto fraco tem a ver com o  componente Unicode e o seu algoritmo bidirecional ou “Bidi”. Em detalhes, Unicode é o padrão que faz a correspondência entre um caractere e um número exclusivo, compreensível pelos computadores, independentemente da plataforma, programa ou idioma. Já o algoritmo Bidi lida com as diferenças de sentido da exibição dos textos – por exemplo, quando uma frase em inglês, que se lê da esquerda para a direita, é citada em um jornal árabe, cujo idioma é interpretado da direita para esquerda.

Fonte: Outro artigo dos pesquisadores de Cambridge – Ataque usando reordenamento em um sistema de tradução automática. O círculo vermelho indica a sequência de caracteres codificado em ordem contrária 

Essa brecha já havia sido explorada há mais de 10 anos para disfarçar as extensões de arquivos de malware disseminados por e-mail.

No caso específico de compiladores e as linguagens de programação, os caracteres de controle da ordem de exibição podem ser usados livremente, de forma aparentemente inócua e longe dos olhos de revisores. Várias camadas de sequência de texto e desses códigos  podem fazer uma reordenação aparentemente aleatória, mas que, na verdade, é um anagrama de uma lógica refinada.  Em geral, compiladores não processam caracteres de controle de formatação, incluindo os códigos Bidi, então essa brecha pode ser explorada para arquitetar instruções que não serão captadas visualmente.  A maioria das linguagens de programação bem elaboradas não permite o uso de caracteres de controle arbitrários no código-fonte, pois são vistos como capazes de afetar a lógica programada. Nesses casos, a introdução de caracteres de controle Bidi no código-fonte vai normalmente resultar em um erro de sintaxe.

No artigo, os pesquisadores apontam que contramedidas podem ser tomadas em vários níveis, desde a especificação da linguagem e do compilador até o repositório de códigos e pipeline de desenvolvimento. Também acreditam que uma solução de longo prazo para o problema será implantada nos próprios compiladores. Segundo eles, quase todos já se defendem contra criação de funções com nomes com zero caracteres, por exemplo. Outros já acusam erros em resposta a truques que exploram homóglifos em nomes de funções.

Além disso, os pesquisadores afirmam ter feito uma divulgação responsável para todas as empresas e organizações responsáveis pelos produtos nos quais foram descobertas as vulnerabilidades. Dizem ter oferecido a elas um embargo de 99 dias após a primeira divulgação para permitir que os produtos afetados fossem corrigidos. Várias foram as respostas, desde compromissos de correção e recompensas por bugs até demissão sumária e referências a políticas legais.

FacebookTwitterLinkedIn