Aikido

Todo mundo está enviando código que não consegue ler

Escrito por
Samuel Vandamme

Antigamente, era fácil identificar um desenvolvedor. Eles tinham o terminal preto e verde, o editor com dezessete arquivos abertos e uma habilidade estranha de sair do vim (`esc :q!`, caso você não soubesse). Escrever software tinha um alto nível de exigência, e essa exigência mantinha a maioria das pessoas afastadas.

Abra algo como o Claude Cowork, digite "crie uma ferramenta que limpe esta planilha e me envie um resumo toda segunda-feira" e pronto. Minutos depois, há algo funcionando. Por trás da janela de chat, um agente iniciou uma máquina virtual, escreveu código real, puxou as bibliotecas que julgou necessárias, executou, encontrou um erro, corrigiu-o e entregou o resultado. Você descreveu um resultado, enquanto uma máquina fez a engenharia. 

Parabéns! Você agora é um desenvolvedor, um que nunca viu uma única linha do que foi construído.

A dependência que você não escolheu

Para resolver seu problema, seu agente amigável acessa uma biblioteca pública de pacotes "mágicos" e baixa o código de estranhos para uma máquina. É assim que o software moderno funciona, e os desenvolvedores fazem isso constantemente. A diferença é que esses desenvolvedores, pelo menos, sabem que o `npm install` está sendo executado e os riscos envolvidos. Você talvez não saiba. Você pediu um limpador de planilhas.

E essa biblioteca está sob ataque ativo. Este mês, um atacante republicou 141 pacotes no popular ecossistema de agentes de IA @mastra em um surto noturno de 45 minutos, inserindo uma dependência maliciosa em cada um. O pacote envenenado, um sósia de uma biblioteca de data comum, executou um script no momento da instalação que baixou uma segunda carga útil, a lançou como um processo invisível em segundo plano e, em seguida, se autoexcluiu para ocultar as evidências. A carga útil vasculhou mais de 160 carteiras de criptomoedas de navegadores e se estabeleceu para persistência em Mac, Windows e Linux. Um pacote central afetado recebe quase um milhão de downloads por semana.

Quando um desenvolvedor adiciona uma dependência, geralmente há algum julgamento envolvido. Se eles ainda não estão familiarizados com as ferramentas populares ou confiáveis na área, podem dar uma olhada nos números de download, no último commit e em quem a mantém. Então a decisão vai para um pull request onde outra pessoa pode questionar e revisar o pacote antes que ele seja mesclado. As maneiras como uma IA busca um pacote não são claras. Às vezes é apenas o que é mais comum, ou às vezes é realmente obscuro. Mas as IAs também "alucinam" pacotes que parecem reais, mas não são. Quando isso acontece, no melhor dos casos, o pacote que a IA inventou não existe. No pior, um atacante adivinhou o que uma IA poderia inventar e inseriu malware desagradável nesse nome de pacote. Isso é chamado de slopsquatting, e é algo que qualquer pessoa usando IA para codificar precisa estar atenta.

Este não é um argumento para "não usar as ferramentas".

As ferramentas são transformadoras e não vão voltar para a caixa. O sandboxing ajuda, uma VM isolada contém parte do raio de impacto, e isso é real. Mas o código nas sandboxes é enviado para repositórios reais e credenciais reais no momento em que se torna útil, e o isolamento não resolve a parte em que você nunca revisou as dependências.

LLMs entregaram o teclado a todos, o que é maravilhoso. Mas, ao fazer isso, movemos a decisão mais perigosa em software (em qual código confio o suficiente para executar?) para um lugar onde nenhum humano está olhando. A resposta não é ler cada diff novamente. Essa oportunidade já passou. Em vez disso, precisamos levar a verificação de confiança para onde a instalação acontece. Bloqueie pacotes maliciosos conhecidos antes que atinjam a máquina, torne os scripts de instalação opcionais em vez de automáticos, e trate "o agente cuidou disso" como uma frase que deveria deixá-lo um pouco nervoso.

Todo mundo é desenvolvedor agora. A bicicleta não tem rodinhas de apoio, e a maioria dos novos ciclistas está com as duas mãos fora do guidão.

Olha, mãe, sem guard-rails! A boa notícia é que você pode adicioná-los de volta sem desacelerar ninguém. Aikido Device Protection captura o pacote malicioso no único momento que importa, antes que ele seja instalado, para que "o agente cuidou disso" deixe de ser uma frase que deveria assustá-lo.

Se você quer descobrir como proteger seus aplicativos "vibe-coded", confira nossa Vibe Coding Checklist for Security.

Compartilhar:

https://www.aikido.dev/blog/shipping-code-they-cant-read

Assine para receber notícias

4.7/5
Cansado de falsos positivos?

Experimente Aikido como 100 mil outros.
Começar Agora
Obtenha um tour personalizado

Confiado por mais de 100 mil equipes

Agende Agora
Escaneie seu aplicativo em busca de IDORs e caminhos de ataque reais

Confiado por mais de 100 mil equipes

Iniciar Escaneamento
Veja como o pentest de IA testa seu aplicativo

Confiado por mais de 100 mil equipes

Iniciar Testes

Fique seguro agora

Proteja seu código, Cloud e runtime em um único sistema centralizado.
Encontre e corrija vulnerabilidades rapidamente de forma automática.

Não é necessário cartão de crédito | Resultados da varredura em 32 segundos.