Redthread 文档
Redthread 是一个 AI 原生应用保护平台(ANAPP),由 Redthread驱动。它以无代理为先——交付核心价值无需安装任何组件——每项能力都是一个 按工作区开启的模块 ,统一在一个控制台中管理。
Redthread 从构建地图开始 ——因为在你弄清智能体、代码、云和基础设施如何相互连接之前,一份发现项列表终究只是一份列表。它为你的整个资产构建 一张图谱 ——涵盖智能体、应用、代码、云账户、身份、你已在运行的安全控制,以及它们能够触及的数据——每个模块都读写同一张图谱,因此你首先看到的是跨越多个层面的风险,而不是列表上一条孤立的发现项。
在这张地图之上,平台以你按工作区启用的模块形式运行:
- AI 风险评估 (评估与整合)——免费、无代理的入口:你运行的每一个 AI,优先排列的有毒组合,并映射到 OWASP LLM 与智能体应用 Top 10;此外还可以无代理方式接入,获得态势评分、无人监控的 AI 暴露面,以及一份 替换映射 ,列出 Redthread 模块可替代的现有工具,并附带基于输入数据的 整合 ROI。
- 漏洞利用验证 (AI 应用测试)——证明评估中排名最高风险的路径:自主智能体依据 OWASP LLM Top 10(映射到 MITRE ATLAS)探测你的聊天机器人、智能体和 RAG 端点;每一项发现都附带可复现的概念验证。
- 影子 AI 发现 ——盘点整个资产中每一项 AI 驱动的功能,包括无人登记的功能。
- 云与基础设施态势 ——以无代理方式连接云(无需安装任何组件),映射资产、身份和数据,对敏感存储进行分类(DSPM),并揭示跨云攻击路径。
- 端点遥测(仅检测) ——可选的核心内置轻量代理,运行在操作系统安全接口上,上报主机上的清单与态势。它从不拦截;实时防护是路线图上的合作伙伴附加组件。
- Agentic Trust & Protection Platform ——为每个智能体/身份分配 SPIFFE ID,并基于已证实的漏洞利用广播带签名、带 TTL 的信任状态事件(safe/unsafe/revoked),让编排器、网关和 SIEM 在数秒内作出响应。参见 Agentic Trust & Protection Platform。
- CI/CD 门禁 ——在每个拉取请求上扫描,并阻止会引入已证实攻击路径的合并。
- 持续化平台 ——带漂移与趋势的定期重新评估,使覆盖情况反映本周生产环境的实际状态。
- 修复与报告 ——简明的修复方案和拉取请求草稿;证明函(Letter of Attestation)、完整技术报告及其机器可读版本,并映射到审计人员关注的框架。
- 身份与访问 ——为你的工作区提供 SSO、SCIM 预配、角色和审计日志。
已证实,而非推断。 发现是指引擎真正触达或利用过的问题,并附有精确的复现步骤;只有在图谱能够支撑的地方,我们才声明覆盖。平台采用无代理、检测优先的设计——任何防护/拦截操作都是经签名、需主动启用、由客户掌控的例外,绝非默认行为;我们推送到传感器的每一次更新,都要经过 AI Rollout Safety 门禁的分阶段发布(金丝雀环、自动叫停)。
本文档涵盖 入门、 平台架构、 核心概念 (说明平台如何运作)、基于任务的 指南,以及完整的 API 参考 ,让你可以从 CI 或自己的脚本驱动每个模块。
最新动态
2026年10月31日
- 白标报告。 在付费方案中,所有者可在 设置 → 常规 → 报告品牌 中设置公司名称、联系方式和徽标。合规报告和证明函随后会将贵公司显示为签发方;除非勾选隐藏选项,否则 Redthread 会作为平台被注明。
- 传感器更新的分阶段发布已上线。 新的终端代理版本经过校验后,先提供给金丝雀环(主机的 1% → 10% → 50% → 100%),若某一环没有恢复正常则自动停止。
- 资产只需输入一次。 渗透测试扫描现在从您资产中已有的站点里选择,新网址只保存一次。对已登记站点的手动扫描会使用该站点的知识和历史。立即扫描、定时扫描、漂移重扫和 CI 触发器也和手动扫描一样要求已验证的域名。基础设施扫描可以添加另一个云,也可以只断开其中一个云。
- 每日 MCP 注册表扫描现已覆盖 53,270 个服务器。 每个服务器都会获得一份签名声明,当天的签名清单则锚定在公开的 Sigstore Rekor 日志中。10 月 30 日的扫描发现:1,489 个条目调包(名称现在指向另一个域名或软件包所有者)、227 个条目引用了从未发布过的版本、35 个软件包由并非所声明的那个代码库构建。参见 实时数据。
- 工具定义会生成指纹(规则集 atf-6)。 对于无需凭据即可响应的远程服务器(目前为 20,504 个),扫描会记录工具列表的 sha256 指纹,并判定工具已变化而版本未变的服务器检测失败,这就是 rug-pull 手法。把关和钩子都会拒绝它。
- 适用于 Claude Code 和 Cursor 的钩子,以及 AIBOM(预览版)。
atpp hook claude|cursor会在每次 MCP 工具调用执行之前,对照服务器的签名声明进行检查。atpp check-config --cyclonedx会为您已配置的 MCP 服务器生成 CycloneDX 1.6 物料清单。 - Enforce 开始检查内容(预览版)。 网关现在会检查智能体流量的内容:提示注入指令、请求中外泄的密钥,以及被投毒的 MCP 工具列表。在您将某个身份切换为强制执行之前,它只做观察;它依靠模式匹配,因此换一种说法就可能绕过它:它只是其中一层防护,而不是保证。
- 工作区签名密钥已移出应用。 用于签署您的信任事件的密钥现在位于单独的签名服务中,由 Oracle Cloud Vault 的密钥封装保护。应用可以请求签名,但无法读取或复制该密钥。
- 信任账本无法被编辑。 智能体信任事件存储在 PostgreSQL 中,数据库本身会拒绝对账本的更新、删除和截断,因此这一保证不依赖于应用的行为是否正确。
- 合规报告和证明函可按标准在应用内打开。 可选择 SOC 2、ISO 27001、ISO 42001、PCI DSS v4.0、GDPR、HIPAA、NIST CSF、NIST AI RMF 或欧盟 AI 法案(EU AI Act),然后下载(HTML、PDF、JSON),或通过电子邮件或 Slack 分享。这些视图是支持审计的交叉引用,绝不是认证。参见 报告与证明。
- 网站能识别您已登录。 菜单会显示“控制台”而不是“登录”,需要登录才能查看的文档链接会在您登录后带您回到对应章节。
- 账户和会话数据会被安全写入。 写入是原子的并保留恢复副本,因此崩溃不会再截断您的工作区,读取失败也不会再变成一个空的工作区。
2026年10月7日
- Oracle Cloud 现可在所有 Oracle 账户上连接。 2023 年以来创建的账户使用身份域,此前因我们的扫描用户没有电子邮件地址而拒绝了它。一键设置现在会为其配置电子邮件地址,其用户、组和策略均以 Redthread 命名。
- 端点传感器只需一条命令即可安装。 在 Estate Scan 中生成密钥,然后在 macOS、Linux 或 Windows 上粘贴一条命令。它会校验下载文件、安装后台服务、发送首份报告,并在机器出现时在屏幕上确认。同一屏幕上还提供对应的卸载命令。
- 每台上报的机器都会保留在您的资产中。 以前每份新报告都会替换整个列表,因此只显示最后一台上报的机器。现在每份报告只更新其自身对应的机器,且云重新扫描后传感器仍会保留在图谱上。
- 云 VM 上的传感器会与该 VM 合并。 在 AWS、Oracle Cloud、Azure 或 Google Cloud 上,传感器会读取其实例 ID,因此云扫描已发现的 VM 会显示为同时包含两种视图的单个节点。
- 通过您自己的 Cloud Shell 覆盖现有云 VM。 只需一条命令,即可使用您自己的登录凭据,在 Oracle Cloud、Azure 或 Google Cloud 中每台运行中的 VM 上安装传感器。Redthread 不会获得对您 VM 的任何访问权限。
- 新建云 VM 在首次启动时安装。 将启动脚本填入 VM 的 startup-script 字段,新 VM 首次启动时即会安装永久传感器。
- 渗透测试扫描次数随您的资产规模增长。 每个付费套餐每 10 个工作负载每月包含一次渗透测试扫描(Starter 3 次,Growth 15 次,Enterprise 15 次起)。超出部分可使用扫描包或按次付费。详见 套餐。
- 在一张地图上查看全部资产。 Redthread Flow 现在打开时显示资产地图,涵盖每个云、每台机器和每个身份以及它们之间的连接,包括跨云连接。云问题和攻击路径在左侧菜单中有独立页面。
- 扫描每个已连接的云。 连接了多个云(例如 AWS 和 Oracle Cloud)时,“扫描我的资产”现在会逐一扫描,并分别保存每个云的发现和图中对应部分,因此扫描一个云绝不会替换另一个云。
- 您的 Mac 按名称显示。 Mac 现在以其电脑名称显示,而不是网络地址。
指南:连接您的全部资产
目标:将每个来源各连接一次,这样只需一次 扫描我的资产 ,即可映射您的网站、代码、云、机器以及其上运行的 AI。此处所有连接均为只读,且免费。各步骤可按任意顺序完成; 资产扫描 中的每个通道在连接后都会变为绿色。
开始之前
- 使用您的工作邮箱登录 app.redthreadsec.com 。
- 点击验证邮件中的链接。完成验证前,扫描功能保持锁定。
- 打开 资产扫描。这是登录后的第一个页面。
1. 网站与应用
- 在 网站与应用 通道中,粘贴您的主网站或应用地址并添加。
- 对每个公开站点重复此操作。无需任何凭据;我们只读取公开页面。
- 如需日后对某个站点运行渗透测试,需先证明您拥有该站点(如何)。
2. 代码
- 在 编号 通道中,点击 使用 GitHub 登录。
- 批准只读访问。系统会扫描您的代码仓库,查找 AI 框架、密钥和基础设施代码。
3. 云与基础设施
每个云只需一键即可连接,授予的只读访问权限可随时在您自己的控制台中撤销。云连接后,首次扫描会自动运行。
- AWS: 点击 打开 AWS 并创建角色,勾选 IAM 确认项,点击 创建堆栈,等待约一分钟,然后在 Redthread 中输入您的 12 位 AWS 账号。您不是负责 AWS 的人?请使用 获取要发送的链接。
- Azure: 在 不使用 AWS?下,选择 Microsoft Azure,使用 Microsoft 账号登录,批准 Redthread,选择订阅并点击 Create。
- Google Cloud: 选择 Google Cloud,使用 Google 账号登录并批准授权,然后选择要扫描的项目。
- Oracle Cloud: 选择 Oracle Cloud,点击 打开 Oracle Cloud 并创建访问权限 ,并以管理员身份登录。勾选 I have reviewed and accept the Oracle Terms of Use,点击 下一步 两次,勾选 Run apply 并点击 Create。返回 Redthread;几分钟内即可完成连接。
之后的扫描不会定时自动运行。如需获取变更,请点击 扫描我的资产,或 扫描 (位于对应云的卡片上)。
4. 端点传感器(可选)
传感器监控一台笔记本电脑、服务器或云 VM,并上报其软件、安全设置以及其上运行的 AI 工具。它从不拦截任何操作。
- 在 安装端点传感器 通道中,点击 生成注册密钥。
- 笔记本电脑或服务器: 将 macOS 或 Linux 命令复制到 Terminal 中,或将 Windows 命令复制到 PowerShell 中。在服务器上,请将
sudo放在sh前面,以便为整台机器安装。屏幕会显示该机器何时开始上报。 - 您已在运行的云 VM: 打开 现有云 VM:在全部 VM 上安装,复制适用于您的云的命令,并粘贴到该云的 Cloud Shell 中。在 Oracle Cloud 中,Cloud Shell 位于右上角的 Developer tools 下;在 Azure 和 Google Cloud 中,它是控制台顶部的 Cloud Shell 图标。该命令会在每台运行中的 VM 上安装,并输出摘要。在 AWS 上,请在每个实例上运行安装命令。
- 新建云 VM: 打开 新建云 VM:自动安装 ,并在创建 VM 时将脚本粘贴到其 startup-script 字段中。
- 移除传感器: 在该机器上运行 卸载 下方的命令。
5. AI 智能体与服务
无需填写任何内容。它们会从上述来源中被发现,并列入您的 AI 清单。
6. 扫描
- 点击 扫描我的资产。它会映射所有已连接的内容,且绝不会消耗您的渗透测试扫描次数。
- 打开图谱和 发现结果 ,查看您的资产、其上的 AI,以及它们之间的攻击路径。
- 如需对单个应用进行验证漏洞利用的渗透测试,请启动一次渗透测试扫描。Free 套餐终身包含一次;付费套餐每 10 个工作负载每月包含一次。
快速入门 — 在浏览器中
查看结果的最快方式。无需安装,无需绑卡。
- 创建账户。 访问 app.redthreadsec.com/app 并使用邮箱注册。最好使用工作邮箱,个人邮箱也可以。无需绑卡。
- 连接你的资产。 你会进入 资产扫描。连接多少由您决定——网站 URL 无需任何凭据,GitHub 只需一键,每个云也只需一键,端点传感器每台机器只需一条命令;只读的云连接是覆盖范围提升最大的一步。分步指南: 连接您的全部资产。对所有这些来源的发现均免费且不限次数;仪表会显示仍未覆盖的部分,且不会阻止扫描。
- 验证邮箱。 点击我们发送给你的链接。这将解锁主动扫描。(没收到?请在应用中使用“重新发送”。)
- 对一个目标发起渗透测试。 如需主动的、证明漏洞可利用的扫描,请粘贴你应用的 预发布环境 URL ——即应用正在运行的实时地址(不是生产环境)。也可以拖入你的代码(
.zip文件)以进行更深入的扫描。点击 开始扫描。 - 观察扫描过程。 扫描在隔离沙箱中运行,通常几分钟内完成。你会实时看到它逐类探测。
- 查看发现项。 每个已证实的漏洞都附带其严重程度、影响和简明的修复方案。在付费套餐中,每项发现还包含可运行的概念验证和修复草案。
更喜欢桌面应用? Redthread 也提供 Mac 和 Windows 版本,可从 下载页面获取。它是同一个产品,只是运行在独立窗口中;你的数据保存在服务器上,因此应用和浏览器始终显示同一个工作区。登录时,在应用中输入邮箱并打开邮件中的链接——浏览器会询问是否打开 Redthread,并将登录交给应用( millenniums:// 链接仅可使用一次,15 分钟后过期)。安装程序尚未使用 Apple 或 Microsoft 证书签名,因此下载的副本在你确认一次之前会被拦截。在 Mac 上,使用 下载页面 中的单行终端安装命令可完全避免该提示;若使用 .dmg,则需通过以下路径确认一次: 系统设置 → 隐私与安全性 → 仍要打开。在 Windows 上,点击 更多信息 → 仍要运行。
快速入门 — 使用 API
更喜欢从终端或 CI 驱动?应用的所有操作都是 REST 调用。你的 访问令牌 在注册时创建并显示在应用中;将其放在 Authorization: Bearer 请求头中。
1. 检查你的账户
确认令牌有效,并查看你的套餐和剩余配额。
curl https://app.redthreadsec.com/api/me \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
{ "tenant": "acme-3f9a2c", "plan": "starter", "plan_display": "Starter", "poc": true,
"scans_used": 1, "scans_limit": 5, "apps_used": 1, "apps_limit": 1, "verified": true }
2. 开始扫描
提供一个 target。可选择添加 source (代码库或路径)以进行更深入的白盒扫描,以及一个 budget 支出上限。
curl -X POST https://app.redthreadsec.com/api/scan \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"target":"https://staging.yourapp.com/chat","budget":10}'
{ "run_id": "20260731-abc123" }
3. 读取结果
轮询该运行,直到 running 就是 false,然后读取其发现项。
curl https://app.redthreadsec.com/api/runs/20260731-abc123 \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
完整流程就是: me → scan → runs/<id>。 API 参考 记录了每一个字段。
工作原理
Redthread 是无代理的:你连接一个目标或一个云,按工作区开启所需模块,一切都在我们的云端运行。每个模块的底层都是同一个理念—— 图谱。
- 映射。 Redthread 根据你连接的任何来源——无代理云角色、代码库、正在运行的应用——为你的资产构建一张图谱,涵盖智能体、应用、代码、云账户、身份以及它们能触及的数据。
- 评估。 你启用的模块在这张地图上运行。自主智能体在隔离沙箱中对你的 AI 应用进行渗透测试;影子 AI 发现盘点每一个模型暴露面;云与基础设施态势及 DSPM 对资产和敏感数据进行分类;依赖项 CVE 分析检查你继承的风险。
- 证明。 发现项是引擎实际触达或利用的问题——并附带复现的确切步骤。只有真实结果才会成为发现项;未经证实的线索会被单独保留。没有任何推断。
- 排序。 发现项会回写到图谱上,因此跨越多个层面的风险——例如一个面向互联网的应用,其凭据能够触及另一个云中的分级数据——会排在孤立问题列表之上。
- 行动。 每项发现都附带简明的修复方案,并可按需生成拉取请求草稿。CI 门禁会阻止会引入已证实攻击路径的合并,修复流程还可以触发签名 webhook,或创建 Jira / ServiceNow 工单。
核心产品无需在你的系统上安装任何组件;模块通过云端按工作区开启(参见 架构图)。需要更深入时可选用代理:用于在你网络内部扫描的轻量、仅出站 连接器 、Kubernetes eBPF 运行时传感器,以及按主机部署的 端点代理 ——全部 仅检测,从不拦截。AI 应用扫描在每次扫描独立的隔离 Docker 沙箱中运行,扫描结束后即销毁。
工具: 由前沿 LLM 驱动的自主 AI 智能体,以我们的漏洞技能包(OWASP LLM Top 10 2025 + MITRE ATLAS)为指导; CVSS 3.1 评分;依赖项 CVE 通过 osv-scanner检测;资产图谱可导出为普通的 node-link JSON。旗舰模块是 AI 应用渗透测试 ——本节其余部分介绍每个模块及其背后的 API。
平台架构
客户可在应用内阅读此部分: 登录 后打开任意文档链接。
端点传感器:采集哪些数据以及如何使用
传感器运行在一台笔记本电脑、服务器或云虚拟机上。它只读取和上报,绝不会阻止、终止或更改任何内容。它在启动时以及之后每 15 分钟发送一次报告;在两次报告之间,它每 20 秒检查一次正在运行的 AI 工具,因此短时运行也会被统计。如需在安装前准确查看某台机器将发送的内容,请运行 redthread-agent -print:它只打印报告,不会发送任何内容。
报告包含哪些内容
| 数据 | 示例 | 当前用途 |
|---|---|---|
| 机器 ID(哈希值) | 单向哈希值,绝非硬件序列号 | 用于区分不同机器,因此重新安装传感器绝不会产生重复记录。 |
| 机器名称 | Ben's MacBook Pro, millenniums-app | 显示在 Estate Scan 和图谱中。 |
| 操作系统 | macOS、Linux、Windows | 显示在机器旁边。 |
| 磁盘加密是否开启 | FileVault 已开启;已加密的 Linux 卷 | 显示在机器旁边。操作系统无法判断时则省略。 |
| 防火墙是否开启 | macOS 防火墙、firewalld 或 ufw | 显示在机器旁边。操作系统无法判断时则省略。 |
| 正在运行的 AI 工具 | ollama、vLLM、LangChain、CrewAI;每个工具的启动次数和启动时间 | 每个工具都会成为图谱上的一个 AI 代理,并关联到其所在的机器。在 Assess 中,它被计为一项 AI 缺口,因为传感器监控的是机器,而不是代理的决策。 |
| 云实例 ID(仅限云虚拟机) | EC2 或 Oracle 实例 ID | 将传感器与云扫描已发现的虚拟机关联起来,使该机器只出现一次。 |
| 实时检测(仅限 Runtime 附加组件) | 匹配的规则(加密货币挖矿程序、反向 shell、从临时目录运行的程序)、简短进程名和时间 | 显示在 Runtime 页面上,并挂到图上对应的机器。仅在 Runtime 开启时发送。 |
在 Assess 中,每台装有传感器的机器都计为已被 Redthread 的检测覆盖。在 Estate Scan 中, 安装端点传感器 会列出每台上报的机器,以及它上报的内容和时间。
绝不发送的内容
文件内容、键盘输入、屏幕截图、网络流量、环境变量、密码或令牌、原始硬件 ID,以及进程命令行。命令行仅在本机读取,用于识别 AI 工具,随后即被丢弃。
自动更新。 传感器会自动保持最新:每六小时检查一次是否有更新的发布版本,像安装程序一样用公布的 SHA-256 校验和进行验证,然后替换并重启。校验和不匹配的版本绝不会被安装。2026 年 10 月 7 日之前安装的传感器需要再运行一次安装命令才能获得此功能;之后无需再运行任何命令。要在某台机器上关闭更新,请设置 MAI_AUTO_UPDATE=0。
评估与整合
客户可在应用内阅读此部分: 登录 后打开任意文档链接。
Agentic Trust & Protection Platform
智能体身份 + 持续的信任信号,基于 SPIFFE。
代理信任与执行页面。 在控制台(治理 → 代理信任与执行)中,所有者可以一键开启或关闭 Agent Trust,并通过填写名称和范围(代理报告的工具或操作的确切名称)注册代理。每张代理卡片显示其徽章状态、影子或执行模式、身份和范围、网关最近一次为其判定流量的时间,以及磨合进度:影子判定数(共 100)、影子模式分钟数(共 60)和等待审核的本应阻止判定。所有者按组审核这些判定(应阻止 / 属于正常),磨合完成后即可将代理切换为执行。网关和执行模式标记为预览。
一条命令部署网关(预览)。 注册代理后,Redthread 会显示一条已填好身份和密钥的命令。在运行代理的机器上(macOS 或 Linux,Python 3.10+)运行它:它会将参考网关安装为 127.0.0.1:8888 上的后台服务,并打印启动代理所需的行(代理地址,以及网关在该机器上生成的证书)。影子模式下它判定并记录每个请求但不阻止任何请求;判定显示在代理卡片的“活动”和“磨合期”中。每张代理卡片还有授权编辑器(主机、方法、路径)。使用 --uninstall 运行即可卸载。
这是一个需主动启用的模块,为每个已发现的智能体和身份提供持久、可验证的身份,并实时广播其 信任状态 — safe / unsafe / degraded / revoked ——让编排器、智能体网关和 SIEM 能在数秒内作出响应,而不必等人去阅读报告。它基于你已有的图谱和漏洞利用验证流水线运行;默认关闭,且严格为增量功能——从未激活它的工作区不会看到任何变化。
它位于两个行业类别的交汇处: 非人类/工作负载身份 (即 SPIFFE/SPIRE 为服务账户和机器解决的同一问题,扩展到 AI 智能体)以及 持续访问评估 (企业身份领域中用于实时撤销的 CAEP/RISC Shared Signals 模式)。Agentic Trust & Protection Platform 是我们为这两部分合而为一的网格所起的名称——每个智能体都获得可验证的身份,其信任状态实时推送到任何需要它的地方。
- 身份——SPIFFE/SPIRE。 每个智能体/身份/AI 节点都会获得一个
spiffe_id。从控制台通过一个 Terraform 步骤按租户部署 CNCF SPIRE 引擎(它面向发现功能已在读取的同一集群;签名密钥永远不会离开你的云),它会签发短期、自动轮换的 SVID,并回写到图谱上。在你部署之前,Redthread 会分配一个确定性的 SPIFFE ID,因此该层今天即可工作。与厂商和模型无关:身份签发给工作负载,而不是其中的模型。 - 图谱上的信任徽章。 激活后,Redthread Flow 视图中的每个节点都带有信任徽章(绿色 safe / 红色 unsafe / 琥珀色 degraded / 灰色 revoked),数据来自同一个
trust_state字段。 - 信任状态:已证实,而非猜测。 节点切换为 unsafe ,仅当出现 已证实 的漏洞利用时(绝不基于推断); degraded 表示可能存在但尚未确认的发现项,或已过期的 SVID; revoked 是运营人员的手动覆盖。
- 签名、带 TTL 的事件。 每次信任状态变更都会以 Ed25519 签名、会过期的事件形式发出,其结构参照 CAEP/RISC 标准,并附带指向触发该变更的发现项的链接。任何第三方都可以使用你工作区的公钥离线验证事件——无需实时回调 Redthread。
- 投递。 注册一个或多个 webhook(可选配 HMAC 共享密钥);每次变更时,签名事件都会分发出去。仅追加的账本让错过事件的订阅方可以补齐。
- 密钥与账本。 每个工作区的签名密钥由单独的签名服务持有,并由 Oracle Cloud Vault 的密钥封装保护:应用可以请求签名,但无法读取或导出该密钥。仅追加的账本存放在 PostgreSQL 中,数据库本身会拒绝更新、删除或截断它。
- Enforce——预览版。 一个需主动启用的内联网关,依据结构化授权(主机、方法、路径、请求体大小),对实时请求作出 allow / deny / deny-and-pause 决策,且在请求到达目的地 之前 作出,而不只是事后记录。每个新授权都从 shadow 模式开始——决策并记录,但放行所有请求,与当前完全一致——在满足磨合门禁之前,API 本身会拒绝将身份切换为强制执行:在该授权下观察真实流量足够长的时间,且其本应拦截的每个请求都已由运营人员审核并认可。不存在任何覆盖手段。自 10 月起,网关还会检查内容:外发请求中的提示注入指令和密钥,以及响应中被投毒的 MCP 工具列表(
tools/list)。这是模式匹配,在将某个身份切换为强制执行之前只做观察,换一种说法即可规避。完整的路由接口请参见 API 文档 。
默认仍然只提供身份 + 信任状态——它不是权限/VC 系统,(在 v1 中)也不支持跨组织联合。Enforce 在身份已获得资格的情况下,会在请求路径中加入一个真正的决策点;但它绝不被宣称为能够防御不匹配任何规则的新型攻击。
公开徽章:图片只是指针,声明是一个签名文件
任何 README 徽章都是从某台服务器获取的图片,而图片可以显示该服务器决定的任何内容。因此,ATPP 声明从不存放在图片中。1 级(MCP 发布者)声明是一份 由我们的每日扫描任务使用 Ed25519 签名、封装在 DSSE 信封中的 in-toto 陈述 (该任务在 Redthread 自有基础设施上运行),其 subject 是所扫描的那份注册表清单本身的 sha256。自规则集 atf-5 起,声明还会注明该条目安装的内容:npm 完整性哈希、PyPI 文件的 sha256 或每个镜像标签背后的容器摘要,以及在 npm 或 PyPI 保存了软件包的 Sigstore 构建来源证明时,其中注明的代码库。 trust.redthreadsec.com 的服务器只持有公钥,因此无法生成可通过验证的声明,并且除非签名校验通过,否则会将徽章显示为灰色。
- 固定徽章(默认)。 发布者提交
.atpp/badge.svg和.atpp/attestation.dsse.json(两者均可从/v/mcp/<namespace>/<server>下载)。其 README 不会从我们这里获取任何内容;徽章标明了自身的版本和日期;其 sha256 包含在签名声明中。 - 实时徽章(可选)。
/badge/mcp/<namespace>/<server>.svg随每次重新扫描更新;在 GitHub 上约有 10 分钟延迟(图片缓存)。仅包含简单图形和文字——没有链接或动画。 - 自行验证。
python3 atpp.py verify <namespace>/<server>(或代码库路径),脚本来自 github.com/bl014h/atpp:依据固定密钥校验签名、实时注册表哈希、已提交的徽章以及过期时间。密钥:/.well-known/atpp-keys.json。每天覆盖所有信封的签名清单位于/v/log/latest.json,其哈希会提交到该公开代码库。 - 检查您已安装的内容。
python3 atpp.py check-config会读取您本机上 Claude Desktop、Claude Code、Cursor、VS Code 或 Windsurf 的 MCP 配置,找到每个软件包或 URL 背后的注册表条目,并输出其签名评分、应固定的精确版本或摘要,以及构建者。!!标记不应仅凭名称就信任的服务器(条目调包、缺少版本、由其他代码库构建)。您的配置文件绝不会被上传。 - 工具定义会生成指纹。 自规则集
atf-6起,扫描会发送 MCP 握手和tools/list(不会调用任何工具)到每个无需凭据即可响应的远程服务器,并把工具定义的指纹签入声明。tools-stable在定义发生变化而版本未变时会失败,这就是 rug-pull 手法(OWASP MCP03)。 - 钩子与物料清单(预览版)。
atpp hook claude(Claude Code 的PreToolUse钩子)和atpp hook cursor会对照签名声明检查每次 MCP 工具调用,并拒绝条目调包、缺少版本、来自其他代码库的构建来源或悄悄的工具变更。atpp check-config --cyclonedx bom.json会为您配置的服务器生成 CycloneDX 1.6 AIBOM。 - 启动前把关(预览版)。
python3 atpp.py gate <namespace>/<server>以 0 退出表示允许,以 1 退出表示拒绝;无法运行的检查一律视为拒绝。可在启动前、在 CI 中( atpp GitHub Action 配合mode: check-config使用时,会让添加了需要审查的服务器的拉取请求失败),或在 ToolHive 前端(atf_receipts.py serve --gate)使用。它依据静态扫描检查已发布的条目和制品摘要;它不会监视服务器运行之后的行为。 - 您的策略,由您的运行时执行。 组织的允许列表和固定的镜像摘要存放在您自己掌管的文件中:
atpp gate --policy org.json会拒绝其他一切,而atpp profile --policy org.json则会把条目转换为供thv run --isolate-network使用的 ToolHive 权限配置文件(允许的出站主机和文件挂载)。签名声明从不授予任何权限。 - 无密钥联合签名。 每天的清单还会由公开 atpp 代码库中的一个只读工作流使用 Sigstore 无密钥签名进行签名(GitHub 身份、短期证书、一条 Rekor 记录)。可使用
sigstore verify identity进行验证;签名包位于该代码库的log/文件夹中。 - 防回滚。 每天的清单还会锚定到公开的 Sigstore Rekor 透明日志中,验证器会检查声明是否位于最新清单中——因此即使服务器被攻破,也无法重放更早的、评分更高的声明,代码库也无法借用其他服务器的
.atpp/文件(声明必须属于其所在的代码库)。 - 外部持续监测。 每小时运行的 金丝雀 检测和每天运行的 红队 测试在 GitHub 上针对生产环境执行;结果公开。
- 完整设计,面向开发者和安全负责人: trust.redthreadsec.com/technical。
- 报告问题: [email protected] · 漏洞披露政策。
与同类产品对比
从架构上看,Redthread 与各团队已熟悉的平台相比处于什么位置。在 代理 维度上,我们和 Wiz 一样以无代理为先;不同之处在于,我们 证明 风险的方式是实际利用它,而且 Redthread 图谱 将 AI 智能体和应用视为一等节点,而不仅仅是云基础设施。这是一份架构对比——Wiz、Palo Alto 和 CrowdStrike 都是大型多产品套件,因此重点在于 形态,而非功能对等。
| REDTHREAD | Wiz | Palo Alto (Prisma + Cortex) | CrowdStrike Falcon | |
|---|---|---|---|---|
| 核心模式 | 无代理优先的评估 | 无代理优先的 CNAPP | 无代理 + 代理混合套件 | 每个端点部署一个代理 |
| 采集方式 | 无代理云角色;指向 URL/代码库即可——无需安装任何组件 | 云 API + 快照扫描 | 云 API + Defender/Cortex 代理 | 内核/eBPF 传感器流式传输遥测数据 |
| 关联图谱 | Redthread——应用、智能体、代码、云、身份、数据 → 排序后的路径(T1–T8) | Security Graph——有毒组合 | Prisma 图谱 + Cortex XDR/XSIAM 分析 | Threat Graph——端点事件 |
| 发现项依据 | 已证实 ——自主利用,附可复现的 PoC | 根据云状态推断(可达性) | 配置 + 代理遥测 | 运行时行为检测 |
| 运行时 | 可选 eBPF 传感器——仅检测,从不拦截 | 可选 Wiz Sensor(eBPF) | 代理负责防护 + 响应 | 整个产品——运行时 EDR |
| 主要用途 | AI 应用渗透测试 + 无代理 CNAPP,以图谱为先 | 无代理 CNAPP 态势 | 全生命周期防护/检测/响应 | 运行时端点防护 |
最接近 Wiz。 默认无代理,以安全图谱为核心,将原始发现转化为排序后的攻击路径和有毒组合。区别在于:Wiz 是 推断 风险(基于云状态);我们则 证明 风险——自主渗透测试会实际运行漏洞利用并附上可复现的 PoC——而且我们的图谱把 LLM 应用和智能体作为一等节点(OWASP LLM Top 10、MITRE ATLAS),而不只是云资源。因此从形态上说,我们是“一个无代理 CNAPP 图谱,上面叠加一个进攻性的 AI 应用渗透测试器”。
与 Palo Alto 不同。 Prisma Cloud + Cortex 走的是平台化路线——众多产品和代理(无代理 + Defender + 覆盖端点、网络、云和身份的 AI SOC)。我们是一个无代理平台,模块按工作区开启。Palo Alto 在运行时进行防护和响应;我们在设计上始终是测试与评估工具——我们的可选运行时传感器只做检测。
与 CrowdStrike 不同。 Falcon 的前提是在每个端点上部署一个代理来做运行时 EDR。我们的核心产品无需安装任何组件,也不做运行时防护。我们仅在“云端激活的模块”和运行关联图谱这两点上有所重叠——但 Falcon 绘制的是端点事件图谱,而 Redthread 绘制的是你的资产及其已证实攻击路径的图谱。
扫描对象
最常见的问题,先在这里回答:你提供一个 目标,并可选择提供你的 源代码。两者不是一回事。
| 目标 (必填) | 源代码 (可选) | |
|---|---|---|
| 内容 | 你的 实时运行中 的应用——一个此刻正在响应请求的 URL 或 API 端点。 | 你的 代码 ——一个 git 代码库或上传的 .zip。 |
| 原因 | 它是扫描器实际攻击的对象。 | 让扫描器在攻击的同时读取代码(白盒)——发现更深入的问题。 |
| 示例 | https://staging.yourapp.com/chat | github.com/acme/app 或 my-app.zip |
预发布环境与生产环境——始终以预发布环境为目标
- 生产环境 是客户实际使用的应用,包含真实数据。
- 预发布环境 是在测试环境中运行的独立副本——同一个应用,但没有真实客户或数据。
扫描器是一个 真正的攻击者:它会提交输入、可能创建记录、触发你的应用公开的操作,并推高你应用的模型调用成本。在预发布环境中这无害;在生产环境中则可能为真实用户带来垃圾数据或真实的副作用。只有在你理解并接受这一点时才扫描生产环境(使用测试账户并选择低峰时段会有所帮助)。
如何知道我的 URL?预发布环境 URL 通常是这样的……
它只是你的应用运行所在的网址。常见形式:
staging.yourapp.com或app-staging.yourapp.com- 一个 预览 URL,来自 Vercel 或 Netlify(每次变更都会生成一个)
- 一个
*-staging.onrender.com或*.herokuapp.com应用 - 本地地址(
localhost:3000)通过隧道(ngrok、cloudflared)暴露到互联网
最简单:让应用帮你找到它
在应用中,将你已知的那个链接——你的主网站或应用地址——粘贴到 “不确定要扫描什么?” 中,然后点击 查找扫描对象。我们会查看该页面,识别 AI 功能和 API 端点,并检查公开记录以找到你的其他环境(例如 staging. 和 app.)。你会得到一份简短的推荐目标列表——点击其中一个即可扫描。无需登录托管平台,也无需四处查找。
自己查找——无需开发人员
想手动操作,或者想再确认一下?你不需要任何技术人员。两种可靠的方法:
- 打开你自己的应用并复制链接。 像客户一样使用你的产品——进入带有 AI 功能的页面(聊天、助手),直接从浏览器地址栏复制地址。这个地址 就是 你的目标。
- 顺着账单找到你的托管账户。 你的应用总运行在某个地方,而支付托管账单的那张卡的持有人能看到每个 URL。在你的账单中查找 Vercel、Netlify、Render、Heroku、AWS、DigitalOcean、Google Cloud,登录该账户,控制面板会列出你应用的地址——生产环境以及任何预发布/预览环境。
备用途径:你的 域名注册商 / DNS (GoDaddy、Namecheap、Cloudflare——即你购买域名的地方)会显示诸如 staging., app., api.之类的子域名;或者在账户内联系你的 托管服务商客服 。
我没有预发布环境 URL——如何获取?
- 大多数托管平台都能在你的账户中 一键创建预发布副本 ——Vercel、Netlify 和 Render 都提供免费的预览/预发布环境,无需编写代码。
- 如果你的应用托管在 GitHub 上,通常每个拉取请求都会自动生成一个预览 URL。
- 只有生产环境?你仍然可以扫描它——只需将其视为一次真实攻击(选择低峰时段、使用测试账户、预期会产生一些垃圾数据)。参见上文的 预发布环境与生产环境 部分。
- 完全没有技术人员?自由职业者一个下午就能搭建好预发布环境——然后你把那个 URL 粘贴到这里即可。
黑盒与白盒
你提供给扫描器的信息越多,它发现的问题就越多。
- 黑盒 ——你只提供实时 URL 或 API。扫描器像匿名攻击者一样从外部发起攻击。速度快、零配置,但只能发现从正门可触达的问题。
- 白盒 ——你还提供应用的 源代码。扫描器在攻击时读取代码,因此能理解端点背后的工具、提示词和数据路径。这会大幅提升发现项的数量和深度。
两种提交源代码的方式——你不需要懂 git:
- 上传项目的
.zip文件。在应用中,将其拖入扫描框;通过 API,则 上传它 并传入返回的upload_id。你的代码仅为该次扫描保留,扫描结束即删除——绝不用于训练。 - 指向一个 git 代码库 ——GitHub、GitLab、Bitbucket 或 Azure DevOps。将代码库 URL 粘贴到
source字段中,或在应用中 连接 GitHub 一次,然后从下拉列表中选择代码库(包括私有代码库)。对于其他托管平台,请粘贴 URL;那里的私有代码库请使用.zip上传方式。
完整扫描——两轮扫描,一键完成
开启 完整扫描 (扫描表单上的复选框),即可针对一个目标自动运行 两轮 扫描:先由 黑盒 轮次探测实时端点,再由 白盒 轮次读取你的源代码并重新测试已知攻击面。你会得到一份合并后的发现项列表,每张卡片都标注了发现它的轮次。它需要你的源代码(代码库或 .zip文件),预算消耗约为单次扫描的两倍。
白盒轮次会沿用黑盒发现项并逐一重新测试:仍可利用的问题会显示为 ↻ 已再次确认 的回归(只计一次,不重复计数),而只有源代码才能揭示的问题会作为新发现项添加。即使是 免费 套餐也可以运行完整扫描——总上限为 $20 (每轮 $10)。
测试内容
覆盖 OWASP LLM Top 10 的每个类别,并映射到 MITRE ATLAS:
- 提示词注入
- 敏感信息泄露
- 供应链
- 数据与模型投毒
- 不当的输出处理
- 过度代理(工具与智能体滥用)
- 系统提示词泄露
- 向量与嵌入弱点(RAG)
- 错误信息
- 无界消耗(成本失控)
完整矩阵及其与 MITRE ATLAS 的映射发布在 信任中心。
工具: 我们按类别组织的漏洞技能包,对应 OWASP LLM Top 10 2025 和 MITRE ATLAS v5.6.0 (技术 ID 已对照原始来源核实,而非凭记忆)。 供应链 有专门的 章节。
发现项与概念验证
发现项是扫描器 已证实的漏洞,而不是猜测。每一项都包含:
| 字段 | 含义 |
|---|---|
title | 漏洞的一句话摘要。 |
severity | critical high medium low ——按影响排序。 |
cwe / cvss | 标准弱点 ID 和 CVSS 评分(如适用)。 |
impact | 用通俗语言说明攻击者能获得什么。 |
technical_analysis | 面向工程师说明其成因。 |
remediation | 具体的修复方法。 |
poc | 可运行、可重复执行的概念验证。 仅限付费套餐。 |
endpoint / method / locations | 问题所在位置——请求及代码位置。 |
poc)会被保留。升级到任意付费套餐即可在所有发现项(包括历史发现项)上解锁。解读发现项——标签说明
每项发现都带有标准安全标签,便于你判断风险并决定优先修复什么。以下说明每个标签的含义、如何解读以及为何重要。
| 标签 | 含义与解读方式 | 为何重要 |
|---|---|---|
| 严重程度 | critical high medium low ——我们的影响排序。 | 你的修复顺序。优先处理 critical 和 high ——攻击者可以造成实际损害。 低 级别属于加固项。 |
| CVE 通用漏洞披露(Common Vulnerabilities & Exposures) | 某个特定软件版本中一个具体、已公开编目的缺陷——通常存在于你的应用所依赖的第三方库中。ID 形如 CVE-2026-27962 (年份 + 编号);可在 nvd.nist.gov 查询详情。 | 该缺陷是 公开的 ——攻击者已经知道它,而且往往已有现成的漏洞利用。修复方法几乎总是将 受影响的依赖项升级 到已修补的版本。 |
| CWE 通用弱点枚举(Common Weakness Enumeration) | 该 类型 的缺陷,而非具体实例——例如 CWE-89 (SQL 注入)、 CWE-918 (SSRF)、 CWE-862 (缺少授权)。 | 告诉你错误的 类别 ,从而可以套用已知的标准修复模式。 |
| CVSS 通用漏洞评分系统(Common Vulnerability Scoring System) | 标准化的 0–10 严重程度评分。 9.0–10 严重 · 7.0–8.9 高危 · 4.0–6.9 中危 · 0.1–3.9 低危。 | 一个行业标准数值,用于一致地比较和排序风险。 |
| OWASP LLM Top 10 | 安全行业针对 AI/LLM 应用特有的十大风险的标准清单,编号为 LLM01–LLM10 (完整列表见下文)。每个 AI 特有的发现项都会映射到其中之一。 | 将你的风险置于审计人员、工程师和保险公司都认可的框架中。 |
| MITRE ATLAS | 针对 AI 系统的攻击者手册——相当于 AI 领域的 MITRE ATT&CK。每项发现都会映射到攻击者实际会使用的技术。 | 揭示发现项背后的真实攻击技术。 |
| EPSS 漏洞利用预测评分系统(Exploit Prediction Scoring System) | 某个 CVE 在未来 30 天内被实际在野利用的概率,范围 0–100%。 0.5 表示 50%。适用于依赖项 CVE,而不适用于应用逻辑类发现项。 | 严重程度告诉你后果会有多严重;EPSS 告诉你发生的可能性有多大。大多数高危 CVE 从未被利用——这正是避免你按错误顺序修复的依据。 |
| CISA KEV 已知被利用漏洞(Known Exploited Vulnerabilities) | 美国政府维护的、已确认且观察到被利用的 CVE 目录。一项发现要么在其中,要么不在。 | 不是预测——而是事实。KEV 意味着攻击者 已经 在利用它。无论 CVSS 评分如何,都应优先修复这些漏洞。 |
| 可达性 | 你的代码是否真正调用了被标记依赖项中存在漏洞的路径—— 已确认可达, 不可达,或 未确定。需要关联代码库。 | 一个你从未调用其漏洞部分的易受攻击库并不是紧急情况。正是这一点把成堆的 CVE 变成一份简短的清单。 |
| PoC 概念验证(Proof of Concept) | 可运行、可重复执行的漏洞利用演示——包括确切的步骤和载荷。 | 该发现项是 已证实的,而不是猜测。如果它带有 PoC,它就是真实且可复现的。 |
CVE )是你所使用的库中的已知缺陷——修复方法是 升级该库。 应用 发现项是你自己应用逻辑中的缺陷——提示词注入、访问控制失效等——修复方法是 修改你的代码或配置。OWASP LLM Top 10——各项风险的含义
| 编号 | 风险 | 通俗解释 |
|---|---|---|
LLM01 | 提示词注入 | 攻击者提供的文本覆盖模型的指令或劫持其工具。 |
LLM02 | 敏感信息泄露 | 应用泄露机密、个人数据或其他用户的数据。 |
LLM03 | 供应链 | 存在漏洞或不可信的依赖项、模型或插件。 |
LLM04 | 数据与模型投毒 | 攻击者控制的数据污染训练、微调或 RAG 语料库。 |
LLM05 | 不当输出处理 | 应用以不安全的方式信任模型输出——将其传入 SQL、shell 或 HTML。 |
LLM06 | 过度代理 | 智能体拥有过多权力或访问权限;被操纵的模型可借此采取行动。 |
LLM07 | 系统提示词泄露 | 隐藏的系统提示词——以及其中的任何机密或逻辑——可被提取。 |
LLM08 | 向量与嵌入弱点 | RAG/向量存储缺陷:跨租户检索、语料库投毒、嵌入泄露。 |
LLM09 | 错误信息 | 造成实际危害的虚假或捏造输出——不安全的依赖、幻觉生成的代码。 |
LLM10 | 无界消耗 | 使用不受限制——钱包耗尽式拒绝服务(denial-of-wallet)、资源耗尽或模型窃取。 |
支出上限与安全
自主智能体会调用语言模型,而这需要花钱。两道相互独立的限制确保扫描绝不会给你带来意外:
- 单次扫描预算上限。 每次扫描都有一个
budget(美元,默认10)。引擎达到该上限即停止。 - Token 看门狗。 一道独立的兜底机制会终止任何超出硬性 token 数量上限的扫描,即使是计费层无法感知的自托管模型也不例外。因此失控的循环不会耗尽你的账户。
每次扫描还在其独立的隔离沙箱中运行,并且并发数按套餐设有上限,因此你不会意外地同时启动一百次扫描。
授权与域名验证
由于扫描是一次 真实攻击,你只能扫描你拥有或获准测试的应用。为了让这不只是一句承诺,你首次扫描一个新的公共域名时,我们会要求你 证明你拥有它 ——每个域名只需一次。这可以防止任何人让我们去攻击竞争对手。
可通过以下任一方式验证(选择你能操作的那种——只需一种):
- Meta 标签(最简单)。 在你主页的
<head>中添加一行。大多数建站工具——Wix、Squarespace、Webflow、Shopify——都有专门用于此的“页头代码”或“网站验证”输入框:<meta name="millenniums-verification" content="YOUR-TOKEN"> - DNS TXT 记录。 在你的域名注册商处添加一条 TXT 记录:
millenniums-verification=YOUR-TOKEN
验证 根域名 即可覆盖其所有子域名——验证一次 acme.com 后,你就可以扫描 staging.acme.com, api.acme.com等子域名。在首次扫描运行前,你还需要确认一份简短的 授权声明 (声明你拥有该应用,或已获授权对其进行测试)。
localhost、私有 IP、 host.docker.internal ——无需验证。那是你自己的机器。在应用中按提示验证,或通过 API 调用 POST /api/domains/verify。发现(读取公开页面)无需验证——只有 扫描 才需要。
你的数据
你的代码和扫描结果归你所有。每次扫描都在一次性沙箱中运行,扫描结束后沙箱即被销毁,因此我们尽可能少地保留你的代码,且仅保留扫描所需的时长。 我们绝不会使用你的代码或结果训练任何模型。 完整详情(包括子处理方)请参见 信任中心 和 隐私政策。
可追溯性报告
每次扫描都会生成一份 监管链报告 ,让你可以向自己、客户或审计人员证明你的数据究竟经历了什么。这不是营销宣传;每一行都源自扫描生命周期中记录的事件。
报告包括:
- 带时间戳的时间线: 扫描创建 → 收到源代码 → 启动隔离沙箱 → 扫描完成 → 沙箱销毁 →(针对上传)删除上传的源代码。
- 源代码来源: 扫描是黑盒(仅实时目标),还是基于上传文件或 git 代码库的白盒。Git URL 只记录主机——不记录路径或凭据。
- 证明事项: 隔离沙箱、沙箱已销毁(已对照容器运行时核实)、上传的源代码已删除、支出上限已执行,以及从未用于训练模型。
- 用量: 该次运行的 token 数和 LLM 调用次数。
在应用中,任一运行的 数据轨迹——监管链 下均可获取(支持一键下载 JSON),也可通过 API 调用 GET /api/runs/{run_id}/trace。
持续扫描与漂移
内容: 将某一时间点的扫描转变为持续覆盖。将你的应用注册为 资产,为其设置计划,Redthread 就会替你重新扫描——并在应用发生变化时重新检查。
方式: 两项控制,按资产在 持续 视图中设置(或通过 API):
- 计划 ——每日、每周或每月的频率。重新扫描与手动扫描走同一路径,因此你的配额、并发和支出上限依然适用。
- 漂移检测 ——开启 监测变更 后,在两次计划运行之间,我们会重新为应用生成指纹(优先使用其 OpenAPI/Swagger 规范)。一旦出现实质性变化,就会触发一次计划外扫描。指纹会忽略 CSRF 令牌、nonce、时间戳和缓存破坏参数,因此动态页面不会误触发。
原因: 应用每次发布都会变化,而一年一次的渗透测试看不到周二某次部署打开的漏洞。持续扫描能在回归出现时及时捕获;漂移检测则意味着只有在确实发生变化时才消耗一次扫描——无需人工干预的监测,而不是日历提醒。
工具: 由按资产调度器驱动的同一扫描引擎;基于 OpenAPI/Swagger 规范(或规范化的攻击面爬取)生成应用指纹,在各次运行之间进行比对,并过滤掉动态令牌带来的噪声。
仪表盘与趋势
首页仪表盘呈现的是风险解读,而不是活动日志。 它以由四个磁贴组成的风险区开头—— 已证实的攻击路径 (共涉及多少项风险、来自多少个未关闭的发现项)、 按严重程度划分的未关闭发现项 (附带相对上一次扫描的新增/已解决变化量)、 覆盖范围 (已注册资产、云连接、端点主机、上次扫描距今时长),以及 Agentic Trust & Protection Platform 状态(safe / unsafe / degraded 智能体数量,或未开启)。其下方,来自 Redthread 的 前三条攻击路径 以跳转链的形式绘制—— Internet → web-01 → data-ingest-role → customer-records ——每条都标记为 已证实 · PoC 或 潜在,按严重程度排序,已证实的排在潜在的之前。最近的扫描列在下方。
每个磁贴和面板都有一行说明其统计内容。“覆盖”磁贴统计四个云(AWS、Azure、Google Cloud、Oracle Cloud)中已连接的数量并列出名称。
每个磁贴都是一个已保存的查询:点击它会打开生成该数字的视图,并已完成筛选——点击严重程度条会打开该严重程度的发现项,点击路径会打开其所属的已排序风险,点击覆盖范围会打开目标,点击信任磁贴会打开评估。未关闭发现项的数量取自每个已注册资产的最新一次扫描(重新运行绝不会重复计数);没有已注册资产的工作区则读取其最新一次扫描。这些数字来自 /api/cloud/risks, /api/overview, /api/cloud/status, /api/endpoint 和 /api/trust-signal/status。
路径下方还有三个面板。 自上次扫描以来的变化 列出每个已注册资产相对上一次扫描的新增/已解决数量,以及其下一次计划运行——有新增发现项的资产排在最前,点击某一行会打开该资产的最新扫描。 后续操作 根据你已有的状态推导而来:可合并的自动修复拉取请求、等待确认的影子 AI 候选项、需要轮换的暴露凭据(来自已排序风险),以及应优先修复的已证实路径。 未关闭发现项 · 8 周 是一条汇总所有已注册资产的迷你趋势线(每个资产最新的未关闭数量逐周向后延续,数据来自 /api/assets/<id>/trend),并带有相对前一周的 ↑ / ↓ 箭头,该箭头也会显示在严重程度磁贴上;它在已注册资产完成第二次扫描后出现。
管理层视图。 仪表盘顶部的“分析师 / 管理层”切换开关会把同样的数字提升一个层级呈现:带漏斗说明的已证实路径数字、根据当前状态生成的通俗摘要(Redthread 映射了什么、证实了什么、按严重程度划分的未关闭发现项、相对上一次扫描的变化、智能体信任状态,以及下一步操作),然后是覆盖范围、信任、严重程度和 8 周趋势,以及最主要的攻击路径。扫描细节会被隐藏。管理层视图是默认视图;分析师视图只需一次点击即可切换,且你的选择会保存在浏览器中。
已保存视图。 在扫描的发现项页面上,严重程度 / PoC / 已利用标签可筛选列表; + 保存视图 会将当前的严重程度筛选和已忽略开关以一个名称保存(按工作区保存在你的浏览器中),已保存的视图会以 ★ 标签显示在筛选器旁边。
控制台导航按你正在做的事情分组,而不是按扫描类型分组: 概览 (仪表盘)· 连接 (各扫描类型;已注册的目标在“设置 → 目标”中管理)· 探索 (Redthread Flow、评估与整合、聊天、云问题;知识库从聊天页面的“知识”按钮打开) · 处理 (发现项、PR 审查)· 治理 (评估与整合、设置)。
该 持续 视图将所有已注册资产汇总到一处,让安全负责人——或董事会——一眼看清整个资产全貌,并证明其正朝着正确的方向发展。它完全由你的计划任务和 CI 已在运行的扫描提供数据;无需额外埋点。
按资产汇总 — GET /api/overview。每个资产都会显示其最新扫描状态、按严重程度划分的发现项、相对上一次扫描的 新增/已解决变化量 ,以及其计划和下一次运行时间。你不仅能看到资产当前所处的状态,还能看到自上次以来发生了什么变化。
风险趋势 — GET /api/assets/<id>/trend。每个资产都带有一条发现项随时间变化的序列——每次扫描按从旧 → 新排列,包含该步骤的未关闭数量以及新增和已解决数量——因此你可以展示风险在数周内持续 下降 ,而不仅仅是单一快照。这就是仪表盘背后的迷你趋势线。
导出 — GET /api/overview.csv。一键将整个组织的汇总导出为 CSV,用于电子表格、QBR 演示文稿或你自己的 BI。
影子 AI 发现(AI 清单)
内容: 发现你的组织正在使用、但安全团队并不知情的 AI——即“影子 AI”。例如悄悄调用 LLM API 的代码库、在云账户中启用的托管 AI 服务、暴露在你域名上的自托管模型服务器或聊天机器人界面。这是一项 发现与清单 能力:它告诉你 AI 存在于何处,而不是它是否存在漏洞。
方式: 连接你希望检查的范围,每次运行都会准确报告其覆盖的内容。每项结果都是一个 需要你确认的候选项 ——它绝不会自行注册任何内容。已确认的候选项会合并到一份去重的 AI 清单 中,并附带覆盖范围横幅;对已知或不在范围内的候选项可直接忽略。
| 攻击面 | 连接方式 | 发现内容 |
|---|---|---|
| 代码库 | GitHub 组织 / 账户 | 基于 LLM-SDK 使用情况识别的 AI 驱动代码库。 |
| 云 | 无代理角色 / 清单 | 托管 AI 服务——Bedrock 智能体、知识库、预置模型、SageMaker 端点、Lex 机器人、Comprehend。 |
| 外部 | 你的域名 | 暴露的 AI 攻击面——自托管模型服务器(Ollama、vLLM、TGI)、兼容 OpenAI 的端点、聊天机器人界面。 |
原因: 你无法保护或治理你不知道其存在的 AI。影子 AI 正是数据泄露、成本失控和合规缺口的藏身之处——清单是第一道控制。你在此确认的内容将成为被测试和监控的集合。参见 发现与清单。
工具: GitHub 组织/代码库 API + LLM-SDK 使用情况检测(代码库);通过 boto3 进行无代理云枚举——Bedrock、SageMaker、Lex、Comprehend(云);针对模型服务器和兼容 OpenAI 的端点进行 HTTP/TLS 攻击面探测(外部)。全部无代理。
AI 供应链
内容: 源自你的应用所 构建于其上 的 AI 组件的风险——第三方基础模型、微调或预训练权重、训练与 RAG 数据集、嵌入、插件/工具,以及技术栈中的 ML/LLM 库和模型注册表。被投毒的模型、被植入后门的数据集、模型仓库中的仿冒(typosquatting)模型或存在漏洞的 ML 依赖项,都可能在你写下一行代码之前就危及你的应用。这对应 OWASP LLM03:2025 供应链。
方式: 扫描期间,智能体会检查范围内的 AI 组件——模型和数据集来自哪里、该来源是否可信,插件/工具如何接入以及被赋予了多少信任,还有你的 ML/LLM 技术栈的依赖树。依赖项 CVE 会按真实可利用性(KEV / EPSS)和可达性进行分诊,因此你看到的是真正重要的问题,而不是一堆噪声。
原因: 你的 AI 应用的可信程度,取决于它所继承的模型、数据和库——而这些都来自你的代码库之外,绕过了你的应用层控制。它正是因此被列入 OWASP LLM Top 10。
工具: osv-scanner 用于建立依赖项 CVE 清单,然后经过 EPSS / CISA-KEV / 可达性分诊漏斗(参见 依赖项 CVE);我们的 LLM 技能包会将发现项映射到 OWASP LLM03 和 MITRE ATLAS AI 供应链攻陷(AML.T0010)。
基础设施与云
内容: 云安全态势管理(CSPM)。除应用本身之外,它还会检查你的云中攻击者会搜寻的暴露点——公开的存储桶、过宽的 IAM、对全网开放的端口、未加密或公开的数据,以及审计追踪中的盲区。无代理,采用 CVSS 评分。
方式: 连接一个无代理角色,我们会代入该角色,以只读方式枚举并运行确定性检查——无需密钥,没有写权限。只有当某个资源确实未通过检查时,才会产生发现项。
| 检查 | 严重程度 | CVSS |
|---|---|---|
| S3 存储桶公开访问 | 严重 | 9.8 |
IAM 通配符策略 (Action:* 作用于 Resource:*) | 严重 | 9.1 |
| 安全组对所有端口开放 | 严重 | 9.8 |
| SSH / RDP 对 0.0.0.0/0 开放 | 高 | 8.1 |
| RDS 可公开访问 | 高 | 7.5 |
| RDS / S3 静态数据未加密 | 中 | 5.3 |
| CloudTrail 日志已禁用 | 中 | — |
| Lambda 函数 URL 未启用身份验证 | 严重 | 9.1 |
| EKS API 端点对互联网开放 | 严重 | 9.0 |
| 跨云联合信任未设置主体条件 | 严重 | 9.6 |
| 密钥未启用自动轮换 | 低 | 3.1 |
两次点击接入 AWS,无需命令行。 点击 打开 AWS 并创建角色:它会打开已预填所有内容的 AWS CloudFormation 控制台——我们的扫描器、 你的 唯一外部 ID,以及一个只读角色(ReadOnlyAccess + SecurityAudit),名为 millenniums-cloud-scan。勾选 IAM 确认框,点击 创建堆栈,等待约一分钟,然后在应用中输入你的 12 位 AWS 账号。我们会自行构建角色 ARN,并在存储任何内容之前通过一次真实的只读调用加以验证;如果堆栈仍在创建中,系统会提示你稍后重试,而不是直接报错。如需撤销,请删除 MillenniumsCloudScan 堆栈。之前已经创建过 millenniums-cloud-scan (例如通过 Terraform)?堆栈会报告该角色已存在——跳过即可,直接输入你的账号;只要现有角色以你的外部 ID 信任我们的扫描器,它就能正常工作。模板是公开的,而且很短——运行前请先阅读: millenniums-cloud-scan-v1.yaml。更喜欢 Terraform 或使用自己的角色?基础设施页面仍会生成 Terraform,并接受角色 ARN。
你不是管理 AWS 的人? 在资产扫描页面中, 获取要发送的链接 会创建一个私有链接,为负责你 AWS 的人打开同样的两个步骤——对方无需账户。它只能做一件事:为你的工作区连接 AWS。它只显示你的公司名称,绝不显示你的邮箱或发现项;7 天后过期;生成新链接会使之前的链接失效。对方完成后,你的资产扫描通道会变为绿色。
Azure、Google Cloud 和 Oracle Cloud 同样一键接入,无需复制或粘贴任何内容。 Azure: 使用 Microsoft 账户登录并批准 Redthread;Azure 会打开一个预填好的部署,在你选择的订阅上为我们的扫描器授予 Reader + Security Reader 角色。每项授权都带有你工作区独有的标记,我们只会连接其授权带有你的标记的订阅。 Google Cloud: 使用 Google 账户登录,选择一个你拥有的项目,我们会凭你的登录在该项目上为我们的扫描器添加 Viewer + Security Reviewer 角色;你的 Google 令牌仅用于这一次变更,随后即被丢弃。 Oracle Cloud (OCI): Oracle 会打开一个预填好的 Resource Manager 堆栈,创建一个 RedthreadCloudScan 组和一个仅使用 API 密钥的用户(带有电子邮件地址,这是使用身份域的 Oracle 账户所必需的)、一条只读策略(inspect all-resources,以及对存储桶、网络和用户设置的 read 权限——绝不包括文件内容、数据库钱包或虚拟机控制台输出),并上传你工作区的 公开的 密钥,然后将该用户回报给我们。无论哪种情况,你都无需向我们提供任何机密;撤销只需在你自己的控制台中点击一次;每个连接在存储 之前 都会通过一次真实的读取调用进行验证。更喜欢命令行?每个云仍提供手动命令(Azure 应用注册、GCP 服务账号密钥或 OCI Cloud Shell);你在那里粘贴的机密只写不读——任何界面或 API 都不会返回它们。Kubernetes 和任何 Prowler 清单仍可直接导入。参见 API 文档。
原因: 你的应用可能完美无缺,却仍会通过其运行所在的基础设施被攻破——而且每当团队发布时,态势都会漂移。由于它是无代理的,可以安全地持续运行,而不是每季度运行一次。
工具: 通过 boto3 (AWS)对你授予的角色(ReadOnlyAccess + SecurityAudit)进行无代理云枚举,然后运行我们确定性的、采用 CVSS 评分的态势检查。也可以改为导入任何 Prowler格式的清单,同样的检查也适用于 GCP / Azure / Kubernetes。
Redthread——风险图谱与攻击路径
Redthread 是我们的图谱引擎。它是攻击路径报告、拉取请求门禁、查询构建器和运行时传感器背后的底层——四者读写同一张图谱,因此它们从不相互矛盾。
内容: 你所有云中的每一个资产、身份、网络路由和发现项,汇集在 一张 规范化的图谱中——以及贯穿其中的已排序 攻击路径 列表。发现项说的是 “这个存储桶是公开的。” 风险说的是 “互联网能触及这个工作负载,它持有一个凭据,而该凭据能读取你的客户数据。” 路径才是产品本身。
方式: 云厂商术语止步于采集器。AWS 角色、Entra ID 服务主体和 GCP 服务账号都会成为同一类节点,因此路径可以跨越云边界。八条规则在结果上运行——暴露的工作负载 → 敏感数据、凭据链、跨云跳转、权限提升、影子数据、暴露的 AI 资产,以及已证实的跨层链条。每条规则返回的是一条 路径,而不是一条告警。
原因: 态势工具会产出数以百计的严重级问题,却没有优先级。仅按 CVSS 排序无法告诉你攻击者能否真正到达那里。可达性才是优先级,而可达性只存在于图谱之中。
工具: Redthread 是引擎;而 文件 并非专有格式。图谱以 graphify的 node-link 格式输出,因此你可以自行遍历—— graphify path "internet" "customer-data" ——或从风险视图中下载。无需运行图数据库,也没有厂商锁定:如果你离开,图谱也随你带走。
架构与验证
客户可在应用内阅读此部分: 登录 后打开任意文档链接。
Redthread Flow — 解读图谱
Redthread Flow 是一个控制台面板,你可以在其中向图谱提问,并以图形而非列表的形式获得答案。它位于左侧导航栏中,紧挨在仪表盘下方。
资产地图。 打开 Redthread Flow,整个环境会以网络形式呈现。每个资产都是一个按所在位置着色的圆点(AWS 为橙色、Oracle Cloud 为青绿色、Azure 为蓝色、Google Cloud 为绿色、装有传感器的机器为紫色、外部身份为粉色、互联网为黑色),大小按资产类型确定,因此机器、工作负载和 AI 代理一目了然。同一云中的资产聚集在一个浅色区域内,拥有三个或以上资产的云会在中心显示一个带名称的标记。普通连接是细蓝线;从一个云跨到另一个云的连接为红色,攻击路径则以其严重程度颜色的粗线绘制。通配符权限(一个角色被允许对每个存储执行所有操作)绘制为指向该云“所有数据存储”枢纽的一条线,而不是每个存储一条线。名称简短(例如 aws-ecs),显示在互不重叠的白色小标签上;互联网、枢纽以及严重或高危攻击路径上的每个资产始终显示名称,其余资产在放大时出现。存在严重或高危问题的资产带有红色圆环。地图使用 Sigma.js 绘制,即使有数千条连接的环境也能保持流畅,将鼠标悬停在某个资产上时,与其无关的一切都会变灰。
突出显示风险。 地图打开时 突出显示风险 处于开启状态:所有没有问题的内容都变为浅灰色,因此突出的是每个存在严重或高危问题的资产(以红色标签显示名称)以及每条严重或高危攻击路径。右侧面板列出这些攻击路径;点击其中一条即可只显示该路径并缩放到它,再次点击即可返回。关闭突出显示风险即可按各云的颜色查看整个环境。
如何阅读: 滚动或使用 + 和 − 缩放,拖动背景移动,拖动圆点固定位置,点击“适应窗口”重新取景。彩色圆环和数字标记问题(圆环表示最高严重程度);小绿点表示有传感器在上报。点击圆点会打开包含详情、问题和连接的卡片,相邻资产保持高亮,其余变淡。您可以隐藏身份,或只显示跨云连接。
询问图谱 是第二个标签页:即下文介绍的问答视图。 攻击路径 是第三个标签页:列出从互联网到值得保护对象的排名攻击链。云问题在左侧菜单“聊天”下方有独立页面,列出所有云中的配置错误,可按云筛选。
使用方法
面板打开时已绘制好一张图。它会依次运行已保存的问题,在第一个返回路径的问题处停止,并高亮显示所选的问题——这样你看到的是真实的答案,而不是一块空白画布。你可以通过三种方式提出自己的问题:
- 用自然语言提问。 输入一个问题—— “互联网上是否有任何东西持有能触达另一个云中客户数据的密钥?” ——然后点击“提问”。模型会将其转换为结构化的图谱查询。 所执行的查询始终会显示 在“我执行的查询”下方:展开它,确认它理解了你的意思。如果问题超出了图谱所能表达的范围,它会如实说明并指出缺少什么,而不是运行一个恰好能通过校验的最接近的查询。对一个没人问过的问题给出的答案,看起来和真正的答案一模一样。
- 已保存的问题。 输入框下方的按钮是已写好的常见问题:带有泄露密钥、可触达另一个云中 PII 的暴露虚拟机;持有可触达数据存储的凭据的工作负载;可以变身为另一身份的身份;可从互联网触达的敏感存储,等等。点击即可运行。
- 手动构建。 展开 手动构建 即可使用下拉菜单:查找 [资产类型] (位于 [云] 中、处于 [暴露情况]状态),通过 [关系]连接到 [资产类型] ,且该资产持有 [数据分级]。无需学习查询语言。
提问次数按套餐每小时限流——Free 10 次、Starter 40 次、Growth 120 次、Enterprise 400 次——因为每个自然语言问题都需要一次模型调用。已保存的查询和手动构建的查询直接针对图谱运行,不受限制。
解读图形
图形是一个从左到右的分层流程: 箭头的方向就是攻击的方向。最左列是攻击者的起点——通常是互联网——最右列是其所能触达的目标。
| 你看到的 | 含义 |
|---|---|
| 一个圆圈 | 一个资产。图标表示其类型——工作负载、身份、数据存储、机密、网络、AI 资产、代码、发现项。下方的标签是其名称;再下方的小型大写字母行是其类型和所属云。 |
| 圆圈之间的连线 | 攻击者可以穿越的关系—— exposed-to, contains-secret-for, federates-to, has-permission-to, can-assume, runs-on, stores, routes-to。关系名称标注在连线上。 |
| 实线 | 已证实。 我们的引擎实际执行了这一跳,并且成功。请求和证据均已附上。 |
| 虚线 | 推断。 这一跳存在于你的配置中,但从未被执行。它真实存在,但未经演示——也绝不会被呈现为已演示。 |
| 红线,标记为 CUT HERE | 瓶颈点:出现在最多路线中的那一跳。切断它即可一次性关闭所有这些路线。 |
| 红色圆环 | 该资产持有分级数据——个人、健康、持卡人数据或凭据。 |
| 琥珀色圆环 | 该资产面向互联网。 |
| 皇冠 | 特权身份——即管理员。 |
| 数字徽章 | 所绘制路线中经过该节点的路线数量。数字高说明这是一个汇聚点,而在汇聚点上,一次修复的价值相当于多次。 |
| 由暖到冷的颜色 | 沿链条的深度:入口为暖色,末端的数据为冷色。在角色颜色具有含义的地方以角色颜色为准——面向互联网的保持琥珀色,分级数据保持红色。 |
打断攻击链
图谱下方是已排序的切断列表。完整结果集中的每一跳都按切断后会使多少条路线失效来评分,每一行都会说明操作(轮换并移除凭据, 收窄权限, 关闭暴露)、其原理以及证据。左侧的数字是被打断的路线数量。在一个真实的 AWS 账户中,排名第一的切断点——轮换某个角色上的一个凭据——关闭了 1,382 条路径中的 86 条。
“没有匹配的路径”是什么意思
空结果也是一种答案,而不是失败。当前图谱中没有任何东西把这些事物连接起来。两点如实的注意事项:覆盖范围取决于你已连接的内容,因此我们看不到的路径并不等于不存在的路径;以及 数据分级绝不推断 ——在 DSPM 对其采样或你为其打上标签之前,存储会一直保持为 unknown ,因此在尚未分级的账户上,按分级筛选的问题会正确地返回空结果。启用分级运行一次扫描,这些问题就会开始给出答案。
攻击路径分析——是什么
攻击路径分析会描绘攻击者可能用来在你的环境中移动并触达关键资产的路线。之所以需要它,是因为单独的扫描会产生成千上万的发现项,却不会显示其中哪些会 串联 成可被利用的攻击。单一错误配置很少构成入侵;但错误配置加上薄弱权限再加上暴露的主机,就是入侵。
四个步骤,我们全部执行:
- 资产与风险发现。 对工作负载、身份、配置和数据的完整无代理可见性——外加漏洞、暴露的机密、错误配置和过度权限。在一个中等规模的 AWS 账户上,这通常意味着数百个资产和数以万计的权限关系。
- 基于图谱的映射。 这些风险被放到一张图谱上,图谱连接各项资源并展示它们之间的关系——例如一个具有公网 IP 和 严重漏洞的工作负载,关联到一个权限过高的身份。每条边都带有置信度:已证实、从配置中提取,或推断。
- 路径识别。 在图谱中搜索 有毒组合 ——即多个单独来看严重程度较低的问题串联成一条通往高价值目标的高影响路线。八条规则在图谱上运行,每条返回的是一条 路径 ,而不是一条告警。
- 优先级排序。 路径首先按严重程度排序,其次是 已证实优先于理论,再次是路径的直接程度,最后是影响范围。通往皇冠级资产或提升权限的路线,排在终点无害的路线之前。
说明一下搜索的工作方式,因为它会改变答案。普通的最短路径搜索会找到通往每个目标的 最短 路线——而这往往不是真正重要的路线。一个公开可读的存储桶一跳即可触达,而这一跳会掩盖通往同一存储桶的三跳凭据窃取链。因此,依赖某类特定跳转的规则会明确地 经由 该跳转进行搜索,从而报告这条链,而不是将其掩盖。
跨云风险
内容: 始于一个云、终于另一个云的攻击路径——任何一家云厂商自身的工具都看不到这些路径,因为它们都只看自己。
方式: 我们读取真正跨越边界的信任关系:信任策略中指定了 Entra ID 或 Google 签发方的 AWS 角色、信任某个 AWS 账户的 GCP 工作负载身份池。只有双方都认可时才会建立一条边——仅有已授予的权限永远不够。
sts.windows.net/<tenant> 的 AWS 角色即可证明 AWS 信任该 Azure 身份,无论你是否已连接 Azure。只连接一个云,也能看到跨云暴露。图上: 已确认的跨边界信任会成为两个云之间的一条 can-assume 边,任何跨越它的攻击路径都会被列为 T3——跨云跳转 风险,显示在 GET /api/cloud/risks中,并附带逐边的完整路径及其证据,按已证实优先于潜在的顺序排列。由于图谱以开放的 node-link JSON 格式导出,你也可以自行遍历: graphify path "aws-prod" "azure-tenant" --graph graph.json。
过宽的信任本身就是一项发现。 信任策略中没有 sub (主体)条件的角色会信任 每一个 身份(位于该外部租户中),而不只是你本意中的那一个——复制 OIDC 片段时很容易无意中发布出去,即使尚未绘制任何路径,它本身就是一项严重发现。
除了身份信任之外,云之间还有三种连接。
- 网络: 在 AWS、Oracle Cloud、Azure 和 Google Cloud 上,站点到站点 VPN 隧道会在两端读取并按公网 IP 匹配,因此从 AWS 到 Oracle 网关的隧道会显示为两个网络之间的一条连接。
- 实际使用: AWS CloudTrail 会记录过去 24 小时内每次 API 调用的来源地址;来自另一个已连接云中虚拟机的调用,会从该虚拟机到其所用的 AWS 身份画出一条已证实的连接。
- 为外部使用而创建的密钥: Oracle 的 S3 兼容密钥会连同所属用户一起列出。代码中发现的云密钥,以及使用 identity domains 的账号上的 Oracle 登录联合,暂不支持。
原因: 联合身份是团队避免使用长期密钥的方式——也是攻击者在你的各个云之间移动的方式。AWS、Azure 和 GCP 都不会标记由 另一 方授予的信任,因此这正是单云态势工具留下的盲区。
工具: AWS IAM 信任策略、通过 Microsoft Graph 获取的 Entra ID、GCP 工作负载身份联合。签发方是经过 识别的,绝不靠猜测——无法识别的签发方不会产生跨云边,因为错误标记的边比缺失的边更糟。
数据安全态势(DSPM)
内容: 实际存放 (位于 你的数据存储中的内容——个人数据、持卡人数据、健康数据、凭据——以及生产数据的副本悄悄流落到了何处。
方式: 分为两个层级。 有界采样 通过你已授予的同一无代理角色读取少量、有上限的对象样本——无需快照、无需额外权限、无需安装任何组件。对于存放在虚拟机磁盘上的非托管数据库,一个 临时快照工作器 会在 你的账户内运行,以只读方式挂载快照,并且只传输 发现项本身 ——绝不传输任何值、文件内容或数据行——然后自行终止。
影子数据: 存储会按模式(schema)生成指纹,因此位于预发布存储桶中的生产模式会被标记为值得复核的副本——当该副本同时暴露在互联网上时,会升级为严重级别。
原因: 不了解利害所在,严重程度就毫无意义。一个存放 CSS 文件的公开存储桶和一个存放客户记录的公开存储桶是同一项发现,却是完全不同的风险。分级正是区分二者的依据——这也是我们从不猜测的原因:未标记的存储会保持为 unknown,既不假定安全,也不假定敏感。
工具: 模式 + 熵分类器,配合有效性检查(Luhn、SSN 结构)、列名佐证,以及用于数据沿袭的模式指纹。按对象和总量设上限;覆盖范围按实际采样的内容报告,绝不外推。
代码到云——在发布前拦截
内容: 对每个拉取请求进行的检查:读取你的 Terraform、CloudFormation、ARM 和 Kubernetes 清单,并在变更会造成真实问题时让构建失败。
方式: 计划中的资源会合并到你的 实时 风险图谱中,我们报告的是该变更会 引入 什么——而不是你的账户当前的状况。发现项会以单条评论的形式回帖到拉取请求,每次推送时编辑这条评论,而不是每次都新建一条。
门禁只针对你的 diff 所负责的内容进行拦截: 它声明的严重错误配置、它引入的攻击路径,或它提交的凭据。账户中已存在的风险 绝不会 阻止拉取请求——否则门禁就会被关掉。仅报告模式只需修改一行。
原因: 修复错误配置成本最低的时刻,是在它出现之前。此后的一切都是修复、变更窗口以及关于优先级的争论。
工具: 真正的 HCL 解析器(而非逐行匹配),外加 CloudFormation / ARM / Kubernetes。机密扫描会排除占位符和变量引用——一个会标记 password = var.db_password 的扫描器只会让人学会忽略它。支持 GitHub Actions 和 Azure DevOps;使用按资产划分的密钥进行身份验证,绝不使用你的账户令牌。
询问图谱
内容: 已保存的问题,以及一个用于应对我们未曾预料到的问题的查询构建器—— “列出所有暴露在互联网上、持有明文密钥、且该密钥可访问包含个人数据的存储的虚拟机。”
方式: 选择一种资产类型,按其属性筛选,然后沿着关系找到它能触达的对象。结果是 路径 (附带每一跳的证据),而不是一份名称列表。
原因: 事件响应期间你要问的问题,并不是厂商预先写好的那些。自由文本搜索无法表达“A 和 B 和 能触达 C”——这是集合成员关系与可达性问题,需要图谱才能回答。
工具: 一种封闭、安全的查询形式——查询是数据,而绝不是代码,关系经过校验、遍历有边界,因此它既不会被变成代码执行,也不会在大型资产上卡死。
修复与工单
内容: 当风险匹配你的规则时发出签名 webhook——接入你自己的自动化流程,或直接进入 Jira 或 ServiceNow,并在工单中附上攻击路径。
方式: 通过以下方式注册工作流: POST /api/workflows — { name, url, kind: "webhook|jira|servicenow", rules: ["T2"], min_severity: "critical", proven_only: false, auth_header }。只有当风险匹配你的 全部 筛选条件时才会触发投递:命中所指定的图谱规则之一(T1–T8)、严重程度不低于 min_severity,并且——如果你设置了 proven_only ——仅当路径确实被利用过,而不只是可达时。签名密钥只返回 一次 ,之后不再返回; POST /api/workflows/<id>/test 会触发一次模拟投递,让你在真实事件发生之前验证接线是否正确。
验证每一次投递。 每个请求都在 X-Millennium-Signature 请求头中携带基于原始请求体计算的 HMAC 签名;请使用你的密钥重新计算,并拒绝任何不匹配的请求。投递具备防重放边界(时间戳 + nonce),并且目标必须是解析到 公开的 地址的 HTTPS——webhook 永远不能指向内部服务或云元数据端点。
X-Snapshot-Key),没有任何途径获取数据值。上游预防: 同一张风险图谱也驱动着 代码到云 PR 门禁 — POST /api/iac/scan 会让那些将在你的实时图谱上 引入 严重攻击路径的拉取请求失败,因此成本最低的修复(永不合并)发生在出现任何需要修复的问题之前。
原因: 一个在你整个云环境中持有写凭据的安全厂商,是一个可能导致灾难性故障的单点,也是最难通过安全审查的一项。将检测与执行分离可同时消除这两个问题。
运行时传感器 Enterprise 附加组件
内容: 来自 Kubernetes 节点、Linux 虚拟机和装有终端传感器机器的可选运行时检测,与其他所有内容位于同一风险图上。
方式: 一个 Falco 将检测结果直接发送到 Redthread 的 DaemonSet,外加一个小型心跳 sidecar,让空闲节点也显示在线。在应用中启用,添加传感器,然后运行显示的三条命令。关闭后会立即吊销所有传感器。
Linux 虚拟机: 注册传感器后,在虚拟机上以 root 身份运行显示的命令。它会从官方 falco.org 软件包仓库安装 Falco,选用现代 eBPF 探针(Linux 5.8 或更新版本,无需内核模块),写入仅 root 可读的配置以将每条检测发送到 Redthread,并将 Falco 作为重启后仍运行的服务启动。Falco 的 HTTP 输出无法设置请求头,因此传感器密钥位于该配置的 URL 中;该密钥只能发送检测。支持 Debian 和 Ubuntu(apt)以及 RHEL、Oracle Linux、Amazon Linux 和 Fedora(dnf 或 yum);使用 --uninstall 运行同一命令即可卸载。
某个云中的所有虚拟机: 添加 MAI_SENSOR_KEY 后,Cloud Shell 批量命令也会安装 Falco(Runtime → 添加传感器 会显示已填好的命令)。在 Azure(Run Command 以 root 运行)和 Google Cloud(带 sudo 的 gcloud ssh)上,每台 Linux 虚拟机都会安装 Falco;在 Oracle Cloud 上,Run Command 以受限用户运行,因此只有一次性管理员设置已为该用户授予 sudo 的虚拟机才会安装 Falco,其余虚拟机会在摘要中列出。
装有终端传感器的机器: 终端传感器还会每 20 秒检查一次运行中的进程,查找加密货币挖矿程序、反向 shell 特征或从临时目录运行的程序,并在首次出现时发送检测(每个匹配每小时一次)。它无需内核权限,可在 macOS 和 Linux 上运行;它看不到短于一次检查间隔的进程,因此在 Linux 上 Falco 仍是更全面的选择。命令行在本机匹配,绝不发送:一条检测只包含规则、简短的进程名和时间。只有在 Runtime 开启时才接受检测;否则传感器会停止发送六小时。
原因: 配置会漂移,而工作负载可能在没有任何设置变化的情况下被攻陷。云厂商的威胁情报源无需任何代理就能捕获其中的大部分——这一功能面向那些认定亚分钟级、内核内可见性值得部署一个特权 DaemonSet 的团队,并且这刻意交由他们决定,而不是我们的默认设置。
检测,而非防护。 它从不拦截、终止或隔离。平台的其余部分不会在你的服务器上安装任何组件;这一功能则刻意需要安装,因此它是一个独立的附加组件,并且默认关闭。如果你更希望保持完全无代理,GuardDuty、Security Hub 和 Inspector 的发现项可以在不使用任何代理的情况下导入同一张图谱。
工具: 使用 Falco(CNCF)作为 eBPF 探针和规则集。心跳 sidecar 无特权并去除所有 capability。接收量有上限;超出上限的事件会被丢弃 并计数,绝不会被悄无声息地丢失。
网络渗透测试——各阶段
客户可在应用内阅读此部分: 登录 后打开任意文档链接。
合规报告与证明
每次完成的扫描都会生成一份审计支持报告,其依据是企业测试所遵循的标准(PTES、NIST SP 800-115、OWASP WSTG、CREST、CVSS)。报告分三个层级提供,让每位读者都能拿到合适的版本:
- 证明函(Letter of Attestation) ——一份经过脱敏并签名的单页文件,可直接交给 你的 客户、采购或第三方风险审查人员。其中包含范围、日期、方法论和各严重级别的数量——不含漏洞利用细节。获取方式:
GET /api/runs/{id}/attestation。 - 完整合规报告 ——执行摘要加上每项发现的技术细节:交战规则、严重程度热力图、修复路线图,以及一份 AI 可追溯性矩阵,将每项发现映射到 OWASP LLM 2025 → MITRE ATLAS → NIST AI RMF / ISO 42001 / EU AI Act。并交叉映射到 SOC 2、ISO 27001 和 NIST CSF。
GET /api/runs/{id}/compliance。 - JSON 副本 ——与以下内容相同的数据:
report.json,供 Vanta、Drata 或 Secureframe 使用。GET /api/runs/{id}/compliance.json。
如实评分。 CVSS 对依赖项 CVE 而言是真实的公告评分,对漏洞类别而言则是该类别的标准基础向量(并会如此标注)——绝不是编造的数字。行为类发现(越狱、提示词注入)在你进行测量时会附带 攻击成功率 ——一个真实的“成功次数/尝试次数”数值——(POST /api/runs/{id}/measure-asr),因为 100 次中触发 3 次的越狱,与触发 90 次的越狱不可同日而语。
工具: CVSS 3.1 评分; OWASP LLM 2025 + MITRE ATLAS v5.6.0 可追溯性;框架交叉映射到 PCI DSS 11.4、SOC 2、ISO 27001 / 42001、NIST CSF / AI RMF、EU AI Act; OpenVEX 用于“受影响/不受影响”判定;攻击成功率以 Wilson 95% 置信区间报告。可选的持证 CREST/OSCP 人工复核。
SSO、SCIM 与角色
内容: 面向团队的企业身份管理——单点登录、自动用户开通与 取消开通、基于角色的访问控制以及审计日志。每个资产、扫描和发现项都限定在你的工作区范围内。
方式: 四种角色—— 所有者 (全部权限,含计费)、 管理员 (管理工作区)、 成员 (执行工作)、 查看者 (只读)——另外还有:
- 单点登录(OIDC) ——你的团队通过你的身份提供商(Okta、Entra/Azure AD、Google、Auth0)登录;你邮箱域名下的新用户会被自动开通。由所有者配置,需提供 issuer URL、client ID/secret 以及你的域名。
- SCIM 2.0 开通 ——你的 IdP 会自动创建用户,更关键的是,还会自动 取消开通 用户。在 IdP 中停用某人后,其在此处的访问权限会立即被切断:其令牌会被吊销,而不仅仅是切换一个标志位。
- 审计日志 ——谁触发了哪些扫描,谁查看或导出了哪些报告。
原因: 在团队规模下,风险不只来自外部——也可能来自一位访问权限从未被切断的前员工,或一个权限过高的账户。SSO 将登录集中到你 IdP 的策略上(MFA、条件访问);SCIM 确保离职注销即时生效,而不是一张被人遗忘的工单。
工具: SSO 采用 OpenID Connect(OIDC)——Okta、Microsoft Entra ID、Google Workspace、Auth0; SCIM 2.0 用于开通/取消开通;按租户分配的 bearer 令牌,采用恒定时间比较并支持即时吊销。Enterprise 套餐。请参阅 SSO 与 SCIM 完成设置。
指南:运行你的第一次扫描
目标:从一个全新账户走到一项已证实的发现。
前提条件
- 一个已验证的账户(浏览器快速入门)。
- 一个目标 URL ——一个由你拥有或获准测试的、正在运行的应用实例。请使用 预发布环境 URL,不要使用生产环境。这是 必填的;仅有代码并不等于一个正在运行的应用。还没有?请参阅 扫描对象。
- 可选:你的源代码 ——一个 git 仓库 URL 或一个
.zip上传文件,用于更深入的 白盒 扫描。
步骤
- 打开应用,将你的目标粘贴到扫描框中,或调用
POST /api/scan。 - 如果你有源代码,请添加——在以下字段中填入仓库 URL 或本地路径:
source。这是提升发现质量最有效的手段。 - 开始扫描。记下
run_id。 - 等待扫描完成(状态
running→false)。通常只需几分钟。 - 打开报告,从上往下分诊:先处理严重级别。
故障排查
- 403,“verify your email” ——点击验证链接,或点击“Resend”/
POST /api/resend。 - 402,已达配额 — 没有剩余的套餐内扫描或扫描包次数。请在“账单”中购买扫描包(套餐)。
- 500,“scan did not start” ——引擎无法启动(Docker 或模型密钥问题)。如为自托管,请检查你的
.env;如使用我们的托管应用,请重试。 - 仅 URL 扫描结果为零发现 ——提供
source并重新运行。仅靠黑盒测试往往会遗漏 AI 特有的路径。
指南:注册目标
如果你需要反复扫描同一个应用,请在 目标 选项卡中注册一次,而不必每次都粘贴。每个目标都会记住自己的设置,因此重新扫描只需点击一下 立即扫描。CI 套餐也会在每个拉取请求上自动扫描已注册的目标。
各字段的作用
| 字段 | 作用 |
|---|---|
| 名称 可选 | 一个标签,便于你在列表中识别该目标。默认为目标本身。 |
| 目标 | 要测试的应用——一个 URL、代码仓库、IP 地址或域名。务必指向 预发布环境,切勿指向生产环境(请参阅 扫描对象)。 |
| 源代码仓库 可选 | 指向你代码仓库的链接。添加后将开启 白盒 测试——扫描会读取你的源代码,比仅从外部测试能发现多得多的真实漏洞(请参阅 黑盒与白盒)。 |
| 重点 / 指令 可选 | 用自然语言引导扫描——需要重点关注的区域(例如“登录和支付”)、用于登录的测试凭据,或需要优先探测的特定页面。 |
| 范围 | 完整扫描,或 仅变更文件 ——一种更快、更便宜的重新扫描,只检查发生变更的内容。当目标是代码仓库或你已添加源代码仓库时可用。 |
| 基准引用 仅限变更文件 | 用于比较的基准——分支、标签或发布版本。留空则与仓库的主分支进行比较。 |
点击“立即扫描”后会发生什么
- 系统会检查你的设置,任何无法生效的配置都会被立即发现——例如 仅变更文件 需要代码仓库,因此你会在扫描开始前就得到提示,而不是等扫描失败后才知道。
- 你的 套餐和支出上限 会被应用,因此扫描绝不会超出你的预算(请参阅 支出上限与安全)。
- 测试在一次性的隔离沙箱中运行——你的代码绝不会被复用或保留(请参阅 你的数据)。
- 扫描完成后,结果会显示在 渗透测试发现 下(请参阅 查看扫描结果)。
指南:查看扫描结果
扫描完成后,从 扫描 列表中打开它。其结果显示在 渗透测试发现下,并按选项卡组织,你无需滚动即可到达任一部分。
选项卡
| 选项卡 | 包含内容 |
|---|---|
| 发现项 | 扫描所证实的每一个漏洞,以可展开的卡片形式呈现。这是你花时间最多的地方。 |
| 依赖项 CVE | 你所用第三方库中的已知缺陷(来自自动化依赖项扫描),与应用逻辑类发现分开呈现。可被利用的漏洞会自动检查其 可达性 ——即你的代码是否真正调用了存在漏洞的路径——不可达的漏洞会被抑制,并提供这些判定的 OpenVEX 导出(⬇ VEX),供你的审计人员使用。 |
| 渗透测试报告 | 正式的书面报告(仅在扫描完整运行结束时生成)。 分享 报告、下载带品牌标识的 PDF,或原始 .md。 |
| 数据轨迹 | 监管链记录——证明你的代码仅在一次性沙箱中运行、从未被用于训练任何模型,并在扫描结束时被删除。 |
筛选发现项
一次大型扫描可能产生数百项发现。列表上方的彩色标签可帮助你聚焦——点击某个标签进行筛选,点击 ✕ 清除筛选 即可重新查看全部内容:
- 严重程度标签 — 严重 高 低 ——仅显示该级别的发现项。大型扫描默认聚焦于最严重的级别,让最糟糕的问题首先呈现在你面前。
- ⚡ PoC ——仅显示附带可运行、已证实漏洞利用的发现项(置信度最高的那些)。
每项发现在展示前还会经过对抗性复核:扫描器判定为 可能为误报 的内容默认隐藏(通过一个开关可重新显示,方便你自行复核判断)。
阅读单项发现
- 从严重和高危开始 ——这些是攻击者最先能触达的。
- 打开“概念验证” ,以清晰的步骤查看该漏洞究竟如何被利用。在付费套餐中,展开 ▸ 漏洞利用脚本 即可获取真正可运行的漏洞利用代码,方便工程师复现。
- 阅读“修复方案” ——具体的修复方法——以及代码 位置。
- 修复它 (参见下一篇指南),然后 重新扫描 以确认漏洞已被堵上。
指南:修复扫描发现的问题
在 Starter 套餐及以上,并且 已连接 GitHub的情况下,Redthread 可以为你起草修复,形式为 拉取请求 ——由你审查并合并; 不会有任何内容自行变更。已完成扫描的顶部一行提供两个一键操作。
开始之前
- 你使用的是 Starter 套餐或更高套餐。
- 你已 连接 GitHub (“集成”选项卡),并且扫描使用了一个 GitHub 仓库 作为其源代码。
- 扫描已 完成 ——提前停止的扫描可以先 继续 运行至完成。
1. 修复你自己的代码—— ⚙ 生成修复 PR
针对 应用类发现 ——即存在于 你的 代码中的缺陷,例如访问控制失效或注入:
- 打开已完成的扫描,点击顶部一行中的 ⚙ 生成修复 PR 。
- 它会定位每项发现背后的代码,编写一个 最小化修复,并在你的仓库中创建一个 拉取请求草稿 。
- 点击 ↗ 查看修复 PR ,在 GitHub 上审查它。
- 修复不太对?点击 ↻ 重新生成 ,并告诉它需要修改或保留什么(例如 “保留现有的会话检查”)。它会 根据你的指导 重试,并更新同一个 PR——不会产生重复。
2. 修复存在漏洞的库—— ⬆ 更新依赖项
针对 依赖项发现 ——即你的应用所依赖的第三方库中的已知 CVE:
- 点击 ⬆ 更新依赖项 。
- 它会将每个存在漏洞的软件包升级到其 已修补版本 (在你可编辑的清单文件中:
requirements.txt,package.json),并创建一个 PR 草稿。 - 锁定在 锁文件 (
package-lock.json,poetry.lock,uv.lock)中的漏洞无法安全地手动编辑——PR 会逐一列出,并附上需要运行的确切命令(例如npm install [email protected])。 - 审查变更,运行列出的锁文件命令,然后合并。
指南:在每个拉取请求上扫描
在 Starter 及以上套餐中,每个涉及你 AI 攻击面的拉取请求都会触发一次限定范围的扫描,并在发现已证实的全新漏洞时阻止合并。重复出现的发现会被去重,因此流水线会保持安静,直到出现真正的问题。在 Starter 及以上套餐中,一项已确认的发现还可以创建一个修复拉取请求草稿(以及一个依赖更新 PR),由你的工程师审查——不会有任何内容自行合并。审查状态可通过以下接口获取: GET /api/pr-reviews。
指南:使用 GitHub Action 扫描
使用我们发布的以下组件,将扫描接入任意流水线: GitHub Action。它在 push 时扫描并为构建设置门禁——或仅发送通知。
- 获取触发密钥。 在 持续 视图中,打开你的资产并点击 CI ,即可显示该资产专属的触发密钥和资产 ID。该密钥仅限于这一个资产——它可以启动并读取该资产的扫描,绝不能访问你的整个账户。
- 将其存储为仓库机密 ,命名为
REDTHREAD_SCAN_KEY。 - 添加工作流 ,路径为
.github/workflows/security.yml:
name: security
on: [push]
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: bl014h/redthread-scan-action@v1
with:
api-key: ${{ secrets.REDTHREAD_SCAN_KEY }}
asset-id: "abcd1234"
fail-on: high # critical | high | medium | low | never
fail-on: never 为仅通知模式——它会运行扫描并发布作业摘要,但绝不会让构建失败。你可以随时在同一面板中轮换密钥;旧密钥会立即失效。
指南:在 ChatGPT 和 Claude 中使用 Redthread
Redthread 提供 MCP 服务器,你可以用日常语言向 AI 助手询问安全状况:自上次扫描以来有什么变化、哪些攻击路径已被证实、哪些 AI 服务无人审查。它可在 ChatGPT、Claude 以及任何支持带 OAuth 的远程 MCP 服务器的客户端中使用。
- 添加服务器。 地址为
https://app.redthreadsec.com/mcp。在 Claude 中,打开 Settings → Connectors → Add custom connector。在 ChatGPT 中,打开 Settings → Apps & Connectors 并创建一个连接器(需要开发者模式)。 - 登录并允许。 助手会打开一个 Redthread 页面。登录,确认工作区,然后点击 允许。
- 提问。 例如:“我最严重的攻击路径有哪些?”或“显示 checkout API 上次扫描的发现。”
助手可以读取你的安全概览、攻击路径、扫描发现和影子 AI 清单,依据 Redthread 签名的注册表扫描检查 MCP 服务器,并对已连接的云发起只读重新扫描。它不能连接新的云、更改设置、查看密钥或删除任何内容。
指南:就某次扫描提问
不确定某项发现是什么意思,或在你的技术栈中该如何修复?直接提问。 POST /api/chat 接受一个消息列表,并可选地接受一个 run_id ,让回答基于该次扫描的具体发现。用它可以把一份报告变成修复计划。
套餐、配额与超额
套餐会根据你的资产规模和用量报价—— 申请报价 请前往定价页面。你套餐的配额和限制显示在应用中的 计费。
- 什么算一次扫描? 针对一个目标的一次运行。一次拉取请求检查和一次完整扫描各计为一次。
- 渗透测试扫描。 每个付费套餐每 10 个工作负载每月包含一次渗透测试扫描(向上取整;Starter 3 次,Growth 15 次)。资产规模越大,次数越多。超出部分的扫描使用预付扫描包(5 次或 20 次,有效期 12 个月),或在已绑定银行卡时按次计费。
- 免费层级。 终身一次渗透测试扫描(不会重置),让您在做决定前看到真实的发现。可用的漏洞利用代码和自动修复在任意付费套餐中解锁。
现有客户可以在应用中更改套餐,或使用 POST /api/billing/checkout。如需新套餐,请 联系我们。
开发阶段
客户可在应用内阅读此部分: 登录 后打开任意文档链接。
API 参考
客户可在应用内阅读此部分: 登录 后打开任意文档链接。