Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Outils/GitHubGitHub/ser0n-ath/multiparty-cve-2026-8161
Analyse des VulnérabilitésExploitationExploitation d'Applications WebSécurité Web
GitHubser0n-ath/multiparty-cve-2026-8161

multiparty-CVE-2026-8161

Preuve de concept d'exploitation pour CVE-2026-8161, une vulnérabilité de déni de service dans l'analyseur multipart multiparty, démontrant une pollution de prototype conduisant à une exception non interceptée et à un crash.

Voir le dépôt
1il y a 4 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2026-8161

Preuve de concept de la CVE-2026-8161 (Multiparty)

Description

[email protected] et versions antérieures sont vulnérables à un déni de service via une exception non interceptée.

L'analyseur stocke les champs et fichiers téléversés dans des objets JavaScript simples et ne distingue pas de manière sûre les clés appartenant à l'analyseur des propriétés héritées de l'objet. Un nom de champ multipart malveillant peut amener l'analyseur à lire des valeurs inattendues de la chaîne de prototypes et à planter lors du traitement du téléversement.

Tout service qui accepte des téléversements multipart via des versions vulnérables de multiparty peut être affecté.

Comment cela fonctionne

Le problème vient du fait que fields et files sont des objets JavaScript simples, mais qu'ils sont utilisés comme des mappages clé-valeur sûrs pour des noms contrôlés par l'utilisateur.

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

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

Le problème est que fields[name] et files[name] utilisent une recherche de propriété JavaScript normale. Pour les objets simples, cette recherche peut renvoyer des propriétés héritées de la chaîne de prototypes au lieu de uniquement les valeurs stockées sur l'objet lui-même.

Lorsque le nom est __proto__, JavaScript peut le résoudre via la chaîne de prototypes et renvoyer l'objet prototype hérité au lieu de undefined. Comme cette valeur est évaluée comme vraie, l'assignation de repli est ignorée et l'analyseur ne crée jamais un véritable tableau pour ce champ.

Le correctif résout ce problème en ne faisant confiance qu'aux clés qui appartiennent directement à l'objet :

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

Ensuite, l'analyseur n'ajoute que lorsque la valeur stockée est réellement un tableau, sinon il en initialise un nouveau :

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

Lorsque .push() est appelé sur une valeur qui n'est pas un tableau, il lève une TypeError. Comme cela se produit dans le flux d'analyse asynchrone de Multiparty, la gestion d'erreur normale côté appelant peut ne pas l'intercepter, permettant à l'exception de faire planter le processus.

Chronologie

  • 2026-01-12 : Vulnérabilité signalée aux mainteneurs de multiparty.
  • 2026-01-17 : Rapport accepté, travaux de remédiation commencés.
  • 2026-02-14 : Revue coordonnée démarrée avec @pillarjs/security-triage.
  • 2026-02-16 : Discussions sur le correctif -> Object.prototype.hasOwnProperty.call(...).
  • 2026-03-29 : Titre et métadonnées de l'avis mis à jour pour refléter l'impact de déni de service.
  • 2026-04 : Approche de remédiation revue et approuvée.
  • 2026-05-08 : Avis finalisé et CVE-2026-8161 réservée.
  • 2026-05-11 : Correctif fusionné dans pillarjs:master.

Utilisation de la démo

Lancez l'environnement mocklab et envoyez la charge utile de test aux deux cibles :

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

La cible vulnérable plantera et renverra [PASS]. La cible corrigée gérera la requête en toute sécurité et renverra [FAIL].

Si vous relancez contre le serveur vulnérable, redémarrez-le d'abord

Aperçu de la configuration

Serveur vulnérable

  • Accès sur localhost:8080
  • Serveur Nginx agissant comme proxy inverse, en cas d'échec il affiche une page d'erreur avec le statut 502
  • Nginx résout l'adresse du serveur vulnérable par nom de service
  • Utilise multiparty 4.2.3 (vulnérable)

Serveur corrigé

  • Exécuté et accessible sur localhost:8081
  • Nginx non requis
  • Utilise multiparty 4.3.0 (corrigé)

La construction d'une image corrigée à partir du dockerfile nécessite un argument de build PATCHED=1

Références

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

Télécharger l’outil