漏洞概述 该漏洞涉及gogs仓库的文件上传处理程序。在修复前,该程序仅检查目标路径的叶子节点是否为符号链接(symlink),而未检查整个路径。攻击者可以通过在仓库中放置目录符号链接,并使用包含路径分隔符的multipart文件名,将文件写入到符号链接指向的目录中,从而绕过安全限制。 影响范围 受影响组件:gogs仓库的文件上传处理程序。 攻击方式:通过构造特定的multipart文件名,利用目录符号链接将文件写入到非预期的目录中。 潜在风险:可能导致文件写入到任意位置,进而可能执行恶意代码或破坏系统。 修复方案 1. 路径检查:在文件上传处理程序中,检查整个路径(而不仅仅是叶子节点)是否包含符号链接。 2. 拒绝写入:如果路径中包含符号链接,则拒绝写入操作,并返回错误信息。 3. 更新测试计划:确保测试计划中包括对符号链接路径的检查,以验证修复的有效性。 POC代码 总结 该漏洞通过修复文件上传处理程序中的路径检查逻辑,确保整个路径中不包含符号链接,从而防止文件被写入到非预期的目录中。修复后的版本将拒绝包含符号链接的路径,并返回相应的错误信息。