CVE-2025-53367漏洞利用与DJVU技术解析

本文详细解析CVE-2025-53367漏洞利用,涵盖DJVU文件格式技术背景、DJVULIBRE开源库的构建与编译指南,包括Linux、Mac OS X和Windows平台的编译步骤及依赖项配置。

Exploit for CVE-2025-53367

2025-07-18 | CVSS 8.4

https://sploitus.com/exploit?id=C056173B-28D0-562F-94A6-BBC8EF27EE72

1- 什么是DJVU

================

DjVu(发音为“déjà vu”)是一组压缩技术、一种文件格式和一个软件平台,用于通过Web传递数字文档、扫描文档和高分辨率图像。

DjVu文档下载和显示速度极快,并且在所有平台上看起来完全相同。DjVu可以被视为数字文档的PDF和Postscript的优越替代品,扫描文档的TIFF(和PDF)的替代品,照片和图片的JPEG替代品,以及大型调色板化图像的GIF替代品。DjVu是唯一实用的在Web上分发高分辨率彩色扫描文档的格式。没有其他格式能与之媲美。

典型的DjVu文件大小如下:

  • 双色调扫描文档: 每页5至30KB,300dpi, 比PDF或TIFF小3至10倍。

  • 彩色扫描文档: 每页30至100KB,300dpi, 比JPEG小5至10倍。

  • 照片: 比JPEG小2倍, 与JPEG-2000大致相同。

  • 调色板化图像: 比GIF小2倍, 如果有文本,最多可小10倍。

DjVu被全球数百个商业、政府和非商业网站用于分发扫描文档、数字文档和高分辨率照片。

关于DjVu的演示和一般信息可以在http://www.djvuzone.org或http://www.lizardtech.com找到。

DjVu最初由AT&T Labs-Research开发。AT&T于2000年3月将DjVu出售给LizardTech Inc.。

2- 什么是DJVULIBRE?

=====================

为了促进DjVu成为Web标准,LizardTech的管理层足够开明,于2000年10月根据GNU GPL发布了DjVu的参考实现。DjVuLibre(发音像法语的“déjà vu libre”),是由DjVu的原始发明者维护的该代码的增强版本。它与LizardTech的DjVu软件v3.5兼容。

此包包括:

  • C++ DjVu参考库的最新版本
  • 一个完整的基于小波的图片压缩器
  • 一个简单的双色调(黑白)扫描页面压缩器
  • 一个调色板化图像压缩器(类似GIF)
  • 一套完整的实用程序,用于操作和组装DjVu图像和文档
  • 一组解码器,用于将DjVu转换为多种其他格式

完整的DjVu文件查看器和浏览器插件DjView4可作为单独包使用。

3- 构建DJVULIBRE

=====================

3.1- 先决条件


DjVuLibre-3.5依赖于可从Web获取的各种组件。 大多数最近的Linux发行版已经包含这些组件。 您也可以下载并编译它们。 请务必阅读本文档末尾的系统特定说明。

编译器 – 开发使用GCC g++编译器,因此推荐用于所有平台。已尝试CLANG编译器,似乎可以工作,但其输出尚未经过严格测试。

LIBJPEG/LIBTIFF – 少量DjVu文件内部使用JPEG编码而不是IW44小波编码。这些文件使用IJG libjpeg库版本6a或6b处理http://www.ijg.org。 一些实用程序能够读取TIFF文件。这些程序依赖LIBTIFF库http://libtiff.org。 您也可以编译不支持JPEG或TIFF的DjVuLibre。 您可能永远不会注意到差异。

3.2 - 配置


很可能只需运行命令“./configure”、“make”和“make install”即可正常工作。

请注意,如果您使用git clone获取djvulibre源代码,则不会有configure文件。相反,有一个脚本’autogen.sh’,它使用automake生成并调用实际的configure脚本。 由于所有autogen.sh参数都将传递给configure,您可以简单地将autogen.sh视为configure的替代品。

