confirmxxx/Swanlake

GitHub: confirmxxx/Swanlake

面向 AI Agent 的纵深防御框架,通过可组合的安全基础组件在输入路径上阻断恶意内容对 Agent 的操控。

Stars: 0 | Forks: 0

# Swanlake **Swanlake** 是一个针对 AI Agent 的纵深防御安全框架——无论这些 Agent 运行在你开发者机器上的 Claude Code 中,还是作为生产应用中的自主 Agent。Swanlake 是 **子程序层**:一组位于你的 Agent 之下的、小型的、可组合的基础组件。你可以开启那些针对你特定威胁的组件;每一个组件都针对特定的攻击类别。它们都不承诺完美的防御。 ## 为什么会有这个项目 2026 年的自主 AI Agent 生存环境充满敌意。近期的学术研究已经明确指出了以下几点: - **一封被投毒的电子邮件**就能导致 Agent 在多 Agent 工作流中以超过 80% 的成功率窃取 SSH 密钥 (arXiv:2601.07072)。 - 数据集中仅 **0.0005%** 的内容——百万文档中的五篇——就足以使检索增强生成偏向攻击者的叙事 (PoisonedRAG, arXiv:2402.07867)。 - 自适应攻击对针对 Agent 编码助手的最先进防御手段实现了 **>85% 的成功率** (arXiv:2601.17548)。 - 在会话开始时加载的 MCP **工具描述** 是一等注入攻击面 (arXiv:2603.22489, 2506.02040)。 - Agent 技能文件被视为受信任的系统提示词——而被修改过的技能可以绕过下游的所有 Web 内容防御 (arXiv:2510.26328)。 原生平台功能(Claude Code 沙箱、隔离上下文的 WebFetch、MCP OAuth 2.1 增量范围机制、模型层通过 RL 抵御提示词注入)是非常强大的基线,并且在实质上削减了攻击面。但它们并未消除残余风险。Swanlake 是位于其上方的层:可组合的基础组件,用于增加针对特定表面的溯源、信任域范围界定、研究分发纪律和失败即闭环的过期门控——而不是重新发明平台已经完成的功能。 ## 盒子里有什么 每个包都是一个基础组件。你可以采用一个、多个或全部。 | 包 | 它是什么 | Claude Code | Agent 应用 | |---|---|---|---| | [`defense-beacon/`](./defense-beacon/) | 零信任表面标记,具有按表面的 Canary 溯源 + 本地注册表纪律 + 过期门控 | ✅ 参考实现 | ✅ 通过 `swanlake adapt cma` (CMA 适配器安装 Beacon Part A + 每一 CMA 的 Part B Canary) | | [`trust-zones/`](./trust-zones/) | 四域分类法 (UNTRUSTED-INPUT / INTERNAL / HIGH-TRUST / SEGREGATED),用于限定每个 Agent 的 MCP / 工具访问权限 | ✅ 参考实现 | ✅ 通过 `swanlake adapt cma` (CMA 适配器应用由 `zones.yaml` 驱动的工具允许列表) | | [`reflex-purity/`](./reflex-purity/) | “关键路径无 LLM” 的模式 + AST lint 草案——防止在延迟关键型系统中发生协同 Agent 操纵 | 论文 + 模式 | 🟡 AST 检查通过 `swanlake adapt cma` (仅报告;即使存在违规也以状态码 0 退出——由操作员决定是否将其接入为 CI 门控) | | [`reconciler/`](./reconciler/) | 跨表面自主同步。单一规范源通过 `@import` 传播到 CLAUDE.md (零延迟),watchdog Routine 到 Notion,systemd 计时器到 vault。漂移检测 + 便携的 `--init` 向导。通过 `swanlake sync` 调用。 | ✅ 阶段 1 已发布 | 规范适用;该基础组件目前达到操作员级别 | | [`experiments/white-cells/`](./experiments/white-cells/) | 持续的 AI 红队测试。6 种攻击类别人设 (Beacon-Burner / Zone-Climber / Reflex-Smuggler / Research-Poisoner / Hook-Fuzzer / Multi-Turn Crescendo)。具有明确终止标准的闭环率指标。 | 🟡 阶段 1+2+3 alpha | 相同——运行在固件测试上,而非生产环境 | 支持文档: | 文档 | 涵盖内容 | |---|---| | [`THREAT-MODEL.md`](./THREAT-MODEL.md) | Swanlake 防御的攻击向量,不防御的向量,以及诚实度问题 | | [`DEPENDENCIES.md`](./DEPENDENCIES.md) | Swanlake 依赖的原生平台功能 (Claude Code sandbox, MCP OAuth 等)——你可以免费获得的能力 | | [`NON-GOALS.md`](./NON-GOALS.md) | Swanlake 明确不打算做的事 | | [`docs/adversarial-research-pattern.md`](./docs/adversarial-research-pattern.md) | 用于保护自身研究安全主题的 Agent 的强化研究分发纪律 | | [`docs/reflex-purity-pattern.md`](./docs/reflex-purity-pattern.md) | 深入探讨 Reflex-Purity 原则 | | [`docs/how-this-fits-above-native-claude-code.md`](./docs/how-this-fits-above-native-claude-code.md) | 层次划分——原生功能提供什么,Swanlake 增加了什么 | | [`reconciler/README.md`](./reconciler/README.md) | Reconciler 架构概述 + 使用命令 + 偏差退出选项 + 状态段集成 | | [`reconciler/OPERATOR-SETUP.md`](./reconciler/OPERATOR-SETUP.md) | 全新机器的设置演练(约 10 分钟):克隆、初始化 Canary 注册表、向导、systemd 计时器、验证 | ## v0.4 (当前版本) 中的新内容 - **强制执行层** —— `swanlake scan` (按项目审计),SessionStart 建议提醒 (通过 `swanlake adapt cc --enable-session-nudge` 选择启用),以及用于搭建全新 Swanlake 感知项目的 `swanlake init project --type {cc,cma}`。保留了硬性规则:在没有明确操作员确认的情况下,没有任何东西会自动安装。参见 [`docs/v0.4-enforcement-spec.md`](./docs/v0.4-enforcement-spec.md)。 - **工作树安装隔离** —— 位于 `~/.swanlake/.install-marker` 的安装标记会自我检测并在从兄弟工作树执行 `pip install -e .` 捕获到全局安装指针时发出警告。v0.4.1 修复了 tarball 安装瞬态构建路径下的自愈问题。新增的 `swanlake doctor` 第 10 项探测用于验证标记是否与运行时路径匹配。参见 [`docs/v0.3.x-worktree-install-isolation-spec.md`](./docs/v0.3.x-worktree-install-isolation-spec.md)。 - **Reconciler `ack` 子命令** —— `swanlake reconciler ack ` 记录了一次仅限远程的同步(例如通过 watchdog routine 同步到 Notion)的发生,从而清除了架构上正确但在表面上显得嘈杂的持续本地状态 ALARM。v0.4.2 将 `STATE_PATH` 迁移到 `~/.swanlake/last-sync.json`,以便 ack 清除状态的流程能够端到端工作(旧版 XDG 路径在首次运行时自动迁移)。 - **`swanlake beacon` 系列** (随 v0.3 发布) —— `list`, `sweep`, `deploy`, `checklist`, `verify`,带有严格的 LOCAL/REMOTE 分离(LOCAL 在 12 步安全机下进行;REMOTE 根据 SPEC 保留为仅 checklist 模式)。参见 [`docs/v0.3-beacon-deploy-spec.md`](./docs/v0.3-beacon-deploy-spec.md)。 - **`.swanlake-no-beacon` 退出标记**,用于将目录排除在 sweep/deploy/scan 之外。参见 [`docs/swanlake-no-beacon.md`](./docs/swanlake-no-beacon.md)。 - **39 项发现的边缘情况审计** —— 位于 [`docs/edge-case-audit-2026-04-27.md`](./docs/edge-case-audit-2026-04-27.md) 的永久积压。已发布 7 个快速修复,包括 Canary 匹配的 UTC 日期时区错误。 所有 v0.3.x 的入口点和子命令均保持不变。向后兼容升级。 ## Swanlake 在 Agent 免疫系统中的位置 Swanlake 覆盖了 **输入路径**:它阻止恶意内容在摄取阶段操控 Agent。它不针对 Agent 的动作强制执行策略。对于输出路径——在执行之前对每个动作进行确定性的策略执行——请将 Swanlake 与 [Microsoft Agent Governance Toolkit (AGT)](https://github.com/microsoft/agent-governance-toolkit) 或等效的策略中间件配对使用。 | 层 | 切断哪条路径 | 基础 | |---|---|---| | Swanlake (本仓库) | 恶意输入 → Agent | 按表面的 Canary 溯源 + 信任域范围界定 + Reflex Purity。操作员级别的原语。 | | AGT | 受损的 Agent → 有害动作 | 确定性策略执行、零信任身份、执行环、终止开关。企业级基础设施。 | 单独使用哪一种都不够。AGT 阻止受损的 Agent 执行恶意动作;而 Swanlake 阻止 Agent 在第一时间受损。OWASP Agentic Top 10 横跨了这两半部分 (ASI-01 到 ASI-10)。 **部署成本是不对称的**:AGT 需要 DevSecOps 团队、容器以及针对每种语言的 SDK 集成;而 Swanlake 只需一次 Claude Code 订阅加上一个仓库安装。在生产环境中运行 AGT 的操作员同样能从 Swanlake 中受益——不同的预算,不同的团队,不同的部署面。 ## 设计原则 1. **仅限部分自动化。** 基础组件只产出证据。它们绝不会静默应用配置、挂钩代码、拒绝规则或修改 MCP。一切由人类决定。 2. **失败即闭环的过期机制。** 如果威胁态势已过期超过 N 天(默认为 7 天),则拒绝表面扩展操作(新的 MCP 安装、新工具授权、风险边界更改),直到刷新为止。 3. **建议性 + 硬性控制。** 模型读取的规则是 *建议性的* (合规性取决于模型)。溯源触发线 + 操作系统级别的隔离是 *硬性的* (独立于模型行为)。每个 Swanlake 基础组件都将两者配对使用。 4. **不重新发明平台。** 原生 Claude Code 已经附带了子进程沙箱、隔离上下文的 WebFetch、分类器层和挂钩事件。Swanlake 依赖于这些,而不是取代它们。参见 `DEPENDENCIES.md`。 5. **标准库优先。** 参考实现尽可能使用 Python + bash 标准库。零 pip 基线安装。 6. **用于溯源的本地注册表。** Canary Token 是本地秘密。Swanlake 提供模式和生成器,绝不提供 Token 本身。 ## 实际中的样子 一旦接入,Swanlake 状态段就会成为你终端中的一面安静盾牌: ``` ~/projects/myapp main opus-4.7 xhigh 🛡 ``` 干净的盾牌 = 干净的姿态。当有事项需要关注时,旁边会出现标志: | 你看到的 | 含义 | |---|---| | `🛡` | 一切正常。继续工作。 | | `🛡?` | 尚未运行过 watchdog。运行一次。 | | `🛡stale:3d` | 姿态已过期 3 天。尚可,但开始落灰了。 | | `🛡!stale:9d` | **过期门控已激活。** 在刷新之前,不能有新的 MCP / OAuth 授权。 | | `🛡canary:1` | 触发线今天被触发了一次。检查 `~/.claude/canary-hits/`。 | | `🛡inject:5` | 内容安全 Hook 今天拦截了 5 次提示词注入尝试。检查 `~/.swanlake/content-safety/`。 | | `🛡exfil:2` | 秘密形状的 Payload 已被拦截。检查 `~/.claude/exfil-alerts/`。 | | `🛡!stale:8d,canary:1` | 多个问题。优先对最新问题进行分诊。 | 通过 `tools/sync-posture.py` 从 Notion 姿态页面同步盾牌的新鲜度信号。 因为仪表板需要你主动打开。而状态栏中的盾牌你每次瞥一眼终端时都能看到。完整的速查表 + 集成位于 [`tools/README.md`](./tools/README.md)。 ## 操作 Swanlake (v0.4 CLI) ### 安装 ``` # 推荐 — pipx 以实现完全隔离(无 worktree-install 污染) pipx install git+https://github.com/confirmxxx/Swanlake.git@v0.4.2 # 或 frozen tarball pip install --break-system-packages https://github.com/confirmxxx/Swanlake/archive/refs/tags/v0.4.2.tar.gz # 从源码 — 仅用于开发安装。使用多个 git worktrees 时, # 来自同级 worktree 的 `pip install -e .` 会捕获全局安装 # 指针;对于非开发用途,请优先使用 pipx 或上述 tarball。 # 如果在 CLI 启动时检测到版本漂移,install-marker 检查将发出警告。 git clone https://github.com/confirmxxx/Swanlake.git cd Swanlake pip install -e . ``` `swanlake --version` 打印 `0.4.2`。 ### 六大工作流 **1. 姿态检查。** `swanlake status` 聚合 7 个维度 (reconciler / canary / inject / exfil / closure / coverage / bench),并在发生漂移时以非零状态码退出。 ``` $ swanlake status swanlake status -- 2026-04-26T14:23Z dimension status detail -------------- --------- ---------------------------------------- reconciler clean notion: fresh, claude_md: 2h, vault: fresh canary clean 0 hits / 4 fires (24h) inject clean 0 hits / 14 fires (24h) exfil clean 0 hits / 0 fires (24h) closure ok 0.94 ratio (7d window) coverage ok 3d old (12 surfaces tracked) bench ok 3d since last quick run overall: CLEAN [exit 0] ``` 当某个表面发生漂移时,该行会变红,退出码随之变化: ``` reconciler drift notion: missing, claude_md: 26h, vault: fresh coverage stale 8d since last verify (8 of 25 surfaces tracked) overall: DRIFT [exit 1] ``` **2. 规范同步。** 将规范同步到受管表面。务必先预览: ``` swanlake sync --dry-run # prints which page IDs and which blocks will change swanlake sync # [y/N] prompt showing the same diff swanlake sync --yes # skips the prompt (for cron / systemd timers) ``` **3. 接入新表面。** ``` swanlake init --add-surface NAME ``` 将 `NAME` 注册到 `~/.swanlake/coverage.json` 中,而无需重新运行引导向导。 **4. 对抗性冒烟测试。** ``` swanlake bench --quick # ~1 min fixture-based smoke; writes ISO-UTC to ~/.swanlake/last-bench swanlake bench --full # v0.4+ stub; PyRIT + Garak harness deferred. Currently exits 0 with a manual-fallback hint pointing at /tmp/swanlake-pyrit-garak-bench-*/run.sh. ``` **5. Beacon 部署 (LOCAL 表面) + 清单 (REMOTE 表面)。** ``` swanlake beacon list # 7 surface types + scope (local/remote) + deploy method swanlake beacon sweep # find unbeaconed/partial surfaces; honors .swanlake-no-beacon opt-out swanlake beacon deploy # 12-step LOCAL safety machine (clean-tree, backup, atomic write, post-status) swanlake beacon checklist # paste-ready markdown for REMOTE surfaces; default stdout (no on-disk live-canary registry) swanlake beacon verify # thin wrapper + 5-type REMOTE dispatch ``` 根据威胁模型,自动部署到 REMOTE 表面 (Notion, Supabase, Vercel, GitHub, Routines) 是被禁止的——清单即是部署产物。在任何目录中放入一个 `.swanlake-no-beacon` 文件即可将其从 sweep/deploy 中排除;完整语义见 [`docs/swanlake-no-beacon.md`](./docs/swanlake-no-beacon.md)。 **6. 新机器。** ``` pipx install git+https://github.com/confirmxxx/Swanlake.git@v0.4.2 \ && swanlake init \ && swanlake adapt cc ``` 三个命令从零开始到全面部署。 **7. 审计现有项目 + 搭建新项目。** ``` swanlake scan # walk ~/projects/*; classify each project swanlake init project --type cc # scaffold a fresh CC-aware project swanlake init project --type cma # scaffold a fresh CMA-aware project swanlake adapt cc --enable-session-nudge # opt in to per-session unprotected-project nudge ``` `scan` 是只读的;从不安装任何东西。SessionStart 提醒仅作建议——由操作员按项目决定。 ### 自动接线 (设置后即可忘) 三个可选的接线将框架推向“存在、工作、被遗忘”的状态。全部是建议性的或仅限本地;均不会自动修改操作员表面。 ``` # 1. SessionStart 提示 — 在每次 CC session 中,如果当前 # project 缺少 Swanlake,将输出一行 stderr 信息。否则保持静默。 swanlake adapt cc --enable-session-nudge # 2. 每日 bench --quick(通过 systemd user timer)— 保持 bench 刷新度 # 为 dim green;日志记录到 ~/.swanlake/bench-daily.log。 cat > ~/.config/systemd/user/swanlake-bench-daily.service <<'EOF' [Unit] Description=Swanlake daily bench --quick After=network-online.target [Service] Type=oneshot ExecStart=%h/.local/bin/swanlake bench --quick StandardOutput=append:%h/.swanlake/bench-daily.log StandardError=append:%h/.swanlake/bench-daily.log EOF cat > ~/.config/systemd/user/swanlake-bench-daily.timer <<'EOF' [Unit] Description=Run swanlake bench --quick daily [Timer] OnCalendar=*-*-* 07:00:00 RandomizedDelaySec=900 Persistent=true Unit=swanlake-bench-daily.service [Install] WantedBy=timers.target EOF # 3. 每周 reconciler ack — 在 security-watchdog Routine cron # 之后触发,以便本地 reconciler dim 自动清除。 cat > ~/.config/systemd/user/swanlake-reconciler-ack-weekly.service <<'EOF' [Unit] Description=Swanlake weekly reconciler-ack notion After=network-online.target [Service] Type=oneshot ExecStart=%h/.local/bin/swanlake reconciler ack notion --note "weekly auto-ack" StandardOutput=append:%h/.swanlake/reconciler-ack-weekly.log StandardError=append:%h/.swanlake/reconciler-ack-weekly.log EOF cat > ~/.config/systemd/user/swanlake-reconciler-ack-weekly.timer <<'EOF' [Unit] Description=Weekly reconciler ack (post security-watchdog Routine) [Timer] OnCalendar=Sun *-*-* 11:00:00 UTC RandomizedDelaySec=600 Persistent=true Unit=swanlake-reconciler-ack-weekly.service [Install] WantedBy=timers.target EOF systemctl --user daemon-reload systemctl --user enable --now swanlake-bench-daily.timer swanlake-reconciler-ack-weekly.timer ``` 在此之后,仅剩的手动操作是为每个真实项目执行一次 `swanlake adapt cma --project `(这需要操作员明确确认,因为它会修改项目文件),以及好奇时瞥一眼状态栏的盾牌。 ### 手动安装 / 自定义 (后备方案) 不想安装 CLI 的操作员仍然可以直接驱动每个基础组件: ``` # clone git clone https://github.com/confirmxxx/Swanlake.git cd Swanlake # 为你的 surfaces 生成 beacon 输出 python3 defense-beacon/reference/make-canaries.py --help # 按 trust zones 确定 agent pack 范围 cp trust-zones/reference/zones.example.yaml trust-zones/reference/zones.yaml # 编辑 zones.yaml 以列出你的 agents 及其 zones bash trust-zones/reference/apply-mcp-scopes.sh --dry-run # 在你的 ~/.claude/settings.json 中安装 canary-match hook # 有关代码片段请参见 defense-beacon/README.md ``` 每个包的 README 都有完整的演练步骤。 ## 操作 Swanlake —— Agent 应用 ### CMA (Claude Managed Agents) ``` swanlake adapt cma --project PATH ``` 仅针对合成的 CMA 形状固件进行了验证;**首次真实项目安装属于操作员的后续工作**。该适配器可作用于任何包含由每个 CMA 的 markdown/yaml 文件组成的 `cmas/` 或 `agents/` 目录的项目(可通过 `--cma-glob` 配置)。对于每个 CMA,适配器都会: - 将 Beacon Part A 操作规则注入 CMA 的系统提示词中 - 在首次安装时生成特定于每个 CMA 的 Part B Canary (重新运行时保留) - 读取项目的 `zones.yaml` (或生成一个将所有 CMA 分类为 `INTERNAL` 的配置),并将该域的工具允许列表语义应用于每个 CMA 的工具配置 - 对可配置的热路径 glob 模式运行 reflex-purity AST 检查 (`--reflex-glob`,默认为 `**/reflex*.py:**/hot_path*.py`)。此检查仅作报告:违规情况会记录在项目清单和 stderr 中,但 `swanlake adapt cma` 仍会以状态码 0 退出。由操作员决定是否将报告作为硬性门控接入 CI。 - 将每个 CMA 作为表面注册到 `~/.swanlake/coverage.json` 中,带有 `type=cma, project=, cma_id=` 通过 `swanlake adapt cma --project PATH --uninstall` 卸载会撤销位于 `~/.swanlake/cma-adapter-manifest-.json` 的每个项目清单中的所有内容。 不要将此理解为“Swanlake 保护了生产环境中基于 CMA 的 Agent 系统”。CMA 适配器是安装基础组件;生产环境加固是操作员的工作。 ### Anthropic SDK ``` swanlake adapt sdk ``` v0.4 中的存根;需要等待真正的 SDK 采用者。以状态码 3 退出并显示延迟存根消息。 ### Node 不在 v0.4 的范围内。每个包的 `SPEC.md` 是与实现语言无关的;Node 操作员可以根据规范进行实现,并在出现空白时提交 issue。 ## 与原生 Claude Code 的兼容性 Swanlake 需要 Claude Code 2.1.x+ 以及以下原生功能,这些记录在 `DEPENDENCIES.md` 中: - Hook 事件: `SessionStart`, `PreToolUse`, `PostToolUse`, `PermissionDenied`, `ConfigChange` - 子进程沙箱 (Linux bubblewrap / macOS Seatbelt / WSL2) - 隔离上下文的 `WebFetch` - MCP OAuth 2.1 增量范围机制 这些都没有被 Swanlake 取代。它们是基础。 ## 不与以下项目竞争 Swanlake 明确无意取代: - [`kenryu42/claude-code-safety-net`](https://github.com/kenryu42/claude-code-safety-net) —— 拥有更成熟的语义 bash 解析器 - [`slavaspitsyn/claude-code-security-hooks`](https://github.com/slavaspitsyn/claude-code-security-hooks) —— 具有 Canary 文件先例的 7 层 Hook 包 - [`lasso-security/claude-hooks`](https://github.com/lasso-security/claude-hooks) —— PostToolUse 提示词注入扫描器 - [`invariantlabs-ai/invariant`](https://github.com/invariantlabs-ai/invariant) —— 带有策略规则 DSL 的 MCP 代理 在合适的地方将它们与 Swanlake 并行使用。Swanlake 提供了它们技术栈未涵盖的基础组件:按表面的 Canary 溯源、信任域分类法、Reflex-Purity 模式、对抗性研究纪律。参见 `NON-GOALS.md`。 ## 贡献 参见 `CONTRIBUTING.md`。所有提交都需要开发者原创证书 (DCO) 的签核。 ## 许可证 Apache 2.0。版权所有 (c) 2026 confirmxxx。参见 `LICENSE` 和 `NOTICE`。 ## 状态 Pre-1.0,尚无第三方采用者。v0.4 发布了强制执行层 (scan + SessionStart 提醒 + init project)、工作树安装隔离、reconciler ack,以及在 v0.3 Beacon 系列和 v0.2 统一 CLI 之上的 7 项边缘情况补丁。SDK 适配器是一个延迟存根;`--full` PyRIT/Garak 基准测试套件是一个 v0.5+ 存根。此处文档化的基础组件规范已稳定。 参考实现简单直接,但在维护者自己的部署环境之外尚未积累生产环境经验。由 `swanlake adapt cc` 安装的 Hook 模板是最小化的演示(每个约 30-60 行 LOC),只用于演练契约——它们不是开箱即用的 hardened 生产 Hook 栈。将它们视为起始骨架,并根据你自己的威胁模型进行加固。Reflex-Purity 是仅作报告的 AST 检查;将其接入为 CI 门控是操作员的决策。 ## 诚实的审计日志 最后针对已发布的 CLI 接口和行为进行审查的时间是 **2026-04-27**,针对 **v0.4.2**。在该次审查中涉及的文档有: - `README.md`, `THREAT-MODEL.md`, `NON-GOALS.md`, `DEPENDENCIES.md`, `CONTRIBUTING.md` - `docs/v0.2-unified-cli-spec.md`, `docs/v0.3-beacon-deploy-spec.md`, `docs/swanlake-no-beacon.md`, `docs/how-this-fits-above-native-claude-code.md`, `docs/adversarial-research-pattern.md`, `docs/reflex-purity-pattern.md` - `defense-beacon/README.md`, `trust-zones/README.md`, `reflex-purity/README.md`, `reconciler/README.md`, `experiments/white-cells/README.md`, `tools/README.md`, `defense-beacon/examples/synthetic-saas/README.md`
标签:AI安全, Chat Copilot, CISA项目, DNS 反向解析, JSONLines, LLM, MCP安全, RAG安全, Red Canary, Unmanaged PE, 信任区, 大模型安全, 威胁建模, 安全左移, 工作流安全, 工具调用安全, 应用安全, 归因分析, 持续红队, 提示注入防御, 文档安全, 智能体安全, 检索增强生成, 沙箱, 深度防御, 源代码安全, 网络安全, 自主修复, 自治系统, 蜜罐, 证书利用, 逆向工具, 防御纵深, 隐私保护, 零信任