
Exploit de prueba de concepto para CVE-2025-53367, una vulnerabilidad en la biblioteca DjVuLibre. Demuestra la explotación de un fallo de corrupción de memoria en el procesamiento de documentos DjVu.
DjVu (pronunciado "déjà vu") es un conjunto de tecnologías de compresión, un formato de archivo, y una plataforma de software para la entrega a través de la Web de documentos digitales, documentos escaneados e imágenes de alta resolución.
Los documentos DjVu se descargan y visualizan extremadamente rápido, y se ven exactamente igual en todas las plataformas. DjVu puede considerarse una alternativa superior a PDF y Postscript para documentos digitales, a TIFF (y PDF) para documentos escaneados, a JPEG para fotografías e imágenes, y a GIF para imágenes paletizadas grandes. DjVu es el único formato web que resulta práctico para distribuir documentos escaneados de alta resolución en color. Ningún otro formato se le acerca.
Los tamaños típicos de archivos DjVu son los siguientes:
Documentos escaneados bitonales: 5 a 30 KB por página a 300 ppp, 3 a 10 veces más pequeño que PDF o TIFF.
Documentos escaneados en color: 30 a 100 KB por página a 300 ppp, 5 a 10 veces más pequeño que JPEG.
Fotos: 2 veces más pequeño que JPEG, aproximadamente igual que JPEG-2000.
Imágenes paletizadas: 2 veces más pequeño que GIF, hasta 10 veces si hay texto.
DjVu es utilizado por cientos de sitios web comerciales, gubernamentales y no comerciales alrededor del mundo para distribuir documentos escaneados, documentos digitales y fotos de alta resolución.
Demostraciones e información general sobre DjVu se pueden encontrar en http://www.djvuzone.org, o en http://www.lizardtech.com.
DjVu fue desarrollado originalmente en AT&T Labs-Research. AT&T vendió DjVu a LizardTech Inc. en marzo de 2000.
En un esfuerzo por promover DjVu como un estándar web, la dirección de LizardTech fue lo suficientemente iluminada como para publicar la implementación de referencia de DjVu bajo la GNU GPL en octubre de 2000. DjVuLibre (pronunciado como el francés "déjà vu libre"), es una versión mejorada de ese código mantenida por los inventores originales de DjVu. Es compatible con el software DjVu de LizardTech v3.5.
Este paquete incluye:
El visor de archivos DjVu completo y el plugin de navegador DjView4 están disponibles como un paquete separado.
DjVuLibre-3.5 depende de varios componentes disponibles en la web. La mayoría de las distribuciones modernas de Linux ya vienen con estos. También puede descargarlos y compilarlos si lo desea. Asegúrese de leer las notas específicas del sistema al final de este archivo.
COMPILADOR -- El desarrollo se realiza con el compilador GCC g++, que por lo tanto se recomienda para todas las plataformas. El compilador CLANG se ha probado y parece funcionar, pero su salida no se ha probado seriamente.
LIBJPEG/LIBTIFF -- Un pequeño número de archivos DjVu usan internamente codificación JPEG en lugar de codificación wavelet IW44. Estos archivos se procesan usando la versión 6a o 6b de la biblioteca IJG libjpeg http://www.ijg.org. Algunos programas de utilidad pueden leer archivos TIFF. Estos programas dependen de la biblioteca LIBTIFF http://libtiff.org. También puede compilar DjVuLibre sin soporte para JPEG ni TIFF. Puede que nunca note la diferencia.
Lo más probable es que todo funcione simplemente ejecutando los comandos "./configure", "make" y "make install".
Tenga en cuenta que no habrá un archivo configure si obtiene el código fuente de djvulibre usando git clone. En su lugar, hay un script 'autogen.sh' que usa automake para generar y llamar al script configure real. Dado que todos los argumentos de autogen.sh se pasarán a configure, puede tratar autogen.sh simplemente como un reemplazo de configure.
Varias opciones y variables de entorno afectan la ejecución del script de configuración. Puede obtener una lista completa escribiendo "configure --help". Consulte también el archivo INSTALL para más detalles. Estas son las más importantes.
Opción "--prefix=PREFIXDIR" Esta opción especifica dónde se instalará el software DjVuLibre. El prefijo predeterminado es /usr/local.
Opción "--enable-desktopfiles[=(yes|no)]" Instala archivos de iconos y tipos MIME en los directorios xdg habituales. El valor predeterminado es "yes".
Opción "--with-jpeg=JPEGDIR" Esta opción especifica un directorio donde se ha compilado la biblioteca JPEG. Este directorio contiene tanto los archivos de inclusión como la biblioteca. Sin esta opción, el script de configuración buscará la biblioteca JPEG en lugares estándar. Cuando todo lo demás falle, puede simplemente definir las variables de entorno JPEG_CFLAGS y JPEG_LIBS.
Opción "--with-tiff=TIFFDIR" Esta opción especifica un directorio donde se ha compilado la biblioteca LIBTIFF. Este directorio contiene tanto los archivos de inclusión como la biblioteca. Sin esta opción, el script de configuración buscará la biblioteca LIBTIFF en lugares estándar. Cuando todo lo demás falle, puede simplemente definir las variables de entorno TIFF_CFLAGS y TIFF_LIBS.
Siempre revise la salida del script de configuración en busca de advertencias y errores. En particular, el script de configuración podría deshabilitar la compilación de djview si no puede localizar las bibliotecas y utilidades requeridas. Los mensajes de advertencia son la única forma de saberlo.
Luego puede realizar la compilación escribiendo
$ make
La compilación puede durar unos minutos. Nuevamente, revise la salida en busca de advertencias y errores. Finalmente, un breve mensaje le informa que la compilación fue exitosa. Luego puede proceder con la instalación.
Escribiendo:
$ make install
o si es necesario:
$ sudo make install
debería:
Donde ${prefix} se refiere al directorio especificado por la opción prefix del script de configuración, cuyo valor predeterminado es "/usr/local", y las rutas anteriores se pueden ajustar usando argumentos apropiados para ./configure y make.
Recomendamos que primero instale homebrew y use el comando "brew install" para obtener los siguientes paquetes: $ brew install autoconf automake libtool pkg-config $ brew install jpeg libtiff
Tenga en cuenta que homebrew ya viene con un paquete djvulibre. Las siguientes instrucciones explican cómo compilar djvulibre de manera independiente. Puede que desee hacerlo si desea la última versión de djvulibre. De lo contrario, es probable que simplemente deba instalar el paquete homebrew de djvulibre. $ brew install djvulibre
Pero la mayoría de las personas debería encontrar suficiente simplemente instalar el paquete homebrew.
Luego puede ejecutar configure $ ./configure --disable-desktopfiles
Luego puede compilar con $ make