CVE-2026-31237Ludwig框架在0.10.4及之前的版本中存在严重的安全漏洞。该漏洞源于其predict()方法在处理用户提供的文件路径时,未能对文件内容进行充分的安全验证。当系统加载恶意的pickle(.pkl)文件时,由于使用了不安全的pandas.read_pickle()函数,攻击者可以利用该漏洞触发不安全的反序列化过程。这不仅破坏了系统的完整性,还可能导致远程攻击者在受害者服务器上执行任意恶意代码,造成严重的敏感数据泄露或系统完全被控。
该漏洞的核心机制源于Python标准库中的pickle模块在设计上缺乏安全性,允许在反序列化对象时执行任意代码。Ludwig框架的predict()方法旨在接受用户提供的数据集文件路径,并根据文件扩展名自动解析格式。然而,在0.10.4及之前版本中,当文件被识别为pickle(.pkl)格式时,框架直接调用了pandas.read_pickle()函数进行加载,完全绕过了任何形式的数据校验或沙箱限制。在利用过程中,攻击者可以构造一个恶意的pickle文件,该文件中封装了通过__reduce__方法定义的系统命令(如反弹Shell或写入Webshell)。当受害者调用predict()方法处理该恶意文件时,底层逻辑会触发反序列化操作,导致恶意代码在Ludwig进程的上下文中被执行。由于CVSS向量显示攻击无需认证(PR:N)且无需用户交互(UI:N),这使得攻击者能够通过网络(AV:N)轻易地发起攻击,从而完全控制受影响的主机。