CVE-2026-23986Copier是一个用于渲染项目模板的Python库和命令行工具。该漏洞存在于9.11.2之前的版本中,攻击者可利用符号链接和_preserve_symlinks配置绕过安全限制,向目标路径外的任意目录写入文件。虽然Copier声称从安全模板生成项目时不需要--UNSAFE或--trust标志,但恶意模板作者可以通过创建包含目录符号链接的模板,配合_preserve_symlinks: true配置,使渲染的路径指向符号链接指向的目录,从而实现任意文件写入攻击。这允许攻击者覆盖系统上的任意文件(如SSH密钥、配置文件等),造成严重的安全风险。
该漏洞的根本原因在于Copier库对符号链接处理的安全缺陷。当模板设置_preserve_symlinks: true时,系统会保留符号链接的指向关系。攻击者可以构造恶意模板,包含一个指向目标系统任意目录的符号链接(如templates/link -> /home/user/.ssh),然后在模板文件中创建渲染后会写入该符号链接目录的文件。当用户使用copier复制此类模板时,渲染的文件内容会通过符号链接写入到攻击者指定的目标位置。攻击者可以利用此漏洞覆盖用户的SSH authorized_keys文件实现远程访问,或修改配置文件获取持久化权限。由于CVSS向量显示需要用户交互(UI:R),攻击通常需要诱导用户从恶意模板生成项目。