Atomdrift Scan · zero-day supply-chain malware detection · Apache-2.0

Zero-day malware detection that runs anywhere, reads anything.

VirusTotal and Socket answer one question: has anyone reported this yet? Atomdrift reads the artifact and decides at scan time, on your hardware. No list to be on, no window to sit in, no code leaving your machine. Measured every day against live malware under 48 hours old.

curl -fsSL https://install.atomdrift.org/scan.sh | sh

Apache-2.0 · Linux, macOS, Windows, BSD, illumos · no telemetry · what's different ↓

68%
0-day malware caught
0%
false positives
at -l 25 — the shipped default, untuned

2026-09-05 · 50 live samples, median 14 h old.

Caught, per engine identical cohort · a skip counts as a miss

VirusTotal
74%
Atomdrift
68%
malcontent
58%
ClamAV
32%
Aikido Malware
6%
GuardDog
2%
SafeDep
0%
Socket
0%
flagged hostile flagged suspicious unsupported file format errored

Every engine is scored at its most sensitive setting, ours included. Grey is scope: the engine only reads registry packages, so the rest of the cohort counts as missed. Red is failure: the engine reads the format but timed out or crashed, which also counts as missed.

Detection vs. false positives every rival ships one setting — -l is a dial you set

0% 25% 50% 75% 100% 0% 2% 4% 6% 8% 10% HIGH DETECTION · LOW FALSE POSITIVES Zero-day malware caught · more is better → of 50 malicious packages, none more than 48 hours old False positives · fewer is better ↑ of 50 known-safe packages VirusTotal — 74% caught (37/50), 0 false positives of 50 Atomdrift — 68% caught (34/50), 0 false positives of 50 malcontent — 58% caught (29/50), 5 false positives of 50 ClamAV — 32% caught (16/50), 0 false positives of 50 Aikido Malware — 6% caught (3/50), 0 false positives of 50 GuardDog — 2% caught (1/50), 0 false positives of 50 SafeDep — 0% caught (0/50), 0 false positives of 50 Socket — 0% caught (0/50), 0 false positives of 50 VirusTotal 74% Atomdrift 68% malcontent 58%5 false positives ClamAV 32% Aikido Malware 6% GuardDog 2% SafeDep 0% Socket 0%

Detection and false-positive chart data

  • VirusTotal: 74% caught (37 of 50), 0 false positives of 50.
  • Atomdrift: 68% caught (34 of 50), 0 false positives of 50.
  • malcontent: 58% caught (29 of 50), 5 false positives of 50.
  • ClamAV: 32% caught (16 of 50), 0 false positives of 50.
  • Aikido Malware: 6% caught (3 of 50), 0 false positives of 50.
  • GuardDog: 2% caught (1 of 50), 0 false positives of 50.
  • SafeDep: 0% caught (0 of 50), 0 false positives of 50.
  • Socket: 0% caught (0 of 50), 0 false positives of 50.

False-positive axis inverted and cropped at 10%. Hover any mark for exact counts.

Every previous run last 30 days · a fresh cohort each time

Most engines swing sixty points as the samples change. Judge us on the worst night, not the best.

False-positive rate by filetype last 7 days · top 10

File types that most often trigger a false alarm on known-good packages. Both sides list the same types in the same order, ranked by how often either engine flagged them.

atomscan

javascript
100%
exe
50%
crx
25%
unknown
10%
vsix
9.1%
npm
0.9%
apk_alpine
0%
crate
0%
xz
0%
zip
0%

VirusTotal

javascript
0%
exe
0%
crx
0%
unknown
0%
vsix
0%
npm
0%
apk_alpine
0%
crate
0%
xz
0%
zip
0%

500 known-good picks across the window (after adjudication). A type can show 0% on one side when only the other engine flagged it.

What's different architecture, not features

