CVE-2025-53367:DjVuLibre 中可利用的越界写入漏洞

原文链接: https://mp.weixin.qq.com/s?__biz=MzAxMjYyMzkwOA==&mid=2247531649&idx=2&sn=e7df67683a084053ceec541815be401e

CVE-2025-53367:DjVuLibre 中可利用的越界写入漏洞

Ots安全 2025-07-05 06:06

CVE-2025-53367:DjVuLibre 中可利用的越界写入漏洞

DjVuLibre 3.5.29 版本今日发布。该版本修复了 CVE-2025-53367 (GHSL-2025-055) 漏洞,这是一个方法中的越界 (OOB) 写入漏洞MMRDecoder::scanruns。当用户尝试打开精心设计的文档时,该漏洞可导致在 Linux 桌面系统上执行代码。

DjVu 是一种文档文件格式,其用途与 PDF 类似。许多 Linux 发行版的默认文档查看器Evince和Papers均支持DjVu。事实上,即使 DjVu 文件的文件名以 .pdf 为扩展名,Evince/Papers 也会自动检测出它是 DjVu 文档,并运行 DjVuLibre 进行解码。

Antonio 在研究 Evince 文档阅读器时发现了这个漏洞。他通过模糊测试发现了这个漏洞。

正如本视频所演示的那样,Kev 已经针对该漏洞开发了一个概念验证漏洞。

该 POC 运行在最新的 Ubuntu 25.04 (x86_64) 系统上,并启用了所有标准安全保护措施。视频中具体内容如下:
1. Kev 点击了他的目录中的恶意 DjVu 文档~/Downloads。

  1. 该文件名为poc.pdf,但实际上是DjVu格式。

  2. 默认文档查看器(/usr/bin/papers)加载文档,检测其为 DjVu 格式,并使用 DjVuLibre 对其进行解码。

  3. 该文件利用 OOB 写入漏洞并触发对 的调用system(“google-chrome https://www.youtube.com/…”)。

虽然该 POC 能够绕过ASLR,但它的可靠性略有不足:它会连续运行 10 次,然后突然停止运行几分钟。不过,这只是第一个版本,我们相信可以创建一个可靠性更高的漏洞利用程序。

你可能会想:为什么是 Astley,而不是计算器?这是因为它/usr/bin/papers运行在AppArmor配置文件下。该配置文件禁止你启动任意进程,但 Google Chrome 除外。所以播放 YouTube 视频比弹出计算器更容易。但 AppArmor 配置文件并没有特别严格的限制。例如,它允许你将任意文件写入用户的主目录,除了像 这样的非常明显的文件~/.bashrc。所以它无法阻止坚定的攻击者获得代码执行权限。

漏洞详情

该MMRDecoder::scanruns方法受到 OOB 写入漏洞的影响,因为它没有检查xr指针是否保持在分配缓冲区的边界内。

在解码过程中,游程编码数据被写入两个缓冲区:lineruns和prevruns:

//libdjvu/MMRDecoder.h
classDJVUAPIMMRDecoder :public GPEnabled
{
...
public:

  unsignedshort *lineruns;
...
  unsignedshort *prevruns;
...
}

名为 的变量pr指向xr这些缓冲区中的当前位置。 

scanruns不检查这些指针是否仍在分配的缓冲区范围内。

//libdjvu/MMRDecoder.cpp
constunsignedshort *
MMRDecoder::scanruns(constunsignedshort **endptr)
{
...
// Swap run buffers
unsignedshort *pr = lineruns;
unsignedshort *xr = prevruns;
  prevruns = pr;
  lineruns = xr;
...
for(a0=0,rle=0,b1=*pr++;a0 < width;)
    {
     ...
            *xr = rle; xr++; rle = 0;
     ...
            *xr = rle; xr++; rle = 0;
 ...
          *xr = inc+rle-a0;
          xr++;
}

pr这可能导致超出分配内存的写入,从而导致堆损坏。出于同样的原因,也可能发生越界读取。

我们将在几周后在GitHub 安全实验室存储库中发布我们的概念验证漏洞的源代码。

致谢

我们要感谢 Léon Bottou 和 Bill Riemers 的快速响应,并在我们第一次联系他们后不到两天就发布了修复程序!

时间线
– 2025-07-01:通过电子邮件报告给作者:Léon Bottou、Bill Riemers、Yann LeCun。

  • 2025-07-01:收到 Bill Riemers 和 Léon Bottou 的回复。

  • 2025-07-02:Léon Bottou 添加修复提交:https://sourceforge.net/p/djvu/djvulibre-git/ci/33f645196593d70bd5e37f55b63886c31c82c3da/

  • 2025-07-03:DjVuLibre 版本 3.5.29 发布:https://sourceforge.net/p/djvu/www-git/ci/9748b43794440aff40bae066132aa5c22e7fd6a3/ 

感谢您抽出

CVE-2025-53367:DjVuLibre 中可利用的越界写入漏洞

.

CVE-2025-53367:DjVuLibre 中可利用的越界写入漏洞

.

CVE-2025-53367:DjVuLibre 中可利用的越界写入漏洞

来阅读本文

CVE-2025-53367:DjVuLibre 中可利用的越界写入漏洞

点它,分享点赞在看都在这里