CVE-2026-77652 in Dia信息

摘要

由 VulDB • 2026-08-26

Dia 图表编辑器中的 WPG 文件格式导入器存在堆缓冲区溢出漏洞。

在 `plug-ins/wpg/wpg-import.c` 中,WPG 导入渲染器使用以下代码分配固定大小的调色板:

ren->pPal = g_new0(WPGColorRGB, 256);

在处理 `WPG_COLORMAP` 记录时,解析器从文件中读取起始索引(i16)和颜色数量(iNum16),并使用以下代码读取调色板数据:

bRet &= (iNum16 == (int)fread(&ren->pPal[i16], sizeof(WPGColorRGB), iNum16, f));

唯一的边界检查是 `if (i16 >= 0 && i16 <= iSize)`,其中 iSize 是 WPG 记录的大小,而非调色板的容量。没有验证 i16 是否小于 256,也没有验证 i16 + iNum16 是否不超过 256。

恶意的 WPG 文件可以指定 i16=256 和 iNum16=264。这会导致 fread() 从 &pPal[256] 开始写入 792 字节,而调色板缓冲区仅有 768 字节(256 个条目 × 3 字节)。这将溢出到相邻的堆元数据中,可能导致 Dia 崩溃(SIGABRT / malloc 损坏错误),或者根据堆布局和利用原语的不同,潜在地导致任意代码执行。

利用此漏洞需要说服用户通过 Dia 的文件对话框、命令行或文件关联打开一个精心构造的 WPG 文件。向受害者交付该文件不需要任何特殊权限。

受影响组件:WPG 解析器(plug-ins/wpg/wpg-import.c)。 受影响版本:包含此代码路径的所有 Dia 版本(报告者测试了 Dia 0.98+git20260221-1;截至 2026-08-21,上游 master 分支中存在该问题)。

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

来源

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!