
バイナリ、ソース、スクリプト向けの0-dayマルウェア検出(イマイチじゃないやつ)
Atomdrift Scanは、ソフトウェアサプライチェーンに対する0-day攻撃を検出するために設計された、MLベースの最新マルウェアスキャナーです。
決定論的で高速、柔軟であり、あらゆるワークフローやセキュリティツールに組み込み可能で、ファイル、アーカイブ、URL、PURL、またはプロセスに対して動作します。
2026年9月時点で、Atomdrift Scanは98%の0-day検出率を達成しており、商用・オープンソースを問わず他のどのスキャナーよりも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系システムでは、p7zipではなく上流の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: ルールセットが不完全 — スキャンがtraitセットで定義されたよりも少ないルールで実行されたため、敵対的でないという結果だけでは何も証明できません。再実行してください。
atomscanはテレメトリデータを決して送信しません。ただし、次の2つの理由でインターネットに接続します:
--no-updateまたはSCAN_NO_UPDATE_CHECK=1で無効化できます--follow=noneを設定します。他のマルウェアスキャナーとは異なり、Atomdriftでは-lフラグを使用して、許容可能な誤検知レベルの観点から感度を調整できます:
-l0: 厳格。誤検知が観測されていないポイントに信頼度カットオフを設定します。-l25: デフォルトの出荷ポイント: 1億ファイルあたり25件の誤検知。-l1000: 緩和。10万ファイルあたり約1件の誤検知。注: 1億サンプルを持たないファイル形式では、観測される誤検知率が要求レベルの最大5〜6倍になる可能性があります。結果には個人差があります。
生の--threshold-hostileおよび--threshold-suspiciousによるオーバーライドは、確率しきい値を直接細かく管理したいユーザー向けに利用可能ですが、これらの数値は安定していることが保証されておらず、これらのフラグは-lと組み合わせることはできません。
追加の解釈のために、ユーザーは--llmフラグを介してLLMへのアクセスを提供できます。このフラグには2つの目的があります:
デフォルトでは、atomscanは解釈された証拠(元のファイルではない)をhttp://localhost:8000/v1に送信します — OllamaやvLLMのようなローカルサービスで使用するためですが、Claude、ChatGPT、DeepSeekのようなリモートサービスを使用するように設定することもできます。
モデルはハードコードされていません: --llm-modelを渡さない限り、atomscanはエンドポイントが提供するモデルを問い合わせ、リストされている中で最大のものを使用します。Qwen/Qwen3.8-27Bを提供することを推奨します。
エンドポイントがベアラートークンを必要とする場合は、~/.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以上のファイルおよびコンテナタイプを認識します。代表的なカバレッジには以下が含まれます:
ルールセットには、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の下で利用可能です。
すべてのコントリビューションを歓迎します!
| カテゴリ | 形式 |
|---|
| バイナリとバイトコード | 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 |
| ビルド、マニフェスト、ロックファイル | 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イメージ、FreeBSD、Arch、Void、Gentooパッケージ |
| ドキュメントとデータ | OLE2、OOXML、OpenDocument、PDF、RTF、Markdown、HTML、XML、SVG、plist、JPEG、PNG、LNK、CHM、Python pickle |