Skip to content

附录 A:实验手册 ​

A.1 实验环境原则 ​

所有攻击实验只在本地靶场、个人云沙箱或明确授权环境进行。使用虚构身份和合成数据;不得把公司 token、客户数据、生产域名或真实密钥放入代码仓库和公共 AI 服务。

建议环境:Docker/Compose、任一主语言、PostgreSQL、Redis、OpenTelemetry/Prometheus;进阶加入本地 Kubernetes、Keycloak 或同类开源 IdP、OPA/Cedar/OpenFGA 类策略组件、SPIRE。

每个实验按模板记录:目标、架构、威胁、步骤、观察、失败、修复、指标、结论。不要只留最终代码。

A.2 L1:安全 Session 登录 ​

目标 ​

理解密码、Cookie、CSRF、会话固定、限速和审计。

最小功能 ​

  • 注册;Argon2id 密码哈希;登录/退出;服务端 session;
  • Secure/HttpOnly/SameSite Cookie;CSRF token;
  • 账号与来源组合限速;统一登录错误;
  • 会话列表与单个/全部撤销;结构化审计。

故障/攻击 ​

篡改 Cookie、预设 session ID、跨站表单、100 次错误密码、数据库超时、Redis 丢失、时钟漂移。

验收 ​

自动化测试覆盖所有负向路径;日志无密码/session secret;退出后旧会话无法使用;仪表盘显示成功率、失败原因和 P99。

A.3 L2:OIDC Code + PKCE ​

目标 ​

理解浏览器重定向、code、state、nonce、PKCE、JWKS 和 token claims。

任务 ​

客户端生成随机 state/nonce/verifier;使用 Discovery;精确回调;服务端兑换 code;验证 ID Token;API 验 access token audience/scope。

负向矩阵 ​

用例预期
state 丢失/不匹配回调失败,不建立会话
nonce 不匹配拒绝 ID Token
code 重放AS 拒绝
verifier 错误token endpoint 拒绝
audience 为其他 API资源服务器 401/拒绝
issuer 相似域名拒绝
JWKS 轮换overlap 内不中断
redirect 子域/路径变化未注册则拒绝

A.4 L3:Passkey 与恢复 ​

功能:注册多个 Passkey、命名、最后使用、撤销;恢复码哈希保存;新认证器绑定要求近期强认证;旧渠道通知。

场景:新设备、同步 Passkey、设备丢失、唯一认证器被撤销、恢复码重用、客服请求、攻击者已控制邮箱。

指标:注册转化、认证成功、fallback、恢复成功/滥用、工单和旧认证器覆盖。

A.5 L4:策略授权服务 ​

实现 /check、/batch-check 和 /explain;支持角色、资源关系和设备合规;策略 Git 版本;单测和影子决策。

安全不变量:tenant A 永不能访问 tenant B;disabled subject 永不允许;高敏写操作必须近期 MFA;break-glass 最多 30 分钟并告警。

性能:10 万关系、1000 RPS、冷热缓存、策略发布、撤权事件、PIP 不可用。记录 P50/P95/P99 和最坏撤权时间。

A.6 L5:SCIM 与 JML ​

模拟 HR/IGA/目标 SaaS。处理创建、属性变更、组成员、禁用、重雇。事件可能重复、乱序、延迟或下游 500。

实现事务 outbox、幂等、指数退避、死信、人工重放、每日对账。证明“HR 离职”到全部目标禁用在 SLA 内,失败有明确工单。

A.7 L6:PAM/JIT ​

用户申请数据库只读权限 20 分钟;manager + resource owner 审批;发短期凭证或代理会话;到期撤销;命令审计。

测试:审批者也是申请人、过期后复用、目标不可达、会话超时、break-glass、审计服务失败。高风险时选择 fail-closed 并设计应急路径。

A.8 L7:SPIFFE 工作负载身份 ​

部署 SPIRE Server/Agent;注册 frontend/orders;获取 X.509-SVID;mTLS;按 SPIFFE ID 授权。观察自动轮换。

测试:复制证书到其他进程、错误 trust domain、SVID 过期、Agent 重启、删除注册、bundle 轮换。对比 JWT-SVID 重放风险。

A.9 L8:身份风险引擎 ​

生成合成事件:正常用户、旅行、撞库、喷洒、MFA fatigue、服务账号异常区域。先规则,再 Logistic/GBDT。

按时间切分;比较 precision、recall、PR-AUC、校准和每千用户误报;影子模式输出 reason code;只让中风险触发 step-up。

A.10 L9:ACL-aware RAG ​

创建两个租户知识库,文档有 owner/ACL/敏感级别。检索在生成前强制 ACL;答案必须引用;无证据时拒答。

红队:跨租户问题、文档内隐藏“忽略权限”、索引删除延迟、权限变更、冲突文档、诱导输出系统提示。断言未授权文档 ID 永不进入模型上下文。

A.11 L10:Agent 委托网关 ​

组件:用户登录、Agent 实例、委托服务、工具网关、两个 MCP Server、下游 API、审批 UI、审计。

不变量:

  • 下游 token 的 audience 只能是目标 API;
  • 委托权限不超过用户、Agent 和任务交集;
  • MCP token 不透传;
  • 高风险动作与审批参数绑定;
  • 取消/到期后任何调用拒绝;
  • 沙箱无长期凭证;
  • 每个动作可追溯到用户、Agent 实例、任务和策略版本。

红队:恶意网页、工具描述投毒、递归委托、跨租户记忆、重复支付、审批后改参数、超预算、kill switch。

A.12 实验报告评分 ​

维度权重满分表现
正确性20%正向/负向路径可复现
安全20%威胁与不变量有自动测试
可靠性15%超时、重试、幂等、降级明确
可观测性15%指标、日志、trace、告警可用
业务10%有用户/风险/成本指标
文档10%他人可部署、排障、回滚
反思10%说明失败与下一步