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
multiparty-CVE-2026-8161 — Prueba de concepto de exploit para CVE-2026-8161, una vulnerabilidad de denegación de servicio en el analizador multipart de multiparty, que demuestra la contaminación de prototipos que provoca una excepción no capturada y un bloqueo del sistema. | Kitploit
Herramientas/GitHubGitHub/ser0n-ath/multiparty-cve-2026-8161
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebSeguridad Web
GitHubser0n-ath/multiparty-cve-2026-8161

multiparty-CVE-2026-8161

Prueba de concepto de exploit para CVE-2026-8161, una vulnerabilidad de denegación de servicio en el analizador multipart de multiparty, que demuestra la contaminación de prototipos que provoca una excepción no capturada y un bloqueo del sistema.

Ver Repositorio
hace 3 mesesAú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-8161

Prueba de concepto de CVE-2026-8161 (Multiparty)

Descripción

[email protected] y versiones anteriores son vulnerables a denegación de servicio mediante una excepción no capturada.

El analizador almacena los campos y archivos subidos en objetos JavaScript simples y no distingue de forma segura las claves propias del analizador de las propiedades heredadas del objeto. Un nombre de campo multipart manipulado puede hacer que el analizador lea valores inesperados de la cadena de prototipos y falle al procesar la subida.

Cualquier servicio que acepte subidas multipart a través de versiones vulnerables de multiparty puede verse afectado.

Cómo funciona

El problema ocurre porque fields y files son objetos JavaScript simples, pero se usan como mapas seguros de clave-valor para nombres controlados por el usuario.

root@kitploit:~
var fieldsArray = fields[name] || (fields[name] = [])
fieldsArray.push(value)

var filesArray = files[name] || (files[name] = [])
filesArray.push(file)

El problema es que fields[name] y utilizan una búsqueda normal de propiedades de JavaScript. Para objetos simples, esa búsqueda puede devolver propiedades heredadas de la cadena de prototipos en lugar de solo valores almacenados en el propio objeto.

files[name]

Cuando el nombre es __proto__, JavaScript puede resolverlo a través de la cadena de prototipos y devolver el objeto prototipo heredado en lugar de undefined. Dado que ese valor es verdadero, se omite la asignación de respaldo y el analizador nunca crea un array real para ese campo.

El parche soluciona esto confiando únicamente en claves que pertenecen directamente al objeto:

root@kitploit:~
var filesArray = Object.prototype.hasOwnProperty.call(files, name)
  ? files[name]
  : undefined

Luego, el analizador solo agrega cuando el valor almacenado es realmente un array; de lo contrario, inicializa uno nuevo:

root@kitploit:~
if (Array.isArray(filesArray)) {
  filesArray.push(file)
} else {
  files[name] = [file]
}

Cuando se llama a .push() sobre un valor que no es un array, se lanza un TypeError. Debido a que esto ocurre dentro del flujo de análisis asíncrono de Multiparty, el manejo de errores normal del lado del llamador puede no capturarlo, permitiendo que la excepción bloquee el proceso.

Cronología

  • 2026-01-12: Vulnerabilidad reportada a los mantenedores de multiparty.
  • 2026-01-17: Informe aceptado, comenzó el trabajo de remediación.
  • 2026-02-14: Revisión coordinada iniciada con @pillarjs/security-triage.
  • 2026-02-16: Discusiones sobre el parche -> Object.prototype.hasOwnProperty.call(...).
  • 2026-03-29: Título y metadatos del aviso actualizados para reflejar el impacto de denegación de servicio.
  • 2026-04: Enfoque de remediación revisado y aprobado.
  • 2026-05-08: Aviso finalizado y CVE-2026-8161 reservado.
  • 2026-05-11: Corrección fusionada en pillarjs:master.

Uso de demostración

Ejecute el entorno mocklab y envíe la carga útil de prueba a ambos objetivos:

root@kitploit:~
docker compose up -d
python3 secdos.py -u http://localhost:8080/api/submit
python3 secdos.py -u http://localhost:8081/api/submit

El objetivo vulnerable fallará y devolverá [PASS]. El objetivo parcheado manejará la solicitud de forma segura y devolverá [FAIL].

Si vuelve a ejecutar contra el servidor vulnerable, reinícielo primero

Resumen de configuración

Servidor vulnerable

  • Acceso en localhost:8080
  • Servidor Nginx actuando como proxy inverso; en caso de fallo, muestra una página de error con estado 502
  • Nginx resuelve la dirección del servidor vulnerable por nombre de servicio
  • Usa multiparty 4.2.3 (vulnerable)

Servidor parcheado

  • Ejecutándose y accesible en localhost:8081
  • Nginx no es necesario
  • Usa multiparty 4.3.0 (parcheado)

Construir una imagen parcheada desde el dockerfile requiere un argumento de compilación PATCHED=1

Referencias

https://github.com/pillarjs/multiparty/security/advisories/GHSA-qxch-whhj-8956 https://github.com/pillarjs/multiparty/commit/8ee6aca09aca29e923da48da8260c87aa964b282

Descargar herramienta