Detección de malware 0-day para binarios, código fuente y scripts (que no es una porquería)
Atomdrift Scan es un escáner de malware moderno basado en ML diseñado para detectar ataques de día cero contra la cadena de suministro de software.
Está diseñado para ser determinista, rápido y flexible, e integrable en cualquier flujo de trabajo o herramienta de seguridad que tengas en mente, y puede operar contra archivos, archivos comprimidos, URLs, PURLs o procesos.
A partir de septiembre de 2026, Atomdrift Scan tiene una tasa de detección de día cero del 98%, +34% por delante de cualquier otro escáner: comercial o abierto.
¿Cómo obtiene Atomdrift resultados tan buenos? Primero, cubre más terreno que cualquier otro escáner:
Lo más importante: las reglas se actualizan constantemente mediante aprendizaje por refuerzo contra nuevas muestras, blogs y artículos técnicos, lo que da como resultado ~1000 reglas actualizadas diariamente.
Si estás en un host de tipo UNIX (macOS, Linux, BSD, Solaris, illumos, Android):
curl -fsSL https://install.atomdrift.org/scan.sh | sh
Si estás en Windows:
irm https://install.atomdrift.org/scan.ps1 | iex
O, si tienes Rust instalado y solo quieres compilarlo desde el código fuente:
make install
Si se requiere un análisis de binarios más profundo, también deberías instalar 7-Zip, rizin, upx e innoextract.
En 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
En sistemas tipo Unix, instala 7-Zip upstream (brew install sevenzip, apt install 7zip) en lugar de p7zip — su 7z no puede leer APFS, por lo que el contenido de los .dmg queda sin escanear.
# 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
Los códigos de salida hacen que la integración con CI sea trivial:
0: todas las muestras son benignas1: muestra hostil detectada2: muestra sospechosa detectada3: error de análisis4: el conjunto de reglas estaba incompleto — el escaneo se ejecutó con menos reglas de las que define el conjunto de rasgos, por lo que cualquier resultado que no sea hostil no prueba nada. Vuelve a ejecutarlo.
atomscan nunca enviará datos de telemetría. Sin embargo, se conectará a Internet por 2 razones:
--no-update o SCAN_NO_UPDATE_CHECK=1--follow=none para analizar solo el artefacto solicitado.A diferencia de otros escáneres de malware, Atomdrift te permite ajustar la sensibilidad en términos de un nivel aceptable de falsos positivos usando el flag -l:
-l0: estricto, establece el umbral de confianza en un punto donde no se han observado falsos positivos.-l25: el punto de envío predeterminado: 25 falsos positivos por cada 100 millones de archivos.-l1000: laxo, aproximadamente 1 falso positivo por cada 100.000 archivos.NOTA: Para formatos de archivo en los que no tenemos 100 millones de muestras, la tasa de falsos positivos observada puede ser hasta 5-6 veces el nivel solicitado. Los resultados pueden variar.
Las anulaciones directas --threshold-hostile y --threshold-suspicious están disponibles
para usuarios que quieran gestionar directamente los umbrales de probabilidad, pero no se garantiza que estos números sean estables, y estos flags no se pueden combinar con -l.
Para una interpretación adicional, los usuarios pueden proporcionar acceso a un LLM mediante el flag --llm. Este flag tiene dos propósitos:
Por defecto, atomscan envía la evidencia interpretada (no el archivo original) a http://localhost:8000/v1 - para usarse con un servicio local como Ollama o vLLM; pero también se puede configurar para usar un servicio remoto como Claude, ChatGPT o DeepSeek.
Ningún modelo está codificado de forma fija: a menos que pases --llm-model, atomscan pregunta al endpoint qué modelos sirve y usa el más grande que liste. Recomendamos servir Qwen/Qwen3.8-27B.
Si el endpoint requiere un token de portador, colócalo en ~/.tok/llm (modo 0600) y atomscan lo enviará automáticamente; --llm-key y SCAN_LLM_KEY anulan ese archivo.
--llm también acepta una cadena de conmutación por error separada por comas, probada en orden — --llm 'https://llm.isotope13.ai/v1,openrouter' evalúa en tu propio endpoint y recurre al de pago solo cuando no puede 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 con https://openrouter.ai/api/v1. La clave proviene de --llm-key, SCAN_LLM_KEY o ~/.tok/openrouter (primera línea no vacía). --llm-model por defecto es openrouter/auto (el propio enrutador automático de OpenRouter) si se omite — el resto del catálogo no se selecciona automáticamente.
make deploy en Linux acepta los mismos nombres: LLM=openrouter (o LLM_URL=openrouter), y LLM_MODEL=qwen/qwen3.8-27b solo para fijar un modelo en lugar de openrouter/auto. La unidad no puede leer el home del operador (ProtectHome=true), por lo que el script de despliegue copia ~/.tok/openrouter al directorio de estado del servicio.
El escáner reconoce más de 100 tipos de archivo y contenedor. La cobertura representativa incluye:
| Categoría | Formatos |
|---|---|
| Binarios y bytecode | Mach-O, ELF, PE, WebAssembly, Android DEX, Java .class, Python .pyc, BEAM |
| Código fuente | 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 |
| Archivos de compilación, manifiesto y bloqueo | 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 |
| Archivos comprimidos e imágenes de disco | ZIP, TAR, gzip, bzip2, XZ, zstd, 7-Zip, RAR, CAB, ASAR, DMG, ISO |
| Paquetes y contenedores | deb, rpm, APK, npm, wheel, egg, sdist, gem, crate, conda, NuGet, IPA, CRX, XPI, VSIX, imágenes OCI/Docker, paquetes de FreeBSD, Arch, Void y Gentoo |
| Documentos y datos | OLE2, OOXML, OpenDocument, PDF, RTF, Markdown, HTML, XML, SVG, plist, JPEG, PNG, LNK, CHM, Python pickle |
El conjunto de reglas incluye comportamientos específicos de plataforma para Linux, macOS, Windows, Android, iOS, los BSDs, AIX, Solaris, QNX, z/OS, ESXi, OpenWrt, VxWorks, RouterOS, FortiOS, PAN-OS, IOS-XE, Junos, NetScaler y dispositivos Ivanti.
La matriz de compilación predeterminada cubre Linux, macOS, FreeBSD, OpenBSD, NetBSD, illumos, Solaris y Windows en varias arquitecturas de CPU. La profundidad de las pruebas varía según el objetivo; consulta el flujo de trabajo de compilación para la matriz actual.
Atomdrift Scan está disponible bajo la Licencia Apache 2.0.
¡Todas las contribuciones son bienvenidas!