CVE-2025-71176CVE-2025-71176是影响pytest 9.0.2及更早版本的本地安全漏洞。该漏洞存在于pytest在UNIX系统上创建临时目录的机制中。pytest使用可预测的目录命名模式/tmp/pytest-of-{user}来存储测试会话的临时文件,这种做法存在严重的安全隐患。攻击者可以通过创建符号链接或预先占领目标目录来实现目录劫持,从而可能导致本地用户造成拒绝服务(DoS)攻击,或在特定条件下获得提升的权限。由于该漏洞属于本地攻击向量(AV:L),需要攻击者具有本地访问权限,因此主要威胁对象为多用户系统和共享服务器环境。CVSS 3.1评分6.8(中等严重程度)反映了该漏洞在机密性、完整性和可用性方面均存在较低影响。
pytest在UNIX平台上运行时,会在/tmp目录下创建格式为/tmp/pytest-of-{user}的临时目录用于存储测试过程中的临时数据、缓存文件和日志信息。这种命名模式具有高度可预测性,因为用户名通常是已知的或可枚举的。攻击者可以采取以下攻击方式:首先,攻击者(本地普通用户)可以创建一个名为/tmp/pytest-of-{user}的符号链接,指向攻击者控制的目录或系统敏感位置。当目标用户(具有更高权限)运行pytest测试时,pytest会跟随这个符号链接并在攻击者指定的位置创建文件和目录。如果攻击者预先在该位置设置了特定的权限或文件,可能导致权限提升。此外,攻击者还可以通过预先创建同名目录并设置特定权限,在目标用户运行pytest时造成写入失败或目录遍历,从而实现拒绝服务攻击。该漏洞的利用条件包括:攻击者需要具有目标系统的本地访问权限,并且能够预测或枚举目标用户名。修复方案应包括使用更安全的临时目录创建机制,如使用mkdtemp()函数创建随机命名的目录,或使用系统提供的安全临时目录API(如Python的tempfile模块)。