关于 competition-race-condition-state-drift
用于分析 CTF 挑战中竞争条件与状态漂移的安全技能,须在 `$ctf-sandbox-orchestrator` 建立沙箱假设和证据优先级后使用。它侧重可复现的时序窗口、状态边界和最小竞态序列。
主要功能
- 01梳理可变状态与事务边界
- 02复现受控并发请求
- 03对比基线与竞态运行
- 04追踪时序和状态变化
- 05提炼可重放的最小竞态序列
适用场景
- 01测试过期读取或锁缺口
- 02调查重复请求与幂等性
- 03追踪延迟提交或重试副作用
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ zhaoxuya520/ reverse-skill --skill competition-race-condition-state-drift安装后在 Claude Code 中输入/competition-race-condition-state-drift确认已加载。
附带文件agents/openai.yamlreferences/race-condition-state-drift.md
详细介绍
竞争条件状态漂移
仅当 $ctf-sandbox-orchestrator 已处于活动状态,并已建立沙箱假设、节点归属和证据优先级之后,才将此技能作为下游专项技能使用。如果尚未完成这些,请先返回 $ctf-sandbox-orchestrator。
当决定性行为取决于请求时序、异步顺序、锁间隙或过期状态时,使用此技能。
除非用户明确要求英文,否则用简体中文回复。
快速开始
- 首先识别可变状态:行、缓存键、队列负载、会话字段、计数器或文件。
- 用最小的并发序列和固定的时序假设进行复现。
- 捕获一次基线运行和一次竞争运行,仅更改一个变量。
- 分别追踪读取、检查、写入、入队和提交边界。
- 从干净重置开始证明最终状态漂移。
工作流
1. 映射可变边界
- 记录事务范围、锁行为、重试逻辑、幂等键、缓存失效和队列交接。
- 注意读取-检查-写入在哪些地方被拆分到不同请求、worker 或服务中。
- 确保每个边界都绑定到精确的时间戳或序列号。
2. 复现时序窗口
- 使用受控延迟、重复请求或重排 worker 执行来构建确定性的并发输入。
- 在相同负载下比较接受路径和拒绝路径。
- 记录顺序变化时哪个条件发生翻转。
3. 缩减为决定性竞争链
- 压缩为:请求 A 和 B 的顺序 -> 过期检查或锁间隙 -> 冲突写入 -> 产生的能力或产物。
- 说明根本原因是缺少锁、幂等性薄弱、过期缓存读取、异步提交延迟,还是重试副作用。
- 如果路径变为队列主导,则交给队列 worker 漂移技能处理。
阅读此参考
- 加载
references/race-condition-state-drift.md以获取竞争测试框架思路、证据块和一致性检查。
需要保留的内容
- 可变键、事务边界、锁行为和幂等标记
- 基线和竞争运行的时间戳或序列化追踪
- 一个可证明漂移的最小可重放并发序列
评论
支持 Markdown