voyager-net について
voyager-netは、自組織の単一ホストまたはドメインを調べる、許可を前提とした読み取り専用監査ツールです。DNS、ポート、TLS、HTTPの安全設定を確認し、重大度・信頼度・修正案を含む結果を示します。
主な機能
- 01DNSレコードとメール設定の確認
- 02範囲を限定したTCPポート検査
- 03サービスバナーの識別
- 04TLS証明書とプロトコルの確認
- 05段階評価付きHTTPセキュリティ検査
- 06重大度と信頼度を示す結果
活用シーン
- 01DNSとメール設定の確認
- 02所有ホストで公開されたサービスの確認
- 03TLS証明書とプロトコル設定の評価
- 04HTTPセキュリティヘッダーの不足確認
MCP 対応
MCPクライアント向けに`scan_host`ツールを公開します。スキャンは許可なしでは実行されず、`authorized: true`が必要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
1掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| ports | array | いいえ | |
| target | string | はい | 自身が所有する単一のホストまたはドメイン。 |
| timeoutMs | integer | いいえ | |
| authorized | boolean | いいえ | 対象を所有している、またはテスト許可を得ていることを表明します。必須です。 |
詳細
voyager-net
Voyager のネットワーク器官 — 所有するホストまたはドメインを対象とした、安全で読み取り専用の許可済み監査を行い、AI エージェントがインフラの問題を見つけて、修正方法を説明できるようにします。
Voyager はウェブ(@dir-ai/voyager)、リポジトリ
(@dir-ai/voyager-repo)、そしてここではネットワークに踏み込みます。これは感覚です。問題を見つけます。修正の適用(「手」)は、設計上、同意が必要な別の器官です。AI が単独で稼働中のインフラを変更してはなりません。
voyager-net scan yourhost.example.com --authorized
voyager-net scan 10.0.5.20 --authorized --ports 22,80,443,5432
チェック項目(読み取り専用)
- 一度だけ名前解決し、IP を固定(HTTP を含むすべてのプローブ) — ドメインの名前解決は一度だけ行い、カスタムソケットルックアップによって、DNS、ポート、TLS、HTTP の各プローブをすべて同じ IP に固定します。そのため、スキャン中に名前が再解決されることはありません(HTTP の DNS リバインディング経路を封じます)。解決された IP は正規の方法で分類され(
ipaddr.jsを使用)、ループバック、プライベート、リンクローカル、CGNAT、NAT64、IPv4 マップ IPv6、メタデータなど、パブリックではないアドレスはすべて拒否されます。 - DNS — A/AAAA/MX/TXT/CAA とメール/CA の衛生状態をチェックし、内容も評価します。SPF の
+all(誰でも送信可能)や DMARC のp=none(強制措置なし)は、単なる存在確認ではなく検出事項として扱います。ターゲットが制御するレコードはすべてインジェクション対策のためにフレーミングされます。 - ポート — プレーンな TCP
connect()による、一般的なサービスを対象とした範囲限定のプローブです。実際の状態(open / closed / filtered / unreachable)を判定します(OS のタイムアウトは closed ではなく filtered として判定します)。SYN を使った小細工、ペイロード、範囲/CIDR の総当たりスキャンは行いません。 - サービスのフィンガープリンティング — 接続時にサービスが自発的に送信するバナー(SSH、SMTP、FTP、POP3、IMAP)を読み取り、製品名とバージョンを特定します(フレーミング済み)。
- 認証不要サービスの検出 — 認証が必要なサービス(Redis、Memcached、Elasticsearch、CouchDB、Docker API、ZooKeeper)には、無害で読み取り専用のプロトコルハローを 1 回だけ送信します(例:Redis の
PING)。認証情報を求めずに応答した場合に限り、そのサービスが公開されていると報告します。対象範囲は正直に示します。このチェックと TLS/HTTP インスペクターはバイト列(ClientHello、GET /、プロトコルハロー)を送信します。つまりこの監査はアクティブですが安全です(書き込み、変更、エクスプロイトは行いません)。また、許可されたホストに対してのみ実行されます。 - TLS — ネゴシエートされたバージョンだけでなく、受け入れ可能なプロトコルバージョンの全一覧、システムストアに対する証明書チェーンの信頼性(自己署名だけでなく、あらゆる検証失敗を報告)、RSA 鍵のサイズ(EC/EdDSA は対象外)、証明書の有効期限と発行者。
- HTTP の衛生状態(評価付き) — ステータス、Server バナー、HSTS/CSP の品質(単に設定の有無だけでなく、弱い
max-age、unsafe-inline/ワイルドカード)、クリックジャッキング対策、Cookie ごとの Secure/HttpOnly(各 Cookie を個別に評価)、CORS のワイルドカードと危険な認証情報付きオリジンのケース、バージョン漏えい、HTTP→HTTPS リダイレクト。すべて検証済み IP に固定されます。 - 不確かな結果は正直に報告 — 開いている TLS/HTTP ポートを検査できなかった場合は、問題なしという判定に含めず、UNKNOWN と報告します。
検出されたサービス名とバージョンを示す検出事項では、CVE フィードとの照合を推奨します。voyager-net が検出するのはバージョンです。CVE の照合は検索の範囲内ですが、CVE のプロービング(Nuclei など)は対象外です。これはアクティブなテストであり、別途、より厳格な制限が必要な機能であって、読み取り専用の感覚ではありません。
各検出事項には、重大度、信頼度、修正方法の説明が含まれます。例:「証明書の有効期限が 6 日後です → 更新し、ACME を自動化する」、「mysql にパブリックから到達可能です → プライベートネットワークに制限する」、「DMARC がありません → v=DMARC1; p=quarantine を公開する」。
安全性 — 妥協不可
- 許可された対象のみ、フェイルクローズ。
--authorized(CLI)/authorized:true(MCP)を指定しない場合は拒否されます。対象の所有者である、またはテストの許可を得ていることを表明してください。 - 対象はホストまたはドメインを1つのみ。 CIDR 範囲、IP 範囲、リスト、ワイルドカード、URL は拒否されます。大量スキャナーになることはありません。
- クラウドメタデータのエンドポイントは厳格にブロックされます(169.254.169.254 など)。
- 読み取り専用です。 修正の適用、悪用、フラッド、変更は一切行いません。 同時実行数とタイムアウトに上限を設けています。スキャナーの SYN スイープではなく、通常の TCP 接続を行います。
- 信頼できない出力は枠組み化されます。 対象が制御するすべての文字列 — バナー、 証明書のサブジェクト/発行者/SAN、Server/CSP ヘッダー、CORS 値、および DNS TXT/CAA/MX レコード — は、モデルに表示される前にインジェクションを除去します。
- 終了コード:
0問題なし ·1高/重大な検出事項あり ·2ツールエラー/未許可
所有していない、またはテストの明示的な許可を得ていないインフラストラクチャをスキャンすると、 お住まいの地域の法律に違反する可能性があります。このツールはご自身のシステムを監査するためのものです。
MCP
voyager-net mcp
ツール:scan_host — 同じ監査を実行します。フェイルクローズ方式です(authorized はデフォルトで無効)。
ライブラリ
import { scan } from '@dir-ai/voyager-net'
const brief = await scan('yourhost.example.com', { authorized: true })
const urgent = brief.findings.filter((f) => f.severity === 'high' || f.severity === 'critical')
ロードマップ
同じ信頼性の契約のもとで、Prowler/Steampipe(クラウド構成)、Trivy(CVE)、Hubble(フロー)をラップします。攻撃経路の相関分析、ドリフト(IaC での宣言 ↔ 実際の状態)にも対応します。その後、別途、同意を必須として、修復の「実行機能」を追加します。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。