Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
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.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-9335-keras-hdf5-externallink — CVE-2026-9335: KerasFileEditor y load_weights siguen los ExternalLinks de h5py, divulgando el contenido arbitrario de archivos HDF5 locales en keras ≤ 3.14.0. Aviso + PoCs verificados. | Kitploit
Herramientas/GitHubGitHub/paparojonathan/cve-2026-9335-keras-hdf5-externallink
Análisis de VulnerabilidadesExplotaciónPapers e InvestigaciónAprendizaje y EducaciónRecursos Curados
GitHubpaparojonathan/cve-2026-9335-keras-hdf5-externallink

CVE-2026-9335-keras-hdf5-externallink

CVE-2026-9335: KerasFileEditor y load_weights siguen los ExternalLinks de h5py, divulgando el contenido arbitrario de archivos HDF5 locales en keras ≤ 3.14.0. Aviso + PoCs verificados.

Ver Repositorio
22hace 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

CVE-2026-9335 — Divulgación de contenido de archivos locales HDF5 mediante ExternalLink en Keras

CVE CVSS CWE-22 Affected Fixed

Dos APIs públicas de Keras — keras.saving.KerasFileEditor y keras.saving.load_weights / model.load_weights — leen miembros de grupos HDF5 mediante indexación directa sin verificar el tipo de enlace. h5py desreferencia automáticamente ExternalLink / SoftLink al indexar, por lo que un archivo .weights.h5, .h5 o .keras proporcionado por un atacante que contenga solo un enlace hace que Keras lea el contenido de archivos HDF5 arbitrarios en el sistema de archivos local de la víctima.

Keras ya incluye la protección correcta (safe_get_h5_group / safe_get_h5_dataset en saving_lib.py) — estos dos puntos de entrada simplemente no la invocan.

De un vistazo

CVECVE-2026-9335
Afectadokeras-team/keras ≤ 3.14.0 (PyPI)
TipoPath Traversal / Exposición de información (CWE-22, CWE-200)
CVSS 3.1AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N → 6.5 (Medio)
ImpactoDivulgación de cualquier archivo HDF5 local que la víctima pueda leer
VectorLa víctima abre/carga un archivo malicioso .weights.h5 / .h5 / .keras
EstadoCorregido en keras 3.15.0 (PR #22899 / #22900); validado en huntr (2026-05-22, mantenedor hertschuh)
ReporteroJonathan Paparo (jonathan-paparo)

Contenido del repositorio

RutaQué es
advisory/CVE-2026-9335.mdInforme técnico completo: causa raíz, ambos puntos, salida del PoC, corrección
poc/poc_file_editor.pyPoC 1 — KerasFileEditor sigue un ExternalLink y filtra un h5 de la víctima
poc/poc_load_weights.pyPoC 2 — model.load_weights extrae los pesos de una víctima mediante ExternalLink
poc/requirements.txtEntorno de reproducción fijado
docs/timeline.mdCronología de divulgación coordinada

Causa raíz (30 segundos)

# keras/src/saving/saving_api.py  (load_weights, rama heredada .h5)
with h5py.File(filepath, "r") as f:
    if "layer_names" not in f.attrs and "model_weights" in f:
        f = f["model_weights"]      # <-- Un ExternalLink aquí es desreferenciado automáticamente por h5py

f["model_weights"] (y el recorrido análogo data[key] en file_editor.py) sigue de forma transparente un enlace hacia otro archivo. El patrón seguro que Keras usa en otros lugares verifica primero el tipo de enlace:

# keras/src/saving/saving_lib.py  (safe_get_h5_group)
group_type = parent.get(name, default=None, getclass=True, getlink=True)
if group_type in (h5py.ExternalLink, h5py.SoftLink):
    raise ValueError(f"Not allowed: H5 file with {group_type.__name__}")

Reproducción

python -m pip install -r poc/requirements.txt

# PoC 1 — KerasFileEditor filtra el contenido de un archivo h5 separado de la víctima
KERAS_BACKEND=jax python poc/poc_file_editor.py

# PoC 2 — model.load_weights carga los pesos de un archivo de la víctima mediante un ExternalLink
KERAS_BACKEND=jax python poc/poc_load_weights.py

Cada PoC crea sus propios archivos h5 desechables de "víctima" y "atacante" en el directorio temporal del sistema, demuestra la fuga, imprime *** VULNERABILITY CONFIRMED *** y se limpia a sí mismo. Verificado en keras==3.14.0, Python 3.12.6, backend JAX.

Corrección

Enruta ambos puntos a través del helper existente safe_get_h5_group, o añade una verificación previa data.get(key, default=None, getclass=True, getlink=True) que rechace (h5py.ExternalLink, h5py.SoftLink) antes de indexar. Consulta el advisory para ver los diffs exactos.

Uso responsable

Este material se publica con fines defensivos y educativos después de la divulgación coordinada y la asignación del CVE. Los PoC operan únicamente sobre archivos que ellos mismos crean en un directorio temporal. No utilices estas técnicas contra sistemas o datos que no estés autorizado a probar.

Crédito

Descubierto y reportado por Jonathan Paparo (huntr: jonathan-paparo). Validado por el mantenedor de keras-team hertschuh.

Descargar herramienta