VirusTotal · Socket · reputation services
Atomdrift
Verdict
A lookup: hash or package name against what they have already seen.
A decision. Capabilities extracted from the artifact, scored by a local model. Nothing to be listed on.
Detection gap
Someone reports it, an analyst confirms it, the list ships. Hours to days. That window is the attack.
None. The verdict at hour one is the verdict at day thirty.
Reads
Packages from registries they index, or file hashes. Binaries, firmware, images and private code come back unsupported.
100+ formats: source in every major language, ELF, PE, Mach-O, firmware, container images, archives, documents, config. 47 registries. Anything private.
Runs
On their servers. Your code leaves your boundary and their uptime sits on your critical path.
On yours. CPU only. Linux, macOS, Windows, BSD, illumos, Android. Air-gapped if you want. No telemetry, no per-query bill.
Keeps up
Analyst-written signatures, on their schedule.
Retrains itself. New samples, threat feeds and published research become roughly 1,000 rule updates a day. Weekly to open source, real-time to Enriched subscribers.
False positives
One sensitivity, theirs.
A budget you set: -l is benign files flagged per 100 million, calibrated per file type. Every verdict lists the capabilities that drove it, so a false positive is a bug you can read and fix.
Integration
API key, rate limit, terms of service. Shipping their verdicts inside your product is a contract negotiation.
Built to be embedded. CLI with exit codes, JSON and JSONL, long-running HTTP service, distributed workers, Rust libraries. Pin tool, rule and model versions for reproducible scans. Apache-2.0: ship it inside what you sell without asking.

Keep VirusTotal for what it is good at: consensus on malware the world already knows. Atomdrift covers the rest — the package published this morning, the binary no registry indexes, the code you cannot send to anyone.

Where each engine lost this run's samples: files it could not read, and packages it indexes but had no entry for when we asked. 37 of 50 samples weren't registry packages at all — binaries, executables, archives. That is the shape of firmware, images, and your own code.

EngineCouldn't readCould look upNo record yetCaught
SafeDep 464 40
Aikido Malware 464 13
GuardDog 464 1
Socket 3713 130

“No record yet” is the detection gap, measured: a live malicious package the vendor indexes and had no entry for at the moment we asked. VirusTotal, Atomdrift, malcontent, ClamAV read every sample. How it decides →

Who it's built for tuned for software written by strangers

Open-source marketplaces

Registries, app stores, extension galleries, model hubs: anything that hosts code other people wrote. Scan at publish time, before the first download, on infrastructure you run. One engine across 47 package ecosystems, and a false-positive budget you can defend to maintainers.

Security vendors

Add zero-day coverage to a SAST, SCA, firmware, container or EDR product without building a malware team. Embed the CLI, the HTTP service or the Rust libraries; every verdict comes with the evidence behind it. OEM rights and support from the engineers who build it.

Anyone with a machine

Something on the box looks wrong. Point it at a file, a directory, an archive, a running process or the whole host. More file types, more languages and more operating systems than any other scanner, open or commercial. Nothing leaves the machine.

Prefer a hosted API? Our sponsor, isotope¹³, has you covered.

