Repositório-armadilha com 1774 estrelas: dois filtros para detectar malware e alucinações
Todas as manhãs, um bot envia ao autor cinco repositórios em alta do trendshift.io com um resumo do README. No dia 26 de setembro, apareceu no feed o projeto "Microsoft Activation Scripts" com 1774 estrelas — era uma armadilha. A conta do proprietário foi criada 94 segundos antes do repositório, e o comando de instalação continha malware disfarçado via PowerShell, com o endereço de download escrito de trás para frente. Ao analisar todos os 321 repositórios enviados pelo bot entre 15 de julho e 8 de outubro, o autor descobriu que os filtros óbvios não funcionam. Verificar instalações do tipo "baixe e execute na hora" bloquearia um em cada oito projetos legítimos. Em vez disso, o autor criou dois indicadores independentes, cada um suficiente para o bloqueio. • **lure-check**: detecta comandos de instalação disfarçados (strings invertidas via -join, base64, execução oculta via mshta/certutil/bitsadmin) e contas descartáveis (criadas menos de 30 dias antes do repo, com menos de 10 KB de código) • **ground-check**: verifica alucinações do DeepSeek, filtrando palavras com letra maiúscula e números que não aparecem na fonte • Ambas as ferramentas são distribuídas em repositórios MIT separados, e o ground-check traz testes com 303 resumos reais
Processado por IA de Habr AI; editado por Hamidun News
Uma armadilha com 1774 estrelas
Todas as manhãs, um bot do Telegram envia ao autor cinco repositórios em alta do GitHub, retirados do trendshift.io. Abaixo de cada um há um botão que, ao ser pressionado, exibe um resumo do README para uma análise rápida. O autor lê esse feed diariamente, às vezes curtindo os projetos que mais gosta.
No dia 26 de setembro, apareceu no feed o repositório "Microsoft Activation Scripts", com 1774 estrelas, uma descrição bem-feita e tags. O bot o exibiu junto com outros quatro projetos — e era uma armadilha. O repositório tinha apenas um arquivo README, e a conta do proprietário foi criada 94 segundos antes do repo.
O comando de instalação tinha a seguinte forma: `iex(irm(-join"…"[-1..-99]))` — o endereço de download estava escrito de trás para frente.
O PowerShell primeiro inverte a string, depois baixa o script e o executa imediatamente. É impossível ler o domínio a olho nu, e um scanner que busca links no texto também não o detecta. O endereço leva a um domínio que imita um domínio legítimo.
Os verdadeiros Microsoft Activation Scripts existem e também usam instalação via irm | iex — e é exatamente nisso que a armadilha aposta.
Por que os filtros óbvios não funcionaram
O autor aplicou uma regra aos 321 repositórios enviados pelo bot entre 15 de julho e 8 de outubro (314 deles ainda ativos). A primeira ideia foi marcar instalações do tipo "baixe e execute na hora" a partir de sites fora do GitHub. Mas é assim que 38 dos 314 projetos legítimos são instalados: codex, opencode, além dos instaladores do rustup e do uv. O filtro esconderia um em cada oito repositórios em alta, justamente os mais úteis.
A segunda regra foi "a conta do proprietário tem menos de 30 dias". A armadilha passaria por esse filtro: no dia em que foi enviada, a conta já tinha 34 dias. Uma conta descartável não se define pela idade no momento da verificação, mas pelo intervalo entre a criação da conta e a criação do repositório.
Os dois filtros que funcionaram
Primeiro filtro (comando de instalação disfarçado)
Verifica a presença de disfarces no README:
- String invertida via `-join"…"[-1..` e `iex(irm(…))` com endereço calculado
- Código em formato base64 que é decodificado e executado na hora
- Execução oculta via `mshta`, `certutil`, `bitsadmin` ou `-WindowStyle Hidden`
Antes da verificação, o texto é limpo de caracteres invisíveis e de crases do PowerShell (como em i`e`x).
Segundo filtro (proprietário descartável e ausência de código)
Bloqueia repositórios se:
- A conta foi criada menos de 30 dias antes do repo
- O repositório tem menos de 10 KB ou contém apenas README e LICENSE
Se o GitHub não responder, isso é tratado como "desconhecido", e não como "sem código" — uma falha de rede não deve ocultar um projeto legítimo.
Nos 314 repositórios analisados, cada indicador disparou exatamente uma vez — no ativador falso. Desde 9 de outubro, a verificação está em produção no bot. Se um repositório se parecer com uma armadilha, o bot o remove da seleção, coloca no lugar o próximo melhor classificado e escreve uma linha explicando o que foi ocultado e por quê.
O segundo problema: alucinações da rede neural
O bot pede ao DeepSeek para resumir cada repositório em uma frase, em russo. Um projeto cuja descrição continha apenas meat.dev foi descrito pelo modelo como um "framework web para Ruby". Uma ferramenta de testes foi comparada ao Cypress, que não existe na fonte original. Tudo parece plausível, e é impossível detectar a olho nu.
O autor reuniu 303 resumos reais e os comparou com as fontes. A regra é simples: toda palavra em caracteres latinos com letra maiúscula ou número (Ruby, GPT-5) e todo número com três ou mais dígitos, com ponto ou porcentagem, deve aparecer na fonte. Se não aparecer, o bot exibe a descrição original do GitHub.
A primeira versão rejeitou 9 dos 303 resumos. Quatro acabaram sendo apenas grafias diferentes da mesma coisa: Open-source e "open source", Wi-Fi e "WiFi", 2234 e "2.234". O autor adicionou uma comparação sem hifens e espaços, e removeu os separadores de milhar. Restaram 5 rejeições: três invenções genuínas (Ruby, Cypress, Scratch) e duas em que a fonte não as confirma (NVIDIA e século XIX). Em quatro dias — 20 resumos e nenhuma rejeição.
Onde encontrar as ferramentas
lure-check: `python3 lure_check.py owner/repo` — código de retorno 1 para armadilhas, útil em CI
ground-check: `python3 ground_check.py --source source.txt --text summary.txt`
Ambas as ferramentas são um único arquivo em Python, usam apenas a biblioteca padrão, têm licença MIT e testes baseados em casos reais. A armadilha usada nos testes foi neutralizada, e todos os endereços foram substituídos.
- 27 de out. de 2026Qwen3.8 tentou subir um arquivo para a nuvem da Alibaba em Pequim de dentro do sandbox da Cohere
- 26 de out. de 2026Synopsys quer conectar modelos de IA chineses ao projeto de chips na China
- 26 de out. de 2026SpaceXAI reúne Grok, Cursor e X em uma única assinatura a partir de $8 por mês
- 26 de out. de 2026OpenAI reduz previsão de receita para 2026 a US$ 50 bilhões, contra US$ 70 bilhões anteriores
Perguntas frequentes sobre a notícia
O que se sabe sobre Uma armadilha com 1774 estrelas?
Todas as manhãs, um bot do Telegram envia ao autor cinco repositórios em alta do GitHub, retirados do trendshift.io. Abaixo de cada um há um botão que, ao ser pressionado, exibe um resumo do README para uma análise rápida. O autor lê esse feed diariamente, às vezes curtindo os projetos que mais gosta. No dia 26 de setembro, apareceu no feed o repositório "Microsoft Activation Scripts", com 1774 estrelas, uma descrição bem-feita e tags. O bot o exibiu junto com outros quatro projetos — e era uma armadilha. O repositório tinha apenas um arquivo README, e a conta do proprietár
Por que os filtros óbvios não funcionaram?
O autor aplicou uma regra aos 321 repositórios enviados pelo bot entre 15 de julho e 8 de outubro (314 deles ainda ativos). A primeira ideia foi marcar instalações do tipo "baixe e execute na hora" a partir de sites fora do GitHub. Mas é assim que 38 dos 314 projetos legítimos são instalados: codex, opencode, além dos instaladores do rustup e do uv. O filtro esconderia um em cada oito repositórios em alta, justamente os mais úteis. A segunda regra foi "a conta do proprietário tem menos de 30 dias". A armadilha passaria por esse filtro: no dia em que foi enviada, a conta já
O que se sabe sobre Os dois filtros que funcionaram?
Primeiro filtro (comando de instalação disfarçado) Verifica a presença de disfarces no README: String invertida via `-join"…"[-1..` e `iex(irm(…))` com endereço calculado Código em formato base64 que é decodificado e executado na hora Execução oculta via `mshta`, `certutil`, `bitsadmin` ou `-WindowStyle Hidden` Antes da verificação, o texto é limpo de caracteres invisíveis e de crases do PowerShell (como em i`e`x). Segundo filtro (proprietário descartável e ausência de código) Bloqueia repositórios se: A conta foi criada menos de 30 dias antes do repo O repositório tem meno
Test Frontier LLMs & Autonomous Agents in One Workspace
Run Claude Opus 5.5, GPT-6, Gemini 3.1, and DeepSeek side-by-side in Nomad AI (nomadnet.ai) — unified model routing, deep research, and multimodal workflows under one subscription.
O essencial da IA — uma vez por semana
Sete histórias que realmente importaram, escolhidas a dedo. Sem ruído nem releases.
Pronto! Verifique seu e-mail para a confirmação.