Rilevamento malware 0-day per binari, sorgenti e script (che non fa schifo)
Atomdrift Scan è un moderno scanner di malware basato su ML progettato per rilevare attacchi 0-day contro la software supply-chain.
È progettato per essere deterministico, veloce e flessibile, e integrabile in qualsiasi workflow o strumento di sicurezza tu abbia in mente, e può operare su file, archivi, URL, PURL o processi.
A partire da settembre 2026, Atomdrift Scan ha un tasso di rilevamento 0-day del 98%, +34% rispetto a qualsiasi altro scanner: commerciale o open.
Come fa Atomdrift a ottenere risultati così eccellenti? Innanzitutto, copre più terreno di qualsiasi altro scanner:
Soprattutto, le regole vengono costantemente aggiornate utilizzando il reinforcement learning su nuovi campioni, blog e articoli tecnici, con il risultato di circa 1000 regole aggiornate ogni giorno.
Se sei su un host di tipo UNIX (macOS, Linux, BSD, Solaris, illumos, Android):
curl -fsSL https://install.atomdrift.org/scan.sh | sh
Se sei su Windows:
irm https://install.atomdrift.org/scan.ps1 | iex
Oppure, se hai Rust installato e vuoi semplicemente compilarlo dai sorgenti:
make install
Se è richiesta un'analisi binaria più approfondita, dovresti anche installare 7-Zip, rizin, upx e innoextract.
Su 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
Su sistemi di tipo Unix, installa 7-Zip upstream (brew install sevenzip, apt install 7zip) invece di p7zip — il suo 7z non riesce a leggere APFS, quindi il contenuto dei .dmg non viene analizzato.
# 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
I codici di uscita rendono banale l'integrazione in CI:
0: tutti i campioni sono benigni1: rilevato campione ostile2: rilevato campione sospetto3: errore di analisi4: il set di regole era incompleto — la scansione è stata eseguita con meno regole di quelle definite dal
trait set, quindi qualsiasi risultato diverso da ostile non prova nulla. Rieseguila.
atomscan non invierà mai dati di telemetria. Tuttavia si collegherà a Internet per 2 motivi:
--no-update o SCAN_NO_UPDATE_CHECK=1--follow=none per analizzare solo l'artefatto richiesto.A differenza di altri scanner di malware, Atomdrift ti consente di regolare la sensibilità in termini di un livello accettabile di falsi positivi usando il flag -l:
-l0: stretto, imposta la soglia di confidenza a un punto in cui non sono stati osservati falsi positivi.-l25: il punto di default: 25 falsi positivi per 100 milioni di file.-l1000: permissivo, circa 1 falso positivo per 100.000 file.NOTA: per i formati di file di cui non abbiamo 100 milioni di campioni, il tasso di falsi positivi osservato può essere fino a 5-6 volte il livello richiesto. I risultati possono variare.
Le sovrascritture grezze --threshold-hostile e --threshold-suspicious sono disponibili
per gli utenti che vogliono gestire direttamente le soglie di probabilità, ma questi numeri non sono garantiti stabili, e questi flag non possono essere combinati con -l.
Per un'interpretazione aggiuntiva, gli utenti possono fornire accesso a un LLM tramite il flag --llm. Questo flag ha due scopi:
Per impostazione predefinita, atomscan invia le evidenze interpretate (non il file originale) a http://localhost:8000/v1 - da usare con un servizio locale come Ollama o vLLM; ma può anche essere configurato per usare un servizio remoto come Claude, ChatGPT o DeepSeek.
Nessun modello è hardcoded: a meno che tu non passi --llm-model, atomscan chiede all'endpoint quali modelli serve e usa il più grande che elenca. Consigliamo di servire Qwen/Qwen3.8-27B.
Se l'endpoint richiede un bearer token, inseriscilo in ~/.tok/llm (modalità 0600) e atomscan lo invierà automaticamente; --llm-key e SCAN_LLM_KEY sovrascrivono quel file.
--llm accetta anche una catena di failover separata da virgole, provata in ordine — --llm 'https://llm.isotope13.ai/v1,openrouter' valuta sul tuo endpoint e ricorre a quello a pagamento solo quando non riesce a rispondere.
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 comunica con https://openrouter.ai/api/v1. La chiave proviene da --llm-key, SCAN_LLM_KEY o ~/.tok/openrouter (prima riga non vuota). --llm-model è impostato di default su openrouter/auto (l'auto-router di OpenRouter) se omesso — il resto del catalogo non viene selezionato automaticamente.
make deploy su Linux accetta gli stessi nomi: LLM=openrouter (o LLM_URL=openrouter), e LLM_MODEL=qwen/qwen3.8-27b solo per fissare un modello invece di openrouter/auto. L'unità non può leggere la home dell'operatore (ProtectHome=true), quindi lo script di deploy copia ~/.tok/openrouter nella directory di stato del servizio.
Lo scanner riconosce più di 100 tipi di file e container. La copertura rappresentativa include:
| Categoria | Formati |
|---|---|
| Binari e bytecode | Mach-O, ELF, PE, WebAssembly, Android DEX, Java .class, Python .pyc, BEAM |
| Sorgenti | 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 |
| File di build, manifest 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 |
| Archivi e immagini disco | ZIP, TAR, gzip, bzip2, XZ, zstd, 7-Zip, RAR, CAB, ASAR, DMG, ISO |
| Pacchetti e container | deb, rpm, APK, npm, wheel, egg, sdist, gem, crate, conda, NuGet, IPA, CRX, XPI, VSIX, immagini OCI/Docker, pacchetti FreeBSD, Arch, Void e Gentoo |
| Documenti e dati | OLE2, OOXML, OpenDocument, PDF, RTF, Markdown, HTML, XML, SVG, plist, JPEG, PNG, LNK, CHM, Python pickle |
Il set di regole include comportamenti specifici per piattaforma per Linux, macOS, Windows, Android, iOS, i BSD, AIX, Solaris, QNX, z/OS, ESXi, OpenWrt, VxWorks, RouterOS, FortiOS, PAN-OS, IOS-XE, Junos, NetScaler e appliance Ivanti.
La matrice di build predefinita copre Linux, macOS, FreeBSD, OpenBSD, NetBSD, illumos, Solaris e Windows su diverse architetture CPU. La profondità dei test varia in base al target; consulta il workflow di build per la matrice attuale.
Atomdrift Scan è disponibile sotto la Apache License 2.0.
Tutti i contributi sono benvenuti!