Agent Skills
返回列表
🔒

攻击性 TOCTOU 竞态

IT 运维与安全 更新于 2026.08.30

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/offensive-toctou-sh-6ruc7a

技能介绍

问题:TOCTOU 漏洞的本质

TOCTOU(Time-of-Check / Time-of-Use)竞态条件是一类隐蔽且危险的安全性漏洞。当代码在某一时刻检查某个属性(如文件所有者、路径目标、令牌有效性或账户余额),然后在另一时刻基于该属性执行操作时,如果这两个时刻之间没有原子性保证,就可能出现竞态窗口。攻击者可以利用这个窗口替换底层对象,使检查结果与实际使用的对象不一致。

这种漏洞常见于:

  • 文件系统操作(如检查文件权限后打开文件)
  • 身份验证流程(如验证令牌后执行操作)
  • 资源分配(如检查资源可用性后分配)

传统的防御手段往往依赖原子操作或锁,但在实际系统中,由于性能考虑或设计复杂度,这些保证常常被忽略。攻击者可以利用这个弱点,通过精心设计的时间窗口替换对象,绕过安全检查。

技能如何工作

本技能专注于攻击性 TOCTOU 利用,而非防御。其核心工作流程包括:

  1. 识别检查与使用的分离:首先定位代码中的 check 步骤(如系统调用、函数验证)和 use 步骤(如特权操作)。这两个步骤往往操作不同的内核对象,如文件描述符、inode 或非原子快照。
  1. 构建对象替换原语:在检查与使用之间,通过符号链接、挂载操作、文件移动或并行请求等方式,替换底层对象。这一步需要精确控制时间窗口。
  1. 放大竞态窗口:利用 FUSE(灵活文件系统)、慢速文件系统、调度器技巧或单包 HTTP/2 请求等方式,延长检查与使用之间的时间间隔。窗口越大,利用的成功率越高。
  1. 循环验证与确认:运行紧密循环,确认使用后的状态与替换后的目标一致。这一步需要反复测试和调整参数,以找到最佳利用时机。

适用边界与注意事项

该技能适用于已经识别出 TOCTOU 漏洞的场景,不负责漏洞的发现或扫描。在实际应用中需要注意:

  • 环境限制:某些系统可能已经部署了原子操作或锁机制,此时竞态窗口可能无法利用。
  • 性能影响:放大窗口的操作(如使用慢速文件系统)可能影响系统整体性能,需要在测试环境中谨慎使用。
  • 法律与合规:TOCTOU 利用可能涉及未经授权的系统访问,务必在合法授权的环境中使用。

该技能是攻击性安全研究的一部分,适用于渗透测试、漏洞验证和安全审计场景。对于防御者而言,理解这些利用技术有助于设计更有效的防护策略。

使用场景

  • 渗透测试时发现代码先检查文件权限再打开,需构造符号链接替换目标并验证绕过效果
  • 审计身份验证流程时,验证令牌检查与后续操作之间是否存在可利用的竞态窗口
  • 安全研究中复现 FUSE 放大竞态窗口的方法,测试单包 HTTP/2 请求的利用可行性
  • 代码审查时确认检查步骤与使用步骤操作的是否为同一内核对象,评估 TOCTOU 风险

适合人员

  • 渗透测试工程师,需要在授权环境中复现并验证 TOCTOU 漏洞的可利用性
  • 安全审计员,审查代码时需要定位检查与使用分离的竞态窗口
  • 系统安全研究员,研究文件系统、身份验证流程中的 TOCTOU 利用技术
  • 漏洞开发者,需要构建对象替换原语并放大竞态窗口以提升利用成功率