受影响系统
本次漏洞影响的是 Perforce Software Perforce Server 2007.3/143793 及所有更早版本。
描述
Perforce 是一款客户端/服务器架构的软件配置管理(SCM)工具。简单来说,用户通过客户端软件访问服务器来管理代码版本。这次曝出的漏洞属于典型的空指针引用——如果客户端在请求中漏掉了某些参数,服务器端从报文中提取这些值的函数,对返回的指针缺少安全检查,就会直接触发空指针,进而导致服务崩溃。受影响的具体指令包括:dm-FaultFile、dm-LazyCheck、dm-ResolvedFile、dm-OpenFile、crypto 等。
更严重的是另一个问题:当客户端向服务器发送 server-DiffFile 和 server-ReleaseFile 命令时,服务器会把客户端提供的32位数值直接用作数组初始化的元素个数。如果 server-DiffFile 命令被精心构造(畸形),就能强制服务器陷入死循环,疯狂消耗内存,最终导致系统资源耗尽、服务终止。说白了,攻击者不需要太高权限,就能让整个Perforce服务瘫痪。
该漏洞由 Luigi Auriemma 发现并报告(aluigi@pivx.com),漏洞公告编号为 BUGTRAQ ID 28108,相关讨论可见 https://marc.info/?l=bugtraq&m=120475134221716&w=2。
测试方法
警告:以下操作仅供安全研究与教学使用,请勿用于非法用途。使用者需自行承担风险。
Luigi Auriemma 已提供了概念验证代码,链接如下:https://aluigi.org/poc/perforces.zip。感兴趣的测试者可以在受控环境下载并验证漏洞表现。
建议
截至目前,Perforce 官方尚未发布针对该漏洞的补丁或升级程序。最稳妥的做法是持续关注厂商主页,获取第一时间的安全更新:https://www.perforce.com/。在官方修复放出之前,建议对Perforce服务器的网络访问做严格限制,仅允许可信客户端连接,降低被远程利用的风险。
