Pesquisadores da Universidade de Cambridge no Reino Unido, divulgaram detalhes sobre um ataque teórico que permite a inserção de código malicioso em aplicativos legítimos. Mas, é importante relatar que o ataque pode acontecer, a falha ocorre no campos de comentários.
O novo e recém descoberto Trojan Source, precisa que seja feito o uso de caracteres de controle bidirecional nos comentários do código-fonte.
Editores e compiladores de códigos afetados pelo Trojan Source
Estes são os editores e compiladores testados na pesquisa devido à popularidade. Mas, é preciso esclarecer que muitos outros também estão com a falha. Além disso, os pesquisadores informam que todos estes softwares ainda que para Windows, MacOS, Linux ou Web, são afetados sem distinção.
- VS Code
- Atom
- SublimeText
- Notepad++
- vim
- emacs
- GitHub
- BitBucket
- e vários outros
Entendendo os caracteres BiDi
Os famosos caracteres BiDi são caracteres Unicode geralmente utilizados dentro de uma linha de texto para sinalizar a mudança de um modo LTR, ou seja, da esquerda para direita, RTL da direita para a esquerda. No entanto, esses caracteres só são visualizados por desenvolvedores. Desta forma, os usuários finais não conseguem vê-los, pois são usados ??apenas para incorporar texto de uma direção de leitura diferente em grandes blocos de texto (como inserir strings de árabe ou hebraico em grandes blocos de texto em latim).
O que a equipe de pesquisadores descobriram?
Os acadêmicos observaram que a grande maioria dos compiladores editores de códigos não tem nenhum protocolo para lidar com os caracteres BiDi. Além disso, também não é possível sinalizar a sua presença no código fonte.
A maioria das linguagens de programação permite que você coloque essas substituições Bidi em comentários e strings. Isso é péssimo porque a maioria das linguagens permitem comentários nos quais todo o texto – incluindo caracteres de controle – é ignorado por compiladores e editores. Além disso, é pior ainda, porque a maioria das linguagens permitem alguns strings que podem conter caracteres arbitrários, incluindo caracteres de controle.
Desta forma, a verificação de segurança seria incapaz de perceber a falha e a ausência de protocolos para lidar com os Caracteres BiDi.
Verificamos que esse ataque funciona contra C, C ++, C #, JavaScript, Java, Rust, Go e Python e suspeitamos que funcionará contra a maioria das outras linguagens modernas”, Ross Anderson, um dos dois pesquisadores por trás do Técnica do Trojan Source, explicada em uma postagem de blog.
E continuam:
Portanto, ao colocar caracteres de substituição Bidi exclusivamente em comentários e strings, podemos incluí-los no código-fonte de uma maneira que a maioria dos compiladores aceitará. Nosso principal insight é que podemos reordenar os caracteres do código-fonte de forma que a ordem de exibição resultante também represente o código-fonte sintaticamente válido. Juntando tudo isso, chegamos a um novo ataque da cadeia de suprimentos ao código-fonte. Ao injetar caracteres de substituição Unicode Bidi em comentários e strings, um adversário pode produzir código-fonte sintaticamente válido na maioria das linguagens modernas para as quais a ordem de exibição dos caracteres apresenta uma lógica que diverge da lógica real. Com efeito, anagramas o programa A no programa B.
Diz um trecho do artigo de pesquisa
E ainda:
Se a mudança na lógica for sutil o suficiente para passar despercebida nos testes subsequentes, um adversário pode introduzir vulnerabilidades direcionadas sem ser detectado..”
Disse Ross Anderson, professor de segurança de computador em Cambridge e co-autor da pesquisa.
Nicholas Weaver, professor do departamento de ciência da computação da Universidade da Califórnia, Berkeley, disse que a pesquisa de Cambridge apresenta “um conjunto muito simples e elegante de ataques que podem tornar os ataques à cadeia de suprimentos muito, muito piores”.
“Já é difícil para os humanos distinguir ‘isso é OK’ de ‘isso é mau’ no código-fonte”, disse Weaver. “Com este ataque, você pode usar a mudança na direcionalidade para alterar como as coisas são renderizadas com comentários e strings de forma que, por exemplo, ‘Está tudo bem” é como ele é renderizado, mas’ Está tudo bem ‘é como existe no código. Felizmente, tem uma assinatura muito fácil de verificar, para que os compiladores possam [detectá-la] se a encontrarem no futuro.”
Concluiu Nicholas Weaver
O que será feito agora para contornar a falha Trojan Source?
Andreson revelou que ao menos metade das organizações que mantém as linguagens de programação prometeram uma correção nos próximos dias. No entanto, outras organização não quiseram comentar o assunto e não demonstraram interesse em corrigir o bug.
Vamos monitorar sua implantação nos próximos dias. Também esperamos ação do Github, Gitlab e Atlassian, então suas ferramentas devem detectar ataques a códigos em linguagens que ainda não possuem filtragem de caracteres bidi.
Disse Anderson
Rust lançou um comunicado de segurança para esta falha de segurança, que está sendo rastreado como CVE-2021-42574 e CVE-2021-42694. Até o momento, não houve nenhuma nova atualização sobre o problema. Para os que precisam de mais informações acesse o documento em PDF através do botão abaixo: