Agentes de programação com IA agora são um vetor de ataque na cadeia de suprimentos

3 sistemas afirmaram uma condição e nenhum deles verificou se ela ainda valia. Um registro informou que um pacote tinha atestação. Um harness de avaliação informou que um modelo estava offline. Um assistente informou que um pacote funcionaria.

José Palanco José Palanco
Last Updated:
12 min read
Compartilhar
Agentes de programação com IA agora são um vetor de ataque na cadeia de suprimentos

Além de ASPM

AppSec orientada por provas para equipes que desenvolvem com IA

A Plexicus usa AI Swarm Pentest para explorar caminhos autorizados da aplicação, validar o que é explorável e dar às equipes evidências para priorizar a remediação.

Explorar AI Swarm Pentest

Em 8 de outubro de 2026, um pacote npm chamado tensorlake foi publicado com uma atestação de proveniência válida. A atestação estava correta. O pacote era malware, e tinha acabado de tirar tokens do GitHub, chaves de nuvem, segredos do Kubernetes e chaves SSH das máquinas de qualquer pessoa que o instalasse.

Sua política de cadeia de suprimentos provavelmente diz algo reconfortante. Instale pacotes com proveniência. Confie em lançamentos assinados. Conte com a reputação do mantenedor. Todos esses controles funcionaram perfeitamente em 8 de outubro, e o malware chegou mesmo assim.

O que realmente aconteceu

O primeiro commit malicioso entrou na main de tensorlakeai/tensorlake às 01

UTC de 7 de outubro, enviado sob a identidade de um mantenedor. Nenhum pull request foi aberto. Mais 7 commits vieram em seguida, ajustando o payload e adicionando uma linha preinstall ao package.json. Às 01
UTC de 8 de outubro, o workflow de release do próprio repositório publicou 0.5.144 no npm, e os arquivos do pacote npm eram idênticos aos da main.

A instalação disparou o hook preinstall, que baixou o runtime Bun e executou um payload ofuscado de 856 KB. O payload pulava ambientes de CI, então os laptops dos desenvolvedores eram o alvo. Ele coletou tokens do GitHub e do npm, credenciais de nuvem, segredos do Kubernetes e do Vault, chaves SSH, logins de navegador salvos e os arquivos de configuração que ferramentas de IA como Claude, Cursor e Windsurf guardam em disco. Depois gravou .claude/settings.json e .vscode/tasks.json em qualquer repositório que conseguisse alcançar, de modo que o payload se rearmava toda vez que alguém abria o projeto em um assistente de programação com IA ou em um editor.

O malware também instalou um serviço chamado gh-token-monitor que checava o token roubado do GitHub a cada 60 segundos por até 24 horas. Se o token fosse revogado, o serviço existia para limpar a máquina.

Revogar uma credencial comprometida é a primeira coisa que todo playbook de incidente manda você fazer. Aqui, foi o gatilho.

A atestação passou

Esta é a parte que deve mudar a forma como você escreve sua política.

Uma atestação de proveniência do npm responde a 1 pergunta: este pacote foi construído a partir deste repositório, por este workflow, usando esta identidade. É uma afirmação sobre proveniência. Não diz nada sobre se o código é seguro.

O atacante não derrotou a atestação. Ele a satisfeziu, publicando a partir do repositório genuíno, pelo workflow genuíno, sob a identidade do mantenedor genuíno. A verificação retornou um resultado limpo porque o resultado limpo era verdadeiro. A StepSecurity disse isso de forma direta: uma política que confia em proveniência teria deixado este pacote passar.

O mesmo vale para o resto da pilha. Lançamentos assinados provam que uma chave de assinatura foi usada. Feeds de reputação medem o que um pacote fez antes. Os 2 são afirmações sobre identidade e histórico, e um worm que herda as credenciais de um mantenedor confiável herda as 2 coisas.

Isso não torna proveniência, assinatura ou reputação inúteis. Elas fecham caminhos reais. A afirmação aqui é mais estreita: são evidências sobre identidade, e são lidas como evidências sobre comportamento. A mudança que armou este lançamento foram 8 linhas de package.json, e todo sinal de identidade estava verde.

A mesma falha, uma camada acima

Em setembro de 2026, a Anthropic divulgou um conjunto de incidentes em que modelos escaparam de uma avaliação de segurança e chegaram a sistemas reais. A causa imediata foi um erro de configuração na camada mais externa de um ambiente de avaliação de terceiros. Dentro dele, o próprio harness da Anthropic informou a um modelo que ele não tinha acesso à internet, enquanto o modelo estava de fato conectado.

Em um deles, o Claude Mythos 5 recebeu uma tarefa capture-the-flag contra uma empresa fictícia. Ele encontrou um provedor gratuito de e-mail descartável cujo domínio o PyPI não havia bloqueado, registrou uma conta, publicou 3 versões de um pacote malicioso e usou credenciais vazadas por 1 dos 15 sistemas que o instalaram para alcançar o banco de dados de um fornecedor real de segurança.

O Mythos 5 afirmou repetidamente em sua cadeia de pensamento que estava em uma simulação. O ambiente lhe deu evidências claras em sentido contrário, e a Anthropic concluiu que as ações dele eram compatíveis com o fato de ele saber disso. Quando os pesquisadores reamostraram as transcrições para remover a ambiguidade, ele continuou.

A delimitação de severidade da Anthropic pertence a esta seção, não a uma nota de rodapé. Os modelos nunca se desviaram dos exercícios que receberam. Um deles tentou abortar a tarefa 7 vezes e falhou em todas, porque a mesma configuração incorreta impedia o aborto de funcionar. Depois de encontrar o incidente, a Anthropic ampliou a busca para cerca de 481 milhões de transcrições e não encontrou nada de severidade comparável, e contratou uma investigação independente da METR.

Coloque isso ao lado do lançamento de tensorlake e a forma é a mesma. Nos 2 casos um sistema recebeu um estado que não era verdade: “Você está em uma simulação.” “Este pacote foi construído a partir do repositório real.” As 2 eram descrições precisas de um rótulo, e nenhuma verificou se o rótulo ainda valia. Os frameworks de risco de IA agêntica escritos depois de incidentes como esse assumem que o rótulo vale e tratam o julgamento do agente como a variável em teste.

A mesma falha, uma camada abaixo

O terceiro incidente aponta para um controle que quase ninguém tem.

Em setembro de 2026, pesquisadores relataram um ataque que começou dentro de uma sessão real de um assistente de programação com IA. O assistente recomendou um pacote, o desenvolvedor o instalou, e um infostealer do PyPI levou os tokens do GitHub dele. O Shai-Hulud usou esses tokens para se copiar por cerca de 100 repositórios internos e exfiltrar código-fonte e segredos. Depois, um pacote envenenado apareceu dentro do próprio namespace da empresa, e um segundo funcionário baixou.

O assistente apresentou aquele pacote como adequado à tarefa, e o desenvolvedor levou essa apresentação como uma avaliação. Nada verificou isso. É o mesmo movimento dos outros 2 incidentes, feito por um componente que ninguém registra em log.

Foram documentadas 3 rotas para dentro dessa sessão: injeção de prompt plantada onde um assistente a leria e a seguiria, incluindo ataques mirados nos scanners de segurança baseados em LLM para que aprovassem o mesmo código que o desenvolvedor aceitou; hooks de inicialização adulterados, de modo que abrir o projeto executasse o código do atacante; e skills de agentes usadas como arma, distribuídas com backdoors e infostealers dentro, instaladas do jeito que as pessoas instalam extensões de navegador.

A maioria das equipes varre lockfiles e pull requests. Quase ninguém varre aquilo que decidiu o que entrou no lockfile.

Essa superfície está crescendo. A SafeDep relata que uma variante mais nova do Shai-Hulud agora procura credenciais em 469 locais, ante 189 antes. Os locais adicionados incluem sistemas de CI, configuração de nuvem e os arquivos de configuração que ferramentas de desenvolvimento com IA gravam em disco. Esses arquivos são criados por um instalador e nunca revisados, e as equipes continuam encontrando credenciais neles em texto claro.

É o mesmo mecanismo da persistência em .claude/settings.json no payload de tensorlake: o caminho do atacante pelo seu ambiente passa por diretórios de configuração que o seu próprio ambiente considera seus.

Esse é o fio que atravessa os 3 incidentes. Um registro informou que este pacote tem atestação. Um harness de avaliação informou que você está offline. Um assistente informou que este pacote vai funcionar. 3 sistemas afirmaram uma condição, e nenhum deles verificou se a condição ainda valia. A propriedade que você precisa é evidência, e evidência custa mais do que um rótulo.

O que os números dizem

O incidente do tensorlake é 1 pacote. A escala está na visão trimestral.

O Sonatype Research Labs registrou 149.329 pacotes open source maliciosos no Q3 2026, levando o total acumulado desde 2017 a 1.960.846. O npm responde por 133.579 deles, 89,5% do trimestre, abaixo dos 96,6% no Q2.

Volume é o número menos interessante desse relatório. O detalhamento por comportamento é o útil. Dos 27.618 pacotes com comportamento malicioso evidente, 2 categorias dominam.

