Pesquisadores da Universidade de Cambridge revelaram uma vulnerabilidade que afeta muitos compiladores de código modernos. O trabalho, intitulado Trojan Source, descreve um ataque insidioso no qual os invasores podem ocultar códigos maliciosos direcionados em fontes de software.

Imagem: Gerd Altmann / Pixabay

O ataque depende de como os compiladores lidam com os identificadores Unicode usados ​​para determinar a orientação do texto (da esquerda para a direita ou vice-versa). O ponto fraco é o algoritmo Unicode Bidi, que permite combinar palavras escritas da direita para a esquerda e da esquerda para a direita. Por exemplo, graças a este algoritmo, você pode combinar palavras em árabe e inglês. Também permite que o texto da direita para a esquerda seja lido da esquerda para a direita e vice-versa.

Em alguns casos, a ordem definida pelo algoritmo Bidi não é suficiente para alternar a ordem de exibição dos grupos de caracteres e, em tais casos, são usados ​​caracteres de controle especiais. Substituir Bidi torna possível exibir até mesmo caracteres individuais em uma ordem diferente de sua codificação lógica.

A exploração da vulnerabilidade pode permitir a adição de comandos que serão exibidos como parte de um comentário ou linha quando um programador verificar o código. A fonte observa que ataques anteriores desse tipo foram usados ​​para mascarar as extensões de arquivo de malware distribuído por e-mail durante campanhas de phishing. Essa abordagem permite que você insira vulnerabilidades no código-fonte e, se elas não fizerem alterações significativas na lógica, não será fácil detectá-las ao verificar o código.

Os pesquisadores divulgaram os dados de seu trabalho ao público alguns meses após sua conclusão. Durante esse tempo, vários patches foram preparados para corrigir o problema dos desenvolvedores que usam a linguagem Rust. Recomendações adicionais para resolver esse problema para outras linguagens de programação serão publicadas em uma data posterior.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *