关于 voyager-net
voyager-net 是面向基础设施运维人员的授权只读审计工具,用于检查自有的单个主机或域名。它检查 DNS、端口、TLS 和 HTTP 安全状况,并提供带严重性、置信度和修复说明的发现。
主要功能
- 01DNS 记录与邮件安全检查
- 02有限范围的 TCP 端口探测
- 03服务 Banner 识别
- 04TLS 证书与协议检查
- 05分级 HTTP 安全检查
- 06标注严重性和置信度的发现
适用场景
- 01检查 DNS 和邮件配置
- 02检查自有主机暴露的服务
- 03评估 TLS 证书和协议设置
- 04发现 HTTP 安全响应头缺失
MCP 相关
向 MCP 客户端提供 `scan_host` 工具。扫描默认拒绝,须设置 `authorized: true`。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
1收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ports | array | 否 | |
| target | string | 是 | 你拥有的单个主机或域。 |
| timeoutMs | integer | 否 | |
| authorized | boolean | 否 | 你声明拥有此目标或获准测试此目标。必需。 |
详细介绍
voyager-net
Voyager 的网络器官——对你拥有的单台主机或域名进行安全、只读、经授权的审计,让 AI Agent 找出基础设施中的漏洞并说明修复方法。
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)——域名只解析一次,并通过自定义 socket 查找,将 DNS、端口、TLS 和 HTTP 探测全部固定到同一个 IP,因此扫描过程中不会重新解析域名(杜绝 HTTP 的 DNS 重绑定路径)。解析出的 IP 会通过
ipaddr.js进行规范分类,并拒绝任何非公共地址——环回、私有、链路本地、CGNAT、NAT64、IPv4 映射的 IPv6 地址以及元数据地址。 - DNS——A/AAAA/MX/TXT/CAA 记录 + 电子邮件/CA 配置卫生检查,并且会评估记录内容:SPF
+all(任何人都可以发送)和 DMARCp=none(不执行策略)会被列为发现项,而不仅仅是检查记录是否存在。所有由目标控制的记录都会经过注入防护处理。 - 端口——使用普通 TCP
connect()对常见服务进行有限探测,并提供真实状态(开放 / 关闭 / 受过滤 / 无法连接——操作系统超时会显示为受过滤,而非关闭);不使用 SYN 技巧、不发送载荷,也不扫描端口范围/CIDR。 - 服务指纹识别——读取服务在连接时主动提供的 banner(SSH、SMTP、FTP、POP3、IMAP),以识别产品及版本(经过防护处理)。
- 未授权服务检测——对于预期需要身份验证的服务(Redis、Memcached、Elasticsearch、CouchDB、Docker API、ZooKeeper),会发送一条无害、只读的协议问候消息(例如 Redis
PING),只有在服务未要求凭据便作出响应时,才会报告该服务暴露。明确说明范围:此项以及 TLS/HTTP 检查器确实会发送字节(ClientHello、GET /、协议问候消息)——此审计是主动但安全的(不写入、不更改、不利用漏洞),并且仅针对你授权的主机运行。 - TLS——完整列出接受的协议版本(而不仅是协商出的版本);根据系统信任库验证证书链(报告任何验证失败,而不只是自签名证书);检查 RSA 密钥长度(EC/EdDSA 除外)、证书到期时间和颁发者。
- HTTP 配置卫生检查(分级)——状态、Server banner、HSTS/CSP 质量(检查较弱的
max-age、unsafe-inline/通配符,而不仅是是否存在)、点击劫持防护、逐个 Cookie 检查 Secure/HttpOnly(单独评估每个 Cookie)、CORS 通配符以及危险的凭据与来源组合、版本泄露,以及 HTTP→HTTPS 重定向。所有检查都固定到经过审核的 IP。 - 如实报告部分结果——开放的 TLS/HTTP 端口若无法检查,会报告为未知,绝不会归入“未发现问题”的结论。
对于指出已检测服务及版本的发现项,建议将其与 CVE 信息源进行核对——voyager-net 会检测版本;CVE 匹配仅作为查询,而 CVE 探测(Nuclei 等)不在范围内——这属于主动测试,是单独且限制更严格的能力,并非只读感知。
每条发现都包含严重性、置信度和明确的修复方法——例如:“证书将在 6 天后过期 → 续期并自动配置 ACME”、“mysql 可从公网访问 → 限制为私有网络”、“没有 DMARC → 发布 v=DMARC1; p=quarantine”。
安全 — 不容妥协
- 仅限已授权操作,默认拒绝。 未使用
--authorized(CLI)/authorized:true(MCP)时会拒绝执行。你必须确认自己拥有目标或有权测试目标。 - 仅限单个主机或域名。 不接受 CIDR 范围、IP 范围、列表、通配符和 URL — 它绝不会变成批量扫描器。
- 云元数据端点会被硬性拦截(169.254.169.254 等)。
- 只读。 它绝不会应用修复、利用漏洞、泛洪或修改任何内容。 并发数和超时时间均有限制;只进行普通 TCP 连接,不会像扫描器那样进行 SYN 扫描。
- 将不可信输出进行隔离。 每个由目标控制的字符串 — banner、 证书主题/颁发者/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 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。