Detecção de malware 0-day para binários, código-fonte e scripts (que não é ruim)
Atomdrift Scan é um scanner de malware moderno baseado em ML, projetado para detectar ataques 0-day contra a cadeia de suprimentos de software.
Ele foi projetado para ser determinístico, rápido e flexível, e incorporável em qualquer fluxo de trabalho ou ferramenta de segurança que você tenha em mente, e pode operar contra arquivos, arquivos compactados, URLs, PURLs ou processos.
Em setembro de 2026, o Atomdrift Scan tem uma taxa de detecção de 0-day de 98%, +34% à frente de qualquer outro scanner: comercial ou aberto.
Como o Atomdrift obtém resultados tão bons? Primeiro, ele cobre mais terreno do que qualquer outro scanner:
Mais importante, as regras são constantemente atualizadas usando aprendizado por reforço contra novas amostras, blogs e artigos técnicos, resultando em ~1000 regras atualizadas diariamente.
Se você estiver em um host de tipo UNIX (macOS, Linux, BSD, Solaris, illumos, Android):
curl -fsSL https://install.atomdrift.org/scan.sh | sh
Se você estiver no Windows:
irm https://install.atomdrift.org/scan.ps1 | iex
Ou, se você tiver o Rust instalado e quiser apenas compilá-lo a partir do código-fonte:
make install
Se for necessária uma análise mais profunda de binários, você também deve instalar 7-Zip, rizin, upx e innoextract.
No Windows, usando winget:
winget install --exact --id 7zip.7zip
winget install --exact --id Rizin.Rizin
winget install --exact --id UPX.UPX
winget install --exact --id dscharrer.innoextract
Em sistemas do tipo Unix, instale o 7-Zip upstream (brew install sevenzip, apt install 7zip) em vez do p7zip — seu 7z não consegue ler APFS, então o conteúdo de .dmg fica sem ser escaneado.
# Scan a file, directory, or archive recusively:
atomscan ./project
atomscan release.tgz
# Fetch a package from its registry and scan it.
atomscan purl npm/[email protected]
# Fetch and scan a URL.
atomscan url https://example.com/download
# EXPERIMENTAL: Scan running process executables, or triage the wider host
atomscan ps
atomscan sys
# JSON output for programmatic access
atomscan -f json ./project
Os códigos de saída tornam a integração com CI trivial:
0: todas as amostras são benignas1: amostra hostil detectada2: amostra suspeita detectada3: erro de análise4: o conjunto de regras estava incompleto — a varredura foi executada com menos regras do que o
conjunto de características define, então qualquer coisa que não seja hostil não prova nada. Execute novamente.
atomscan nunca enviará dados de telemetria. No entanto, ele acessará a Internet por 2 motivos:
--no-update ou SCAN_NO_UPDATE_CHECK=1--follow=none para analisar apenas o artefato solicitado.Diferente de outros scanners de malware, o Atomdrift permite ajustar a sensibilidade em termos de um nível aceitável de falsos positivos usando a flag -l:
-l0: rigoroso, define o limite de confiança em um ponto onde nenhum falso positivo foi observado.-l25: o ponto padrão de envio: 25 falsos positivos por 100 milhões de arquivos.-l1000: flexível, aproximadamente 1 falso positivo por 100.000 arquivos.NOTA: Para formatos de arquivo onde não temos 100 milhões de amostras, a taxa de falsos positivos observada pode ser até 5-6X o nível solicitado. Os resultados podem variar.
Substituições brutas de --threshold-hostile e --threshold-suspicious estão disponíveis
para usuários que desejam microgerenciar os limites de probabilidade diretamente, mas esses números não são garantidos como estáveis, e essas flags não podem ser combinadas com -l.
Para interpretação adicional, os usuários podem fornecer acesso a um LLM via a flag --llm. Essa flag tem dois propósitos:
Por padrão, o atomscan envia as evidências interpretadas (não o arquivo original) para http://localhost:8000/v1 - para ser usado com um serviço local como Ollama ou vLLM; mas também pode ser configurado para usar um serviço remoto como Claude, ChatGPT ou DeepSeek.
Nenhum modelo é codificado: a menos que você passe --llm-model, o atomscan pergunta ao endpoint quais modelos ele serve e usa o maior que ele lista. Recomendamos servir Qwen/Qwen3.8-27B.
Se o endpoint exigir um token bearer, coloque-o em ~/.tok/llm (modo 0600) e o atomscan o enviará automaticamente; --llm-key e SCAN_LLM_KEY substituem esse arquivo.
--llm também aceita uma cadeia de failover separada por vírgulas, tentada em ordem — --llm 'https://llm.isotope13.ai/v1,openrouter' avalia no seu próprio endpoint e recorre ao pago apenas quando não consegue responder.
atomscan --llm ./project
atomscan --llm http://model-host:8000/v1 --llm-model my-model ./project
atomscan --llm openrouter --llm-model qwen/qwen3.8-27b ./project
--llm openrouter se comunica com https://openrouter.ai/api/v1. A chave vem de --llm-key, SCAN_LLM_KEY ou ~/.tok/openrouter (primeira linha não vazia). --llm-model tem como padrão openrouter/auto (o próprio auto-router do OpenRouter) se omitido — o restante do catálogo não é selecionado automaticamente.
O make deploy do Linux aceita os mesmos nomes: LLM=openrouter (ou LLM_URL=openrouter), e LLM_MODEL=qwen/qwen3.8-27b apenas para fixar um modelo em vez de openrouter/auto. A unit não consegue ler o home do operador (ProtectHome=true), então o script de deploy copia ~/.tok/openrouter para o diretório de estado do serviço.
O scanner reconhece mais de 100 tipos de arquivo e contêiner. A cobertura representativa inclui:
| Categoria | Formatos |
|---|---|
| Binários e bytecode | Mach-O, ELF, PE, WebAssembly, Android DEX, Java .class, Python .pyc, BEAM |
| Código-fonte | Python, JavaScript, TypeScript, Go, Rust, Java, C, C++, C#, Ruby, PHP, Perl, Lua, Swift, Objective-C, Kotlin, Scala, Groovy, Zig, Elixir, Clojure, Shell, PowerShell, Batch, VBScript, AppleScript, JCL |
| Arquivos de build, manifesto e lock | package.json, package-lock.json, Cargo.toml, Cargo.lock, pyproject.toml, requirements.txt, Poetry, Pipenv, Composer, Yarn, pnpm, Go modules, binding.gyp, GitHub Actions, systemd units, Makefile, Dockerfile |
| Arquivos compactados e imagens de disco | ZIP, TAR, gzip, bzip2, XZ, zstd, 7-Zip, RAR, CAB, ASAR, DMG, ISO |
| Pacotes e contêineres | deb, rpm, APK, npm, wheel, egg, sdist, gem, crate, conda, NuGet, IPA, CRX, XPI, VSIX, imagens OCI/Docker, pacotes FreeBSD, Arch, Void e Gentoo |
| Documentos e dados | OLE2, OOXML, OpenDocument, PDF, RTF, Markdown, HTML, XML, SVG, plist, JPEG, PNG, LNK, CHM, Python pickle |
O conjunto de regras inclui comportamentos específicos de plataforma para Linux, macOS, Windows, Android, iOS, os BSDs, AIX, Solaris, QNX, z/OS, ESXi, OpenWrt, VxWorks, RouterOS, FortiOS, PAN-OS, IOS-XE, Junos, NetScaler e appliances Ivanti.
A matriz de build padrão cobre Linux, macOS, FreeBSD, OpenBSD, NetBSD, illumos, Solaris e Windows em várias arquiteturas de CPU. A profundidade de teste varia por alvo; consulte o fluxo de trabalho de build para a matriz atual.
Atomdrift Scan está disponível sob a Apache License 2.0.
Todas as contribuições são bem-vindas!