Appendix — samples and methodology all 50, every one linked
068a9dd4151375ff833ab4fa5f74304f2130b37d7684c0812445767f1a2ca69b 07096260da7d62c70fc17290a7aff587.exe 0f28b1c313df22755fcbb95a77b4f2ffccd85d612357df00c9c92ad52892dbb9 pkg:pypi/[email protected] 10344c6e5ccd5c6d77b8c41c9b3c1b8df224add85659770ada88f6d0f6404334 1472fde59704ad8c3017ab053972044c674390ea5cdf8ff3a84afcf9fdc4a605 17cef7494d5c744d34630815ca83080e01066e8c0f4d0baabbd0ef5dd902dd1c 2026-09-04_8129788f88de9cae767f4519a41ef927_bkransomware_elex_maze_rhadamanthys 2026-09-04_837f3349c45d1537915197eac7c11b55_cobalt-strike_frostygoop_hive_luca-stealer_salatstealer_sliver 2026-09-04_8c9ebcd40e7a8d04d3f8dd5de6cbd936_amadey_elex_remcos_smoke-loader_stop 2026-09-04_db19600e41b531ebdd4744ecb8d9f1c2_amadey_elex_glassworm_luca-stealer_lynx_magniber_njrat_rhadamanthys 24f3873639dd30d0ad350f6005dc616b7851af4a1f296f119e1c45b020c5fcd6.elf 298dfa66b8c23d5a585131af828708ca86fffecc42ca32f7a6c1da0aa6aa9931 2fd7b760adcdbe5119c8cbc9d93e8f9ab3757d3c7f785cd34103d14b65ef0b63 473e825b0c5fa7d865f2953c72026ebf2ab602781635916ba0e8e6675abfac96 4b5ed2db4d4c48782e6926d8569f314f6aa36d8d6ec7100eaf1f561bd7626ff9 4dd0fe7a87759a0af89a7ed6fe1f33894bd37ce00b1d15c4f14b929fafe427b8 50758556749b256d0ca7d14ab25560ec06092fa998256a73c5f55a606a9b0540 5c7fd9650f323d7e48b8cd3d16c781d3794c58e30dc32842ef1bd68a056f0470 63cae88d8b844317b71abedffd85d8b3dabd5e63bc39d4365bc159d1c1ecbde7 6dd9cbb836647f0028f8569c5c1aa9594501dec9922e1f20c4b3b7ab43f3014f.zip pkg:npm/@bobfrankston/[email protected] aonhacgjmogphocecdbhkbmgbcpfdmlb.crx arm8 c9e74bbd738bb2c9b8e87f7c72d7708ec8ff01cb69c14b4c45a25ed175f43431 cojpblkijolfnchafjcnkjhkahnfcppi.crx Comprobante de pago BBVA.js CONFERMA D'ORDINE OE-202604673.vbs cwao-0.5.6.tgz d1d7865b26feef581aefde9d2b12cb4e1b420d9fc41adbcf3eb86b65677e32c6.bin d59c669bd911a424889c76384c53b7aa02df67edbb6013bacc7b9102035a5422 pkg:pypi/[email protected] dpnhllphmfgmhgibehjmbekgjceepppp.crx E0B6AB4C98284B7E6818D3331011D945.exe eb77a575422ce985ff6a5466d47946d71ff0116cee6cc8bdc493ed22458679f5 fb276f90f9005122205a63a98bc0ddba8e1499fb79e461e4212e436ddeb89707.elf ffhbgkfolmjdodcjjfliifplkbfdhken.crx hadgldgnglbhjbcoaaihkifphdhfjpbg.crx hnembaemjbciokbnhklbcngopfakpkeo.crx intercom-client-7.0.4.tgz ipjfgibgeafohhadcicgcgongehdliam.crx kekdfbckeonfhjnikcjpdigdeapjnfem.crx meta.json.zst node-ipc-12.0.1.tgz pkebmfenadkbamndhkmfliminhmhhgnf.crx pkg:pypi/[email protected] specs-6.11.2.tgz xinference-2.6.0-py3-none-any.whl xinference-2.6.1-py3-none-any.whl xinference-2.6.2-py3-none-any.whl
What "0-day" means here. Every detection sample was first seen in the wild within 48 hours — median 14 h, youngest 4.2 h: no signature written for it, no reputation, no download history to be anomalous against. Catching malware a feed has already named is a different, easier problem.

How this is scored. Every engine gets the identical cohort, and a skip counts as a miss for all of them — a file nobody scanned is a file that got through. A listing from a contestant's own feed counts only once an independent engine corroborates it. Known-good packages come from the freshest 48 hours of the open-source firehose and are re-checked later: one that turns out to be malware leaves that run's false-positive rates, and any engine that flagged it is credited with an early detection. We run this benchmark and we're one of the engines in it, so every sample, verdict and rate is published.

Engine versions: Atomdrift 2.8.0 · ClamAV 1.5.2 · GuardDog 3.2.0 · malcontent 1.25.9 (locally-run engines; VirusTotal, Socket, Aikido Malware, SafeDep are hosted services queried live, so they carry no pinned version).

Point it at anything.

Apache-2.0 · runs locally · no account, no index, no gap

curl -fsSL https://install.atomdrift.org/scan.sh | sh