Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-36834 — Lectura de matriz fuera de los límites en LibRaw | Kitploit
Herramientas/GitHubGitHub/kpatsakis/cve-2026-36834
Forensia de MemoriaAnálisis de VulnerabilidadesFuzzingAnálisis de BinariosPapers e InvestigaciónAprendizaje y Educación
GitHubkpatsakis/cve-2026-36834

CVE-2026-36834

Lectura de matriz fuera de los límites en LibRaw

Ver Repositorio
hace 1 mesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Resumen

Existe una lectura de matriz fuera de los límites en src/decoders/pana8.cpp. La función GetDBit() puede devolver el valor 17 cuando no se encuentra ninguna coincidencia en la tabla de Huffman, pero huff_coeff[] está declarado con solo 17 elementos (índices válidos 0-16). Esto provoca que se acceda a huff_coeff[17], desencadenando un comportamiento indefinido confirmado por UBSan y AddressSanitizer.

Impacto

Las aplicaciones que procesan archivos RW2 proporcionados por el usuario, como editores de imágenes o herramientas de gestión de fotos que usan LibRaw, podrían fallar o potencialmente filtrar memoria del proceso al abrir un archivo malicioso.

CWE: CWE-125 (Lectura fuera de límites), CWE-129 (Validación incorrecta del índice de matriz) CVSS v3.1: AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:H (~6.5 Medium)

Git commit: 777f20ae21c611a78021bd051fbbf1e71eae78f2

Código afectado

Archivo: src/decoders/pana8.cpp Función: pana8_param_t::DecodeC8()

La causa raíz está en GetDBit():

root@kitploit:~
  uint32_t pana8_param_t::GetDBit(uint64_t a2)
  {
      for (int i = 0; i < 16; i++)
          if ((a2 & hufftable2[i]) == hufftable1[i])
              return i;
      return uint32_t((hufftable2[16] & a2) == hufftable1[16]) ^ 0x11u;
      // When comparison is false: returns 0 ^ 17 = 17
  }

El valor de retorno se usa directamente como índice de matriz sin verificación de límites:

root@kitploit:~
  huff_index = int(GetDBit(pixbits));          // can be 17
  int32_t v37 = (huff_coeff[huff_index] >> 24) // line 250: OOB
  uint32_t hc = huff_coeff[huff_index];        // line 251: OOB
  // ... and lines 254, 273

Cadena de llamadas confirmada (salida de UBSan) LibRaw::unpack() -> panasonicC8_load_raw() pana8.cpp:125 -> pana8_decode_loop() pana8.cpp:132 -> pana8_decode_strip() pana8.cpp:155 -> DecodeC8() pana8.cpp:250 <-- OOB triggered

Errores de UBSan desencadenados: pana8.cpp:250 índice 17 fuera de límites para el tipo 'unsigned int [17]' pana8.cpp:251 índice 17 fuera de límites para el tipo 'unsigned int [17]' pana8.cpp:254 índice 17 fuera de límites para el tipo 'unsigned int [17]' pana8.cpp:254 shift exponent -17 is negative pana8.cpp:273 índice 17 fuera de límites para el tipo 'unsigned int [17]' pana8.cpp:303 left shift of negative value -1

Reproducción

Compilar LibRaw con sanitizadores:

root@kitploit:~
  ./configure CXXFLAGS="-fsanitize=address,undefined -g -O1" \
            LDFLAGS="-fsanitize=address,undefined"
  make -j$(nproc)

Ejecutar el script mutador contra cualquier archivo RW2 de Panasonic:

root@kitploit:~
  python3 mutate_rw2.py input.rw2 mutated_pana8.rw2
  ASAN_OPTIONS=halt_on_error=0:print_stats=1 ./bin/dcraw_emu -v mutated_pana8.rw2

Parche

https://github.com/LibRaw/LibRaw/commit/02da167e0f819a37dbb7d714e87c5b40df6c5917

Descargar herramienta