CVE-2025-55182 et CVE-2025-66478 : Détection de haute fidélité pour RSC/Next.js RCE
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
Une faille d’exécution de code à distance affecte les applications Next.js qui utilisent les composants serveur React. Le problème peut être déclenché sans accès préalable en envoyant une requête HTTP multipart spécialement conçue. Bien que plusieurs exploits de preuve de concept publics existent, beaucoup sont peu fiables ou incorrects. L’article présente une technique de détection de haute fidélité qui repose sur une réponse d’erreur serveur caractéristique.
Investigation
Les chercheurs ont examiné la logique d’analyse des composants serveur React et ont découvert qu’une référence de propriété délimitée par deux-points peut produire une erreur 500 lorsque l’objet ciblé est manquant. Ils ont ensuite construit un charge utile multipart qui déclenche de manière fiable cette condition et ont confirmé un schéma de réponse répétable. La règle de détection proposée signale les réponses HTTP 500 qui contiennent le fragment distinctif E{"digest" dans le corps.
Atténuation
Les étapes d’atténuation incluent la mise à niveau des versions de Next.js affectées vers des versions intégrant des gardes supplémentaires autour de la notation par deux-points. Les organisations devraient déployer des règles WAF pour bloquer la structure multipart malveillante et s’assurer que toutes les requêtes entrantes touchant les composants serveur React sont validées et assainies.
Réponse
Les équipes de sécurité devraient analyser les applications web exposées pour détecter la signature requête-réponse décrite et prioriser les correctifs pour les instances Next.js vulnérables. Si une exploitation est suspectée, isoler le serveur impacté, préserver et examiner les journaux pour des preuves d’exécution de code, et appliquer les patchs pertinents sans délai.
Flux d’attaque
Nous mettons toujours à jour cette partie. Inscrivez-vous pour être notifié
Notifiez-moiDétections
Activité possible de commande et contrôle par communication de domaine logiciel d’accès à distance…
Voir
Tentative d’exploitation possible CVE-2025-55182 (RCE non authentifié dans les composants serveur React) (via proxy)
Voir
Tentative d’exploitation possible CVE-2025-55182 (RCE non authentifié dans les composants serveur React) (via serveur Web)
Voir
Exécution de simulation
Condition préalable : la vérification pré-flight de la télémetrie et de la base de référence doit avoir réussi.
Raisonnement : Cette section détaille l’exécution précise de la technique de l’adversaire (TTP) conçue pour déclencher la règle de détection. Les commandes et le récit DOIVENT directement refléter les TTP identifiés et viser à générer exactement la télémetrie attendue par la logique de détection. Les exemples abstraits ou non liés entraîneront un mauvais diagnostic.
-
Narratif et commandes d’attaque :
L’attaquant, ayant identifié que la cible utilise une version vulnérable de Next.js, crée une requête multipart malveillante qui imite un flux de chargement d’actif légitime. En configurant leUser-AgentàAssetnote/1.0.0et en injectant les en-têtes internes Next.jsNext-Action: xetX-Nextjs-Request-Id: b5dce965, la charge utile déclenche le composant côté serveur qui désérialise des données non fiables, entraînant une exception d’exécution. Le serveur répond avec HTTP 500 et inclut le digeste sérialisé (E{"digest), que la règle de détection surveille. -
Script de test de régression :
#!/usr/bin/env bash # # Simulation d'exploitation pour la règle de détection RCE de Next.js (T1595.002) # Génère le modèle de paquet exact attendu par la règle Sigma. # TARGET="http://127.0.0.1" ENDPOINT="/" USER_AGENT="Assetnote/1.0.0" BOUNDARY="----WebKitFormBoundary$(date +%s)" # Corps multipart minimal ; le contenu est inutile pour la détection. read -r -d '' PAYLOAD <<EOF --$BOUNDARY Content-Disposition: form-data; name="file"; filename="exploit.txt" Content-Type: text/plain exploit --$BOUNDARY-- EOF curl -s -o /dev/null -w "%{http_code}n" -X POST "${TARGET}${ENDPOINT}" -H "User-Agent: ${USER_AGENT}" -H "Next-Action: x" -H "X-Nextjs-Request-Id: b5dce965" -H "Content-Type: multipart/form-data; boundary=${BOUNDARY}" --data-binary "$PAYLOAD"Exécutez le script sur une machine pouvant atteindre le serveur web cible. Le statut HTTP attendu est 500 et le journal d’erreurs du serveur contiendra la chaîne
E{"digest. -
Commandes de nettoyage :
# Aucune modification persistante sur la cible ; simplement supprimer les fichiers temporaires locaux rm -f /tmp/exploit_payload.tmp 2>/dev/null || true