
Tester et analyser la vulnérabilité CVE-2025-55182 dans Next.js Server Actions
Statut du projet : Expérimental / Preuve de concept
Ce dépôt constitue un environnement de recherche contrôlé et un cadre de Preuve de Concept (PoC) pour analyser CVE-2025-55182. Il démontre une vulnérabilité de Pollution de prototype dans le contexte des Actions serveur de Next.js, ciblant spécifiquement des opérations de fusion récursives non sécurisées.
La vulnérabilité principale réside dans une fonction utilitaire deepMerge personnalisée implémentée dans une Action serveur Next.js (syncConfiguration). La fonction manque d'une désinfection adéquate pour les clés d'objet spéciales – notamment __proto__ et constructor. Cette omission permet à un attaquant non authentifié d'injecter des propriétés arbitraires dans le Object.prototype global.
Dans un environnement d'exécution Node.js côté serveur, une pollution de prototype réussie peut entraîner :
isAdmin) ou des paramètres de configuration à l'échelle globale.toString ou valueOf.child_process ou les moteurs de templates) pour parvenir à une exécution de code arbitraire.lab/next-app/ : Une application Next.js 15 vulnérable conçue pour simuler la faille de sécurité.
src/app/actions.jsx : Le code côté serveur contenant l'implémentation vulnérable de deepMerge.exploits/ : Scripts d'automatisation Python pour les tests et l'exploitation.
rce.py : Un script qui automatise l'injection de charges utiles JSON malveillantes pour démontrer la pollution d'état du serveur.get-shell.py : Un PoC avancé explorant les vecteurs de désérialisation du protocole de vol RSC.docs/PAYLOADS.md : Un document de référence contenant diverses charges utiles JSON pour les tests manuels et l'analyse.Vous pouvez exécuter le laboratoire en utilisant Docker (recommandé) ou localement.
Assurez-vous que Docker et Docker Compose sont installés.
docker-compose up --build
L'application sera accessible à l'adresse http://localhost:3000.
Nécessite Node.js 20+.
cd lab/next-app
npm install
npm run dev
L'application sera accessible à l'adresse http://localhost:3000.
http://localhost:3000.docs/PAYLOADS.md (par exemple, la charge utile de base).Les scripts Python fournis permettent une vérification programmatique de la vulnérabilité.
Prérequis : Récupérez l'ID de l'Action Next depuis l'onglet Réseau du navigateur (cherchez un en-tête de requête POST Next-Action) ou la sortie du terminal du serveur.
docker exec -it exploit-runner bash
export ACTION_ID="votre_id_action"
python3 rce.py "id"
pip install -r exploits/requirements.txt
export ACTION_ID="votre_id_action"
python3 exploits/rce.py "id"
Remarque : Le script rce.py est configuré pour démontrer une pollution d'état réussie. L'exécution complète d'un shell dépend de gadgets environnementaux spécifiques qui peuvent varier.
Ce projet est destiné uniquement à des fins éducatives et de recherche en sécurité.
N'utilisez pas le code ou les techniques fournis ici sur des systèmes pour lesquels vous n'avez pas d'autorisation explicite et écrite. Les auteurs ne sont pas responsables de toute utilisation abusive ou des dommages causés par ce matériel.