
Runtime behavioral analysis tool that sandboxes suspicious packages in Docker, traces syscalls with strace, maps process cascades into directed graphs, and detects supply chain attacks using YARA signatures, ML anomaly detection, and temporal pattern analysis.

TraceTree デモ
TraceTree (cascade-analyzer) は、エージェンティック時代のために設計された自律型セキュリティ生物です。単純なスキャンを超え、堅牢で強化された拡張可能な検出エコシステムへと進化します。マスコットであるクモのように、TraceTree は8本の特殊な「脚」を使って開発ワークフローを包括的に保護するウェブを織り上げます。
TraceTree は、エージェントや人間がパッケージのインストールを信頼する前のレビューゲートとして使用できます。詳細な動作レシートの形状については、動作レシートのエクスポート を参照してください。このレシートは、ターゲットハッシュ、サンドボックスポリシー、観測された動作、アーティファクトハッシュ、判定、プライバシーのデフォルトを要約した、JSON/SARIF に対応した小型のレシート形状であり、生のシステムコールログを公開しません。
TraceTree/ ├── api/ # API stubs ├── codebase-analysis-docs/ # Architecture documents and knowledge guides ├── data/ # Behavioral signatures, rules, and training datasets ├── docs/ # Documentation assets ├── examples/ # Demo scripts and usage examples ├── frontend/ # Next.js/React web dashboard ├── graph/ # NetworkX directed graph builder ├── hooks/ # Git/Shell hooks for background monitoring ├── logs/ # Execution trace logs and strace outputs ├── macapp/ # Native macOS menu bar app ├── mascot/ # Console ASCII spider mascot ├── mcp/ # MCP server security testing module ├── ml/ # Machine learning classification and anomaly detection ├── monitor/ # Core syscall parser, YARA matching, and timelines ├── orchestrator/ # TypeScript multi-agent coordination server ├── repocheckai/ # Repository analysis engine (TypeScript/Node) ├── samples/ # Malware and benign files for sandbox tests ├── sandbox/ # Docker container manager and strace sandbox ├── test_targets/ # Mock packages/servers for detection testing ├── tests/ # Unit, integration, and system tests ├── watcher/ # File system change listener daemon └── worker/ # Background task execution worker
## TraceTreeスパイダーの8本の脚
1. **脚1: サンドボックス分離(罠)** — 隔離されたDockerコンテナ(または高性能な`direct`モード)でターゲットを実行し、脅威を物理的に封じ込めます。
2. **脚2: システムコール解析(神経系)** — プロセスがOSに対して行うすべての「振動」(システムコール)を監視する高精度エンジン。
3. **脚3: 行動グラフ化(ウェブ)** — プロセス、ファイル、ネットワークノードの相互作用の「カスケード」をNetworkX有向グラフでマッピングします。
4. **脚4: ML異常検知(直感)** — クリーン/悪意のあるパッケージの小規模な代表データセットとオプションのMalwareBazaarライブフィードでトレーニングされたカスタムRandom Forestモデルで、高い信頼度で悪意を予測します。
5. **脚5: YARAシグネチャマッチング(記憶)** — 既知のマルウェアDNAとエクスプロイトパターン(リバースシェル、暗号通貨マイナーなど)の統合ライブラリ。
6. **脚6: MCPセキュリティプロトコル(エージェントシールド)** — Model Context Protocolサーバーのための特別な保護で、AIエージェントが使用するツールを防御します。
7. **脚7: セキュリティガーディアンAI(プロアクティブウェブ)** — ローカルLLM(Qwen-Coder)を使用したコミット前の「スマートスキャナー」で、リークやインジェクションが履歴に残る前に検出します。
8. **脚8: 時間的・Nグラム分析(DNAスキャン)** — 時間を超えたアクションの*リズム*と*シーケンス*で脅威を識別します。
## 動作の仕組み```
target ──► Docker sandbox (network dropped) ──► strace -t -f
│
▼
strace log
│
┌────────────────┼────────────────┐
▼ ▼ ▼
strace parser signature temporal
(parser.py) matcher (sigs) analyzer
│ │ │
└───────┬────────┴────────────────┘
▼
NetworkX graph
(builder.py)
│
▼
ML anomaly detection
(RandomForest / IsolationForest)
│
▼
verdict
ip link set eth0 down)、そのため外部への接続試行はログに記録されますがブロックされます。strace -t -f -e trace=all でトレースされます。-t フラグでタイムスタンプが付与され時間分析が可能に、-f で子プロセスも追跡します。monitor/parser.py) — 複数行のstrace出力と [pid] 形式・裸のpid形式の両方を処理する正規表現ベースのパーサー。プロセス生成、ファイルアクセス、ネットワーク接続、メモリ操作を抽出します。各システムコールにはセキュリティ関連性に基づく重大度重み(0~9)が割り当てられます。monitor/signatures.py) — パースされたイベントストリームを data/signatures.json に定義された8つの振る舞いシグネチャパターンと照合します。各一致は、それを引き起こした具体的なイベントをリストアップした証拠を生成します。monitor/timeline.py) — タイムスタンプ付きイベントストリームから5つの時間ベースの振る舞いパターンを検出します(例:資格情報読み取り後5秒以内の外部接続)。graph/builder.py) — プロセス、ファイル、ネットワークノードを持つNetworkX有向グラフを構築します。同じPIDの連続イベント間に5秒以内の時間的なエッジを追加します。ml/detector.py) — グラフとパース済みデータから10特徴量のベクトルを抽出します。学習済みモデルがあれば RandomForestClassifier を使用し、そうでなければ10のハードコードされたクリーンパッケージベースラインで学習した IsolationForest にフォールバックします。重大度スコアと時間パターンカウントが最終的な信頼度を引き上げます。data/signatures.json で定義。各シグネチャには重大度(1~10)、必要なシステムコール、ファイルパターン、ネットワーク条件、照合する順序付きシーケンスがあります。
| シグネチャ | 重大度 | 検出内容 |
|---|---|---|
reverse_shell | 10 | 外部接続 → dup2 → execve /bin/sh |
container_escape | 10 | /proc/1/、/sys/fs/cgroup、/var/run/docker.sock の openat |
credential_theft | 9 | /etc/shadow、.ssh/、.aws/ の openat → 外部接続 |
typosquat_exfil | 9 | 秘密情報の読み取り(.env、.npmrc)→ pastebin/file.io/transfer.sh への接続 |
process_injection | 9 | mprotect PROT_EXEC → 非標準バイナリの execve |
crypto_miner | 8 | clone → clone → マイニングプールポート(3333、4444、14444、45700)への接続 |
dns_tunneling | 7 | getaddrinfo + sendto + socket ポート53/5353 |
persistence_cron | 7 | crontabパスの openat → 書き込み |
タイムスタンプ付きのstrace出力から検出。straceの -t フラグが必要です(デフォルトで有効)。
| パターン | 重大度 | トリガー条件 |
|---|---|---|
connect_then_shell | 10 | 外部接続 → 3秒以内に execve /bin/sh |
credential_scan_then_exfil | 9 | 機密ファイル読み取り → 5秒以内に外部接続 |
delayed_payload | 8 | 10秒以上のギャップの後、不審なアクティビティのバースト(ドロッパー挙動) |
rapid_file_enumeration | 7 | 1秒間に10回以上のファイルオープン(スキャン挙動) |
burst_process_spawn | 7 | 2秒間に5回以上の clone/execve |
24種類のシステムコールそれぞれに基本重大度重みがあります。例:
mprotect with PROT_EXEC: 9.0dup2 after a connect: 9.0execve of unexpected binary: 7.0connect to cloud metadata (169.254.x.x): 8.0connect to PyPI/npm CDN: 0.0(良性)openat of /usr/lib/python/*: 0.0(良性)総重大度スコアはML信頼度計算に反映されます。
すべての connect システムコールは次の4カテゴリのいずれかに分類されます:
| カテゴリ | 基準 | リスクスコア |
|---|---|---|
safe_registry | IPが既知のPyPI/npm/GitHub CDN範囲に一致 | 0.0 |
known_benign | 標準Webポート(80/443)で未分類ホストへ | 0.5 |
suspicious | クラウドメタデータ(169.254.x.x)、コンテナからのプライベートIP、または不審なポート(4444、1337、31337など) | 8.0~9.0 |
unknown | デフォルト | 3.0 |