关键漏洞信息总结 漏洞名称: miniserve - TOCTOU + Symlink Race in Upload Handling → Arbitrary File Overwrite (Potential Command Execution) 项目及仓库: 项目: miniserve 仓库:  摘要: 当 miniserve 启用文件上传功能(例如: )时,上传持久化 routine 可以通过 TOCTOU 时间窗口竞争条件结合符号链接跟随被攻击者利用。 攻击者能够触发通过 HTTP 的上传并可以创建/替换上传目录内的文件系统条目(例如:符号链接)。 可能会在目标检查和最终写入步骤之间赢得时间窗口,导致 miniserve 写入攻击者控制的内容至预期文档根目录之外的攻击者指定路径(受 miniserve 进程权限限制)。 主要影响是任意文件覆盖,在某些配置下可能通过覆盖随后被解释/执行的文件(如 shell 初始文件、cron 脚本、服务配置等)串联成命令执行,具体取决于权限和可写目标。 测试版本/环境: 测试版本: miniserve 0.32.0 Git commit: 757207b76966ee3db3091a3b493714d188e55bd1 Git tag/describe: v0.32.0 Toolchain: rustc 1.89.0 / cargo 1.89.0 OS / Kernel: Linux kali 6.16.8+kali-amd64 弱点分类: CWE-367 — Time-of-check Time-of-use (TOCTOU) Race Condition CWE-59 — Improper Link Resolution Before File Access ("Link Following") 先决条件/威胁模型(重要): miniserve 必须启动时开启了上传功能,攻击者需拥有针对上传端口的 HTTP 访问权限,并且可以在上传目标目录内部创建/替换文件系统条目(或触发符号链接替换焦粒)。 技术细节(高级): miniserve 接受上传文件并写入临时位置,其后同步复制至服务目录下的最终目的位置。 当临时文件和目的地目录位于不同文件系统时,rename() 原子操作可能无法执行,使用复制方法。 在目的地检查与最终复制/写入之间,攻击者可以通过触发一条指向服务目录外的符号链接替换目标文件名的时间窗口攻击,导致最终复制/写操作沿符号链接路径写入至非预期位置。 操作缓解措施: 以具备最小可写权限运行 miniserve。 确保上传目录对不信任的本地用户不可写(避免共享可写目录/卷)。 将上传临时目录与最终目的地目录置于同一文件系统减少跨文件系统复制回退的机会。 建议修复(开发者指引): 阻止最终目的地跟随符号链接。 避免对可变更路径执行检查后使用模式。 优先采用原子型操作。 发现和报告者: Ali Firas(thesmartshadow / The Smart Shadow)