Обнаружение 0-day вредоносного ПО для бинарных файлов, исходного кода и скриптов (которое не отстой)
Atomdrift Scan — это современный сканер вредоносного ПО на основе машинного обучения, предназначенный для обнаружения атак нулевого дня на цепочку поставок программного обеспечения.
Он разработан как детерминированный, быстрый и гибкий, встраиваемый в любой рабочий процесс или инструмент безопасности, и может работать с файлами, архивами, URL, PURL или процессами.
По состоянию на сентябрь 2026 года Atomdrift Scan имеет 98% обнаружения атак нулевого дня, опережая на +34% любой другой сканер: коммерческий или открытый.
Как Atomdrift достигает таких результатов? Во-первых, он охватывает больше, чем любой другой сканер:
Самое главное, правила постоянно обновляются с использованием обучения с подкреплением на новых образцах, блогах и технических статьях, что приводит к ~1000 обновлённых правил ежедневно.
Если вы используете UNIX-подобную систему (macOS, Linux, BSD, Solaris, illumos, Android):
curl -fsSL https://install.atomdrift.org/scan.sh | sh
Если вы используете Windows:
irm https://install.atomdrift.org/scan.ps1 | iex
Или, если у вас установлен Rust и вы просто хотите собрать из исходного кода:
make install
Если требуется более глубокий анализ бинарных файлов, вам также следует установить 7-Zip, rizin, upx и innoextract.
В Windows с помощью 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
В Unix-подобных системах устанавливайте оригинальный 7-Zip (brew install sevenzip, apt install 7zip), а не p7zip — его 7z не может читать APFS, поэтому содержимое .dmg остаётся непроверенным.
# 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
Коды выхода делают интеграцию с CI тривиальной:
0: все образцы безопасны1: обнаружен враждебный образец2: обнаружен подозрительный образец3: ошибка анализа4: набор правил был неполным — сканирование выполнялось с меньшим числом правил, чем определяет набор признаков, поэтому всё, кроме враждебного, ничего не доказывает. Перезапустите его.
atomscan никогда не отправляет телеметрические данные. Однако он обращается к Интернету по двум причинам:
--no-update или SCAN_NO_UPDATE_CHECK=1--follow=none, чтобы анализировать только запрошенный артефакт.В отличие от других сканеров вредоносного ПО, Atomdrift позволяет настраивать чувствительность в терминах приемлемого уровня ложных срабатываний с помощью флага -l:
-l0: строгий, устанавливает порог уверенности на уровне, при котором ложные срабатывания не наблюдались.-l25: значение по умолчанию: 25 ложных срабатываний на 100 миллионов файлов.-l1000: мягкий, примерно 1 ложное срабатывание на 100 000 файлов.ПРИМЕЧАНИЕ: Для форматов файлов, по которым у нас нет 100 миллионов образцов, наблюдаемый уровень ложных срабатываний может быть до 5-6 раз выше запрошенного уровня. YMMV.
Необработанные переопределения --threshold-hostile и --threshold-suspicious доступны
для пользователей, которые хотят напрямую управлять порогами вероятности, но эти значения не гарантируют стабильность, и эти флаги нельзя комбинировать с -l.
Для дополнительной интерпретации пользователи могут предоставить доступ к LLM через флаг --llm. Этот флаг служит двум целям:
По умолчанию atomscan отправляет интерпретированные доказательства (не исходный файл) на http://localhost:8000/v1 — для использования с локальным сервисом, таким как Ollama или vLLM; но также может быть настроен для использования удалённого сервиса, такого как Claude, ChatGPT или DeepSeek.
Ни одна модель не задана жёстко: если вы не передадите --llm-model, atomscan запрашивает у эндпоинта, какие модели он обслуживает, и использует самую большую из перечисленных. Мы рекомендуем обслуживать Qwen/Qwen3.8-27B.
Если эндпоинт требует bearer-токен, поместите его в ~/.tok/llm (режим 0600), и atomscan отправит его автоматически; --llm-key и SCAN_LLM_KEY переопределяют этот файл.
--llm также принимает цепочку переключения при отказе, разделённую запятыми, которая пробуется по порядку — --llm 'https://llm.isotope13.ai/v1,openrouter' оценивает на вашем собственном эндпоинте и обращается к платному только тогда, когда не может ответить.
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 обращается к https://openrouter.ai/api/v1. Ключ берётся из --llm-key, SCAN_LLM_KEY или ~/.tok/openrouter (первая непустая строка). --llm-model по умолчанию равен openrouter/auto (собственный авто-маршрутизатор OpenRouter), если опущен — остальная часть каталога не выбирается автоматически.
Linux make deploy принимает те же имена: LLM=openrouter (или LLM_URL=openrouter), и LLM_MODEL=qwen/qwen3.8-27b только для закрепления модели вместо openrouter/auto. Юнит не может читать домашний каталог оператора (ProtectHome=true), поэтому скрипт развёртывания копирует ~/.tok/openrouter в каталог состояния сервиса.
Сканер распознаёт более 100 типов файлов и контейнеров. Представительное покрытие включает:
| Категория | Форматы |
|---|---|
| Бинарные файлы и байт-код | Mach-O, ELF, PE, WebAssembly, Android DEX, Java .class, Python .pyc, BEAM |
| Исходный код | 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 |
| Файлы сборки, манифесты и 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 |
| Архивы и образы дисков | ZIP, TAR, gzip, bzip2, XZ, zstd, 7-Zip, RAR, CAB, ASAR, DMG, ISO |
| Пакеты и контейнеры | deb, rpm, APK, npm, wheel, egg, sdist, gem, crate, conda, NuGet, IPA, CRX, XPI, VSIX, OCI/Docker images, FreeBSD, Arch, Void, and Gentoo packages |
| Документы и данные | OLE2, OOXML, OpenDocument, PDF, RTF, Markdown, HTML, XML, SVG, plist, JPEG, PNG, LNK, CHM, Python pickle |
Набор правил включает платформо-специфичное поведение для Linux, macOS, Windows, Android, iOS, BSD-систем, AIX, Solaris, QNX, z/OS, ESXi, OpenWrt, VxWorks, RouterOS, FortiOS, PAN-OS, IOS-XE, Junos, NetScaler и устройств Ivanti.
Матрица сборки по умолчанию охватывает Linux, macOS, FreeBSD, OpenBSD, NetBSD, illumos, Solaris и Windows на нескольких архитектурах CPU. Глубина тестирования варьируется в зависимости от цели; см. рабочий процесс сборки для текущей матрицы.
Atomdrift Scan доступен под Apache License 2.0.
Все вклады приветствуются!