Saltar al contenido
CVE-2026-104025 ·
Alta · 15 de octubre de 2026

Salto de directorio en la previsualización de objetos de PeaZip permite ejecutar programas arbitrarios mediante un nombre de entrada manipulado

S0
Secur0 CNA
CVE-2026-104025

Descripción

Salto de directorio (CWE-22) en la función execute_obj del visor de objetos del archivo (peach.pas) en PeaZip 11.2.0 y versiones anteriores en Windows, que permite a un atacante que convence a una víctima de previsualizar una entrada de un archivo malicioso mediante la acción Preview with... -> Associated application (Shift+Ctrl+O) ejecutar un programa arbitrario ya presente en el sistema de la víctima, sin ningún diálogo de advertencia. La función valida únicamente outname (el propio directorio temporal de PeaZip) con checkfiledirname, mientras que la cadena que realmente se ejecuta es la concatenación outname+tempstring; tempstring se toma literalmente del nombre de la entrada del archivo (StringGridList.Cells[12,...], en peach.pas:51341) y nunca se valida. checkfiledirname (list_utils.pas:1739) rechaza caracteres de control y reservados en el nombre de fichero, pero no realiza ninguna comprobación de contención de ruta contra secuencias .., de modo que un nombre de entrada formado por varios segmentos .. seguidos de Windows/System32/calc.exe (los suficientes para subir hasta la raíz del disco) escapa del directorio de extracción y se pasa directamente a cp_open->ShellExecuteW. El backend de extracción (7-Zip) elimina el .. al extraer, pero el componente que abre el fichero no lo hace: las dos mitades de la misma operación discrepan. Además, el aviso de extensión peligrosa SECEXTCONST (Do you want to run this file?) solo está implementado en el gestor de doble clic (grid_obj_open) y no en esta ruta de previsualización, por lo que un ejecutable dentro de un archivo alcanza ShellExecuteW sin anunciarse; y cuando el aviso sí aparece, muestra el nombre visible de la entrada en lugar de la ruta resuelta que se ejecutará. La ejecución de código arbitrario se demostró con una prueba de concepto sobre los binarios oficiales de PeaZip, confirmada en dos formatos de archivo (.zip y .tar) para evidenciar que el defecto reside en el manejo de rutas propio de PeaZip y no en el analizador de un único formato.

Tipo de vulnerabilidad (CWE)

CWE-22: Limitación incorrecta de una ruta a un directorio restringido (Path Traversal)

CWE-693: Fallo del mecanismo de protección

Versiones afectadas

Todas las versiones de PeaZip para Windows anteriores a 11.3.0. El código vulnerable es rastreable al menos hasta la versión 8.7 (commit 64d4aa6, 25/06/2022, primera versión con código fuente en GitHub). Estado por defecto: afectado.

Puntuación (CVSS 4.0)

Alto (8.4)

CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Solución

Actualizar a PeaZip 11.3.0 o superior. La corrección sanea el nombre de la entrada usado para construir la ruta ejecutada (sanitizenamestr, que elimina las secuencias de directorio padre (..) y las equivalentes con barra invertida) y exige que la ruta resuelta permanezca dentro del directorio de extracción (sanitizepath, mediante contención con ExpandFileName) en execute_obj, y extiende la comprobación de extensión peligrosa a la ruta Open/Preview with associated application, no solo al evento de doble clic.

Parche

Commit 009fc35530e26729863969eddf4c18f1b48331cf

Créditos

  • cgomezpob - finder
  • Darío Rivas Quero - analyst
  • Secur0 CNA - coordinator

Fuente del descubrimiento: Externo

Registro oficial: CVE-2026-104025