以下风险台账基于当前仓库实现与 CI/CD 配置(.github/workflows/ci.yml、cd.yml、llmsecops.yml)整理。
| 风险ID | 风险项 | 可能性 | 影响 | 当前残余风险 |
|---|---|---|---|---|
| R-01 | Prompt Injection / 越权指令注入 | 中 | 高 | 中-低 |
| R-02 | 不安全输出(unsafe content) | 低-中 | 高 | 低 |
| R-03 | LLM 结构化输出偏差/幻觉 | 中 | 中 | 低 |
| R-04 | 外部依赖与供应链风险 | 中 | 高 | 中 |
| R-05 | 密钥泄漏与凭据误用 | 低-中 | 高 | 中-低 |
| R-06 | 上游 API 异常导致可用性下降 | 中 | 中 | 中 |
| R-07 | 数据最小化不足(thread state 持久化) | 中 | 中 | 中 |
| R-08 | 对抗样本绕过静态规则 | 中 | 高 | 中 |
攻击面
userRequest.requestText 和 naturalLanguage现有控制
detectPromptInjection(...)(src/security/guardrails.ts)对常见注入语句做 regex 检测,支持零宽字符和 homoglyph 归一化。risk_guard 使用 LLM 语义扫描(RiskGuardSchema)检测变体攻击。BLOCKED_PROMPT_INJECTION 前缀标记。routeFromRiskGuard(...) 将流程导向 plan_synthesizer 的安全拒答路径。验证证据
tests/unit/agents/risk-guard.agent.test.tstests/redteam/guardrails.redteam.test.ts(红队对抗测试)残余风险
攻击面
现有控制
detectUnsafeOutput(...)(src/security/guardrails.ts)plan_synthesizer 在生成 summary 后再次扫描并追加 safetyFlagsrisk_guard 的 LLM 语义层也会扫描最终输出验证证据
tests/unit/security/guardrails.test.tstests/redteam/guardrails.redteam.test.ts残余风险
攻击面
现有控制
withStructuredOutput(...) + Zod schema 约束所有 LLM agent 输出结构。验证证据
tests/integration/*.test.ts(FakeStructuredChatModel 驱动)tests/evals/travel-planner.eval.ts(完整性评估)残余风险
攻击面
现有控制(CI/CD 已启用)
npm audit --omit=dev(CI / LLMSecOps)scripts/ai-dependency-scan.ts,LLMSecOps)验证证据
.github/workflows/ci.yml.github/workflows/cd.yml.github/workflows/llmsecops.yml残余风险
攻击面
OPENAI_API_KEY、DUFFEL_API_TOKEN、POSTGRES_URL、LANGSMITH_API_KEY现有控制
require* 访问器。src/tools/common/duffel.ts)。ToolError,避免将敏感上下文直接暴露给调用方。model-config-audit 工作流扫描源码中的硬编码 API key 模式。残余风险
攻击面
现有控制
requestJson(...) 统一超时、重试、AbortController。ToolError 分类。ToolError 返回 502,避免吞错。验证证据
tests/unit/tools/http.test.tssrc/tools/common/http.ts残余风险
风险说明
PlannerState 包含完整 userRequest,默认 checkpointer 为 Postgres 持久化。userId)。现有控制
thread_id)。建议控制
userId 映射/脱敏策略。风险说明
detectPromptInjection 的 regex 规则。现有控制
normalizeForScan 已归一化零宽字符和常见 homoglyph。risk_guard 的 LLM 语义层是主要防御;静态规则作为快速前置过滤。tests/redteam/)持续评估绕过率。验证证据
tests/redteam/guardrails.redteam.test.ts残余风险
safetyFlags 命中高风险标记threadId 追踪相关请求并停止重试GET /plan/:threadId 快照 + decisionLog| 优先级 | 建议 |
|---|---|
| 高 | 为 prompt injection 增加专用轻量级分类器模型(规则 + LLM + 分类器三层) |
| 高 | 为 thread state 增加数据最小化与过期清理策略 |
| 中 | 对 /plan 增加认证层(按 user/thread) |
| 中 | 建立更大规模的安全回归用例集(注入语料、越权语料、越狱语料) |
| 中 | 将 red-team 检测率纳入 CI 质量看板 |
| 低 | 对风险命中事件输出统一审计事件流(便于 SIEM 对接) |