各种选项和环境变量影响配置脚本的执行。可以通过键入“configure –help”获得完整列表。另请参阅INSTALL文件以获取更多详细信息。 以下是最重要的选项。

  • 选项“–prefix=PREFIXDIR” 此选项指定DjVuLibre软件的安装位置。 默认前缀是/usr/local。

  • 选项“–enable-desktopfiles[=(yes|no)]” 在常规的xdg目录中安装图标和mime类型文件。 默认为“yes”。

  • 选项“–with-jpeg=JPEGDIR” 此选项指定已编译JPEG库的目录。此目录包含头文件和库。 没有此选项,配置脚本将在标准位置搜索JPEG库。 当所有其他方法都失败时,您可以简单地定义环境变量JPEG_CFLAGS和JPEG_LIBS。

  • 选项“–with-tiff=TIFFDIR” 此选项指定已编译LIBTIFF库的目录。此目录包含头文件和库。 没有此选项,配置脚本将在标准位置搜索LIBTIFF库。 当所有其他方法都失败时,您可以简单地定义环境变量TIFF_CFLAGS和TIFF_LIBS。

始终检查配置脚本的输出以获取警告和错误。 特别是,如果配置脚本无法找到所需的库和实用程序,它可能会禁用djview的编译。警告消息是唯一了解的方式。

3.3 - 编译


然后您可以通过键入以下命令执行编译

    $ make

编译可能需要几分钟。再次检查输出以获取警告和错误。最后,一条简短的消息让您知道编译成功。然后您可以继续进行安装。

3.4 - 安装


键入:

    $ make install

或如有必要:

    $ sudo make install

应该:

  • 将可执行程序安装到“${prefix}/bin/”。
  • 可能将共享库安装到“${prefix}/lib/”。
  • 将man页面安装到“${prefix}/man或${prefix}/share/man/”下。
  • 将各种辅助文件安装到“${prefix}/share/djvu/”下。
  • 安装“${prefix}/share/pkgconfig.pc”。
  • 可选安装图标和mime类型信息文件

其中${prefix}指的是配置脚本的prefix选项指定的目录,默认为“/usr/local”,并且上述路径可以使用适当的参数通过./configure和make进行微调。

4 - 为MAC OS X构建

=========================

我们建议您首先安装homebrew并使用命令“brew install”获取以下包: $ brew install autoconf automake libtool pkg-config $ brew install jpeg libtiff

请注意,homebrew已经附带了一个djvulibre包。 以下说明解释了如何以独立方式编译djvulibre。如果您想要最新版本的djvulibre,您可能想这样做。否则,很可能您应该只安装djvulibre homebrew包。 $ brew install djvulibre

但大多数人应该发现安装homebrew包就足够了。

然后您可以运行配置 $ ./configure –disable-desktopfiles

然后您可以使用以下命令编译 $ make

运行“make install”将在目录/usr/local中安装djvulibre。 这可能不是一个好主意,因为它们会与homebrew冲突。 您可以使用DESTDIR=…指定一个备用目录 $ make install DESTDIR=/usr/local/djvulibre-install

5 - 为WINDOWS构建

========================

5.1- 使用Microsoft Visual C++ 2019


请参阅win32目录。

检查win32/djvulibre/dirs.props以查看如何命名目录。 然后打开win32/djvulibre/djvulibre.sln并进行编译。

下一步将是按照djview包中的说明创建djview项目并将其添加到此解决方案中。最后,您可以使用脚本djvulibre-install.sh和djvulibre.nsi准备djvulibre+djview安装程序。

5.2- 使用Mingw


您必须首先安装mingw编译器和msys环境。 有关更多信息,请参阅www.mingw.org。 从msys shell中,运行通常的命令 $ configure $ make 然后从目录libdjvu/.libs收集djvulibre dll,并从目录tools/.libs收集可执行文件 请参阅文件INSTALL以获取有关脚本’configure’参数的信息。

5.3- 使用Cygwin


只需运行通常的命令 $ configure $ make $ make install 请参阅文件INSTALL以获取有关脚本’configure’参数的信息。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计