CVE-2026-40611go-acme/lego是用Go语言编写的Let's Encrypt客户端和ACME库。在4.34.0版本之前,其webroot HTTP-01挑战提供程序存在安全漏洞。由于缺乏对用户输入的充分校验,恶意的ACME服务器可以提供包含“../”序列的精心制作的挑战令牌。这会导致lego在处理验证请求时,将攻击者控制的内容写入到文件系统中任意可写的路径,甚至删除文件,从而破坏系统完整性。
该漏洞的核心在于webroot HTTP-01挑战处理逻辑中未对挑战令牌进行路径规范化处理。正常情况下,lego会将令牌写入预定义的webroot目录下。然而,当攻击者控制ACME服务器并返回包含路径遍历字符(如`../`)的令牌时,lego客户端直接拼接路径并执行写入操作。由于程序未检查最终路径是否仍在webroot目录内,攻击者可以利用此漏洞向服务器上的任意位置(取决于lego进程的权限)写入文件。这可能被利用覆盖系统配置文件、写入后门或窃取敏感数据。