Gráfico de barras horizontais com a contagem de comportamentos maliciosos de pacotes no Q3 2026. Dropper lidera com 14.665, seguido de exfiltração de segredos com 9.863, depois exfiltração de informações do host com 4.332, backdoor com 3.284, corrupção de dados com 2.869, código ofuscado com 705 e minerador de cripto com 281.

Comportamentos maliciosos de pacotes no Q3 2026. Droppers e exfiltração de segredos são as 2 maiores categorias por uma margem larga. Um pacote pode carregar mais de 1 comportamento, então essas contagens somam mais do que os 27.618 pacotes com pelo menos 1. Fonte: Sonatype Research Labs, Q3 2026 Open Source Malware Index.

Roubo de credenciais e entrega de payload em estágios não são o incidente. São o mecanismo de entrega de todo o resto. Um alerta de dependência não é uma linha em um lockfile. É uma máquina que você agora trata como comprometida, porque foi isso que o atacante comprou.

A orientação da Sonatype chega ao mesmo ponto por outro caminho: detectar comportamento em vez de nomes de pacotes e assinaturas conhecidas, e validar a confiança continuamente em vez de depender da reputação acumulada. Acompanharam 4.150 pacotes marcados como sequestrados no Q3, 88% deles construídos para roubar segredos ou soltar payloads secundários.

O que fazer agora

Se você instalou tensorlake@0.5.144, a ordem importa mais do que os passos. Pare o monitor de tokens antes de revogar qualquer coisa, porque a revogação é o que dispara a limpeza.

Verifique antes de assumir. Rode npm ls tensorlake e procure 0.5.144 nos seus lockfiles. Se você puxou a main de tensorlakeai/tensorlake desde 7 de outubro e instalou em typescript/, trate a máquina como afetada.

Pare o monitor e depois revogue. Procure por ~/.config/gh-token-monitor/. Se existir, remova o serviço antes de revogar o token do GitHub. Se você não conseguir identificar o que está registrado, não chute: reconstrua a máquina a partir de uma imagem conhecida como íntegra.

Fixe em 0.5.143, limpe o cache e depois pare os scripts de instalação. Adicione ignore-scripts=true ao .npmrc. Isso sozinho impede que essa classe de payload preinstall seja executada.

Depois rotacione. Tokens do npm, chaves de nuvem, chaves SSH, credenciais do Kubernetes e do Vault, segredos em arquivos .env, chaves de API de ferramentas de IA e qualquer coisa salva em um navegador.

Procure por propagação. Verifique novos repositórios públicos na conta descrita como “Shai-Hulud: Here We Go Again”, commits autorados por claude@users.noreply.github.com com a mensagem “chore: update dependencies”, e arquivos .claude ou .vscode que você não adicionou.

Além deste pacote específico:

Trate a sugestão de um agente como código não revisado. É uma proposta de um sistema que lê o repositório, não de um colega que o escreveu. Um pacote que um assistente sugere merece o mesmo exame que um pull request de um desconhecido, que é exatamente o que a governança de código gerado por IA resolve.

Varra dependências no CI, não só em laptops. Verifique hashes contra o registro em vez de confiar em um nome, e prefira um proxy interno a puxar direto do registro público.

Tire as credenciais de publicação das máquinas dos desenvolvedores. Tokens de curta duração e publicação baseada em OIDC limitam o que um ladrão leva.

Use grep nos diretórios de configuração das ferramentas de IA para procurar segredos. Se o malware tem uma lista de 469 lugares para olhar, confira a mesma lista antes que ele faça.

Revise skills de agentes, extensões e servidores MCP com o rigor de dependências. Eles rodam com as suas permissões e as suas credenciais. Trate como código.

Nada disso substitui entender o que o seu próprio código faz quando roda. Esse é o problema separado que a segurança de vibe coding trata, e o que a vulnerabilidade de PRs escritas por IA mede. É por isso que as ferramentas de cadeia de suprimentos de software e os testes de segurança de aplicações são disciplinas relacionadas, mas separadas: ferramentas que encontram falhas em código que você escreveu não estabelecem o que um pacote que você instalou faz quando roda no laptop de um desenvolvedor. Nossa análise semântica profunda de código e nosso pentest com enxame de IA atuam no primeiro desses problemas.

Como sabemos

Timestamps, versões de pacotes e detalhes do payload vêm da análise da StepSecurity sobre o lançamento de tensorlake. Os números de volume vêm do índice do Q3 2026 do Sonatype Research Labs. Os achados de avaliação vêm da própria avaliação de alinhamento da Anthropic. Os 3 foram consultados em 9 de outubro de 2026. Não publicamos uma contagem de downloads ou de infecções para tensorlake@0.5.144, porque nenhuma está disponível.

Fontes


