CVE-2026-42241ParquetSharp是一个用于读写Apache Parquet文件的.NET库。在18.1.0至23.0.0.1之前的版本中,`DecimalConverter.ReadDecimal`方法存在安全漏洞。该方法使用`stackalloc`时,可能直接使用了攻击者提供的值作为大小参数。如果攻击者声明了一个具有不合理宽度的十进制列,将导致栈溢出。在服务环境中,这可能导致服务崩溃(拒绝服务)。该问题影响了在服务中使用ParquetSharp读取不受信任Parquet文件的应用程序。
该漏洞的根本原因在于ParquetSharp库在处理十进制类型数据时,未对输入数据的宽度进行严格校验。具体而言,`DecimalConverter.ReadDecimal`方法使用了`stackalloc`指令在栈上分配内存。`stackalloc`的大小参数源自Parquet文件元数据中的类型定义。由于Parquet文件可能来自不可信的来源,攻击者可以精心构造一个恶意的Parquet文件,其中包含极大宽度的Decimal类型列。当应用程序尝试读取该文件时,`stackalloc`会尝试在栈上分配过大的内存空间,超出栈的容量限制,从而触发栈溢出异常。在.NET环境中,这通常会导致进程崩溃,造成拒绝服务。虽然CVSS评分显示机密性和完整性无影响,但在高并发的网络服务场景下,这种崩溃会严重影响服务可用性。