CVE-2026-7111Perl语言的Text::CSV_XS模块在1.62版本之前存在释放后重用漏洞。当注册的回调函数扩展Perl参数堆栈时,会触发该漏洞。受影响的方法包括Parse、print、getline和getline_all。这些方法在调用回调时会缓存堆栈指针,如果回调导致堆栈重新分配,返回值将被写入已释放的缓冲区,导致类型混淆或内存损坏。攻击者可利用此漏洞导致应用程序逻辑错误或崩溃。
该漏洞源于Text::CSV_XS在处理回调函数时的内存管理缺陷。当Parse、print等方法调用注册的回调(如after_parse)时,它们会缓存当前的Perl参数堆栈指针。如果回调函数执行期间扩展了参数堆栈,且扩展幅度足以触发Perl内部堆栈的重新分配,原有的堆栈指针将变为悬空指针(指向已释放的内存)。当回调返回时,函数尝试通过这个过时的指针写入返回值,导致数据被写入错误的内存位置。随后,调用者本应读取解析后的数据,但由于指针失效,实际读取到了原始的$self对象(即Text::CSV_XS对象实例)。这种类型混淆使得调用端无法获得预期的CSV数据,进而引发逻辑错误、数据损坏或应用程序崩溃。只有配置了回调函数的使用场景才会受影响。