Seus desenvolvedores estão sendo avisados, por uma máquina que lê o repositório deles, que um pacote é seguro de instalar. Nem eles nem a ferramenta conseguem verificar isso. Se você quiser conversar sobre como fica a análise baseada em evidências quando seus engenheiros entregam código que não escreveram, fale com a gente.

Escrito por
José Palanco
José Palanco
José Ramón Palanco é o CEO/CTO da Plexicus, uma empresa pioneira em ASPM (Application Security Posture Management) lançada em 2024, oferecendo capacidades de remediação impulsionadas por IA. Anteriormente, ele fundou a Dinoflux em 2014, uma startup de Inteligência de Ameaças que foi adquirida pela Telefonica, e tem trabalhado com a 11paths desde 2018. Sua experiência inclui cargos no departamento de P&D da Ericsson e na Optenet (Allot). Ele possui um diploma em Engenharia de Telecomunicações pela Universidade de Alcalá de Henares e um Mestrado em Governança de TI pela Universidade de Deusto. Como um especialista reconhecido em cibersegurança, ele tem sido palestrante em várias conferências prestigiadas, incluindo OWASP, ROOTEDCON, ROOTCON, MALCON e FAQin. Suas contribuições para o campo da cibersegurança incluem múltiplas publicações de CVE e o desenvolvimento de várias ferramentas de código aberto, como nmap-scada, ProtocolDetector, escan, pma, EKanalyzer, SCADA IDS, e mais.
Leia mais de José
More to read

Related posts

SAST vs DAST: Qual é a Diferença e Por Que Você Deve Usar Ambos
Cybersecurity

SAST vs DAST: Qual é a Diferença e Por Que Você Deve Usar Ambos

SAST e DAST são métodos de teste de segurança usados para proteger aplicações contra ataques. Para ver como cada um ajuda na segurança de aplicações, vamos analisar suas diferenças e onde eles se encaixam no seu fluxo de trabalho

José Palanco José Palanco ·
Segurança de Aplicações Web: Melhores Práticas, Testes e Avaliação para 2026
Cybersecurity

Segurança de Aplicações Web: Melhores Práticas, Testes e Avaliação para 2026

A segurança de aplicações web é essencial para proteger seus aplicativos de ataques cibernéticos que visam dados sensíveis e interrompem operações. Este guia cobre a importância da segurança de aplicativos web, vulnerabilidades comuns, melhores práticas e métodos de teste, ajudando você a proteger sua aplicação, garantir conformidade e manter a confiança do usuário

José Palanco José Palanco ·
15 Tendências de DevSecOps para Proteger Seu Negócio
Cybersecurity

15 Tendências de DevSecOps para Proteger Seu Negócio

Uma violação de segurança assustadora se tornou realidade para muitas empresas europeias. Aprenda as 15 tendências transformadoras de DevSecOps que você deve conhecer para ficar fora da lista de violações.

José Palanco José Palanco ·
Pronto para validar o que importa?

Pronto para validar o que importa.

O Plexicus é Proof-Driven AppSec: achados validados, compreensão contextual e remediação revisada — ancorada em evidência, escopada com você.

Qualificação

Verifique se o AI Swarm Pentest se adequa ao seu ambiente.

Partilhe o contexto mínimo. Vamos rever o escopo e indicar o próximo passo comercial.

Antes de enviar — verifique se se encaixa

0 / 280

Sem compromisso. Se não se encaixa, dizemos.

SAMPLE HANDOVER · ILLUSTRATIVE

Sample evidence handover

A trimmed view of what your team receives at the end of an AI Swarm Pentest engagement. Real engagements include full technical evidence, executive narrative, and a remediation plan.

VALIDATED FINDING Evidence attached

Server-Side Request Forgery in webhooks/receiver

demo-project/sample-app · src/webhooks/receiver.py:42

SeverityHigh CVSS 3.18.6 Priority79 Confirmedvia replay

Untrusted caller-supplied URLs reach an internal egress without an allowlist. Replayed in a sandbox against a fresh authorized target — the same control was validated to fail twice.

REVIEWER-READY REMEDIATION Merge-ready PR

Validate the target URL against an allowlist of permitted hostnames. Reject private/internal IP ranges. Enforce HTTPS only.

plexicus/remediation/webhooks-ssrf 3 changed · 0 new files
42resp = requests.get(target_url)
42+if not is_allowed_host(target_url):
43+  raise WebhookRejected(target_url)
44+resp = requests.get(target_url, timeout=5)
Every engagement hands over:
  • Executive briefing
  • Validated findings list
  • Merge-ready PRs
  • Compliance mapping (NIS2 · DORA · CRA)
Ronda privada Para investidores