CVE-2026-40180Quarkus OpenAPI Generator是Quarkus用于生成Rest Clients和服务器存根的扩展。在2.16.0和2.15.0-lts版本之前,该组件存在路径遍历漏洞。具体而言,ApicurioCodegenWrapper.java文件中的unzip()方法在解压ZIP条目时,未对解析后的文件路径进行有效验证,以确保其位于预期的输出目录内。攻击者可利用此漏洞,通过特制的恶意ZIP文件(包含如“../../”的路径遍历序列),将文件写入目标目录之外的任意位置,从而破坏系统完整性。
该漏洞的根源在于Quarkus OpenAPI Generator的ApicurioCodegenWrapper.java类中unzip()方法的不安全实现。在处理ZIP文件时,代码直接使用`entry.getName()`作为文件名,并通过`new File(toOutputDir, entry.getName())`构造目标文件对象,随后立即写入内容。关键问题在于缺乏对`entry.getName()`的校验机制,未检查其中是否包含路径遍历字符(如“../”或绝对路径)。当攻击者诱导受害者解压一个精心构造的恶意ZIP文件时,即使文件名包含“../../etc/passwd”或“../../webapp/shell.jsp”等跳转序列,程序也会盲目跟随路径进行写入。由于代码未对最终解析的路径是否仍在`toOutputDir`范围内进行规范化检查,导致文件被写入到父级目录甚至系统根目录。这种“Zip Slip”攻击方式允许攻击者覆盖关键配置文件、植入WebShell或恶意代码,进而可能获取服务器控制权。