Détecte la RCE CVE-2025-55182 dans les React Server Components en scannant les lockfiles npm/pnpm/yarn, les images Docker, les SBOMs et les URLs en direct. Inclut l'auto-fix, la sortie SARIF et les intégrations CI/CD.
Scanner de sécurité pour CVE-2025-55182 - une vulnérabilité critique (CVSS 10.0) d'exécution de code à distance non authentifiée dans les composants serveur React.
⚠️ AVERTISSEMENT
Ceci est un scanner de sécurité, PAS un outil d'exploitation. Il est conçu pour aider les développeurs et les équipes de sécurité à identifier les dépendances vulnérables dans leurs projets.
Ceci est un projet open source communautaire fourni "EN L'ÉTAT" sans garantie d'aucune sorte, expresse ou implicite. Les auteurs et contributeurs ne sont pas responsables des dommages ou incidents de sécurité résultant de l'utilisation de cet outil.
Utilisez-le à vos propres risques et responsabilités. Vérifiez toujours les résultats manuellement et suivez les politiques de sécurité de votre organisation. Si vous découvrez des problèmes, des bogues ou avez des suggestions, veuillez contribuer pour améliorer le projet pour tout le monde.
🤝 CONTRIBUTEURS RECHERCHÉS
Ce projet recherche activement des testeurs et des contributeurs ! Que vous souhaitiez signaler des bogues, suggérer des fonctionnalités, améliorer la documentation ou soumettre du code - toutes les contributions sont les bienvenues. Consultez notre Guide de contribution pour commencer.
Ce projet existe pour aider la communauté à répondre à la CVE-2025-55182. Nous reconnaissons et remercions :
Le moyen le plus rapide de vérifier si votre projet est vulnérable :```bash npx react2shell-guard .
That's it! Cela analysera votre répertoire courant et affichera les résultats immédiatement.
### 2. Analyser un projet spécifique```bash
npx react2shell-guard /path/to/your/project
Des vulnérabilités trouvées? Corrigez-les automatiquement :```bash
npx react2shell-guard fix --dry-run
npx react2shell-guard fix
npx react2shell-guard fix --install
### 4. Analyser les URL actives
Vérifiez si une application déployée est vulnérable :```bash
npx react2shell-guard scan-url https://your-app.com
Confirmez que votre correctif déployé fonctionne:```bash npx react2shell-guard verify-patch https://your-app.com
### 6. Analyser les images de conteneurs
Vérifiez si vos images Docker contiennent des paquets vulnérables :```bash
npx react2shell-guard scan-image myapp:latest
Créez automatiquement une PR GitHub pour corriger les vulnérabilités :```bash npx react2shell-guard create-pr --dry-run # Preview npx react2shell-guard create-pr # Create PR
---
## Qu'est-ce que CVE-2025-55182?
Le 29 novembre 2025, le chercheur en sécurité Lachlan Davidson a découvert et divulgué de manière responsable une vulnérabilité critique dans React Server Components. Le défaut réside dans la manière dont React décode les charges utiles envoyées aux points de terminaison React Server Function, permettant à des attaquants non authentifiés d'exécuter du code à distance sur les serveurs concernés sans aucune interaction utilisateur.
CVE-2025-55182 est noté CVSS 10.0 (Critique) et affecte React Server Components (RSC) ainsi que les frameworks utilisant le protocole RSC "Flight".
**Paquets affectés :**
- `react-server-dom-webpack` 19.0.0, 19.1.0-19.1.1, 19.2.0
- `react-server-dom-parcel` (mêmes versions)
- `react-server-dom-turbopack` (mêmes versions)
- `next` 15.0.0-15.0.4, 15.1.0-15.1.8, 15.2.0-15.2.5, 15.3.0-15.3.5, 15.4.0-15.4.7, 15.5.0-15.5.6, 16.0.0-16.0.6
**Plus d'informations :**
- [Avis de sécurité React](https://react.dev/blog/2025/12/03/critical-security-vulnerability-in-react-server-components)
- [Recherche Wiz](https://www.wiz.io/blog/critical-vulnerability-in-react-cve-2025-55182)
---
## Installation (Optionnel)
Pour une utilisation fréquente, installez globalement :```bash
npm install -g react2shell-guard
Ensuite, utilisez sans npx :```bash
react2shell-guard .
---
## Guide d'utilisation
### Analyse de base```bash
# Scan current directory
react2shell-guard .
# Scan specific directory
react2shell-guard /path/to/project
# Scan and ignore certain paths
react2shell-guard . --ignore-path "examples/**" "test/**"
react2shell-guard .
react2shell-guard . --json
react2shell-guard . --sarif
react2shell-guard . --html report.html
### CLI Options
| Option | Description |
|--------|-------------|
| `--json` | Afficher les résultats en JSON |
| `--sarif` | Afficher les résultats en SARIF 2.1.0 |
| `--html <file>` | Générer un rapport HTML autonome |
| `--no-exit-on-vuln` | Ne pas quitter avec le code 1 lorsque des vulnérabilités sont trouvées |
| `--ignore-path <patterns>` | Chemins à ignorer (par ex., `examples/**`) |
| `--debug` | Activer les sorties de débogage |
### Codes de sortie
| Code | Signification |
|------|---------------|
| `0` | Aucune vulnérabilité trouvée |
| `1` | Vulnérabilités détectées |
| `2+` | Erreur fatale |
## Analyse d'URL en direct
Analysez les points de terminaison en direct pour détecter s'ils sont vulnérables :```bash
# Scan a single URL
react2shell-guard scan-url https://example.com
# Batch scan from a file (one URL per line)
react2shell-guard scan-url urls.txt --list
# With options
react2shell-guard scan-url https://example.com --timeout 5000 --json
Le scanner utilise l'empreinte passive pour détecter les points de terminaison vulnérables des composants React Server sans exploiter la vulnérabilité :
Requête de sonde : Envoie une requête POST construite simulant un appel d'action Serveur RSC avec une charge utile minimale :
multipart/form-data avec une structure de données de type RSCNext-Action pour déclencher le traitement de l'action ServeurAnalyse de la réponse : Analyse la réponse HTTP pour les signatures de vulnérabilité :
^[0-9]+:E{ - Format d'erreur du protocole RSC Flight"digest":"...RSC - Digest RSC dans les réponses d'erreurReactServerComponentsError - Noms de classes d'erreur Reacttext/x-component.*error - Type de contenu d'erreur de composantNon destructif : Il s'agit purement d'un mécanisme de détection - il n'exécute aucune charge utile malveillante ni n'exploite la vulnérabilité. La sonde utilise des données bénignes qui déclenchent des réponses d'erreur sur les serveurs vulnérables mais ne causent aucun dommage.
Remarque : Une détection positive signifie que le serveur exécute une version vulnérable et a renvoyé une signature d'erreur spécifique RSC. Cela ne signifie PAS que le serveur a été exploité.
| Option | Description |
|---|---|
--list | Traiter la cible comme un fichier contenant des URL |
--threads <n> | Nombre de threads simultanés (par défaut : 10) |
--timeout <ms> | Délai d'attente de la requête en millisecondes (par défaut : 10000) |
--json | Afficher les résultats en JSON |
--skip-ssl-verify | Ignorer la vérification du certificat SSL |
--verbose | Afficher tous les résultats, y compris les hôtes non vulnérables |
Vérifiez si une cible a été corrigée contre la vulnérabilité :```bash
react2shell-guard verify-patch https://example.com
react2shell-guard verify-patch https://example.com --json
### Comment fonctionne la vérification des correctifs
La vérification des correctifs effectue **plusieurs analyses consécutives** (par défaut : 3) avec de brefs délais entre elles pour garantir une détection précise :
1. **Sondes multiples** : Exécute le même contrôle de fingerprinting passif 3 fois avec des délais de 500 ms
2. **Évaluation de la confiance** :
- **Confiance élevée** : 2+ analyses réussies avec des résultats cohérents
- **Confiance moyenne** : 1 analyse réussie avec un résultat concluant
- **Confiance faible** : Toutes les analyses ont échoué ou résultats non concluants
3. **Classification des résultats** :
- **CORRIGÉ** : Aucune signature de vulnérabilité détectée dans toutes les analyses réussies
- **VULNÉRABLE** : Signature de vulnérabilité détectée dans une ou plusieurs analyses
- **Non concluant** : Résultats mitigés ou toutes les analyses ont échoué
Cette approche multi-analyse réduit les faux positifs dus aux problèmes réseau transitoires et offre une plus grande confiance dans le statut du correctif.
### Options de vérification
| Option | Description |
|--------|-------------|
| `--timeout <ms>` | Délai d'attente de la requête en millisecondes (par défaut : 10000) |
| `--json` | Afficher les résultats au format JSON |
| `--skip-ssl-verify` | Ignorer la vérification du certificat SSL |
## Analyse d'images de conteneurs
Scannez les images de conteneurs Docker/OCI à la recherche de paquets vulnérables :```bash
# Scan a local or remote image
react2shell-guard scan-image myapp:latest
# Scan from a registry
react2shell-guard scan-image registry.example.com/myapp:v1.0
# Skip pulling (use local image only)
react2shell-guard scan-image myapp:latest --skip-pull
# With JSON output
react2shell-guard scan-image myapp:latest --json
# With SARIF output
react2shell-guard scan-image myapp:latest --sarif
| Option | Description |
|---|---|
--timeout <ms> | Délai d'expiration de l'opération en millisecondes (par défaut: 120000) |
--skip-pull | Ignorer le téléchargement de l'image depuis le registre (utiliser uniquement local) |
--json | Afficher les résultats au format JSON |
--sarif | Afficher les résultats au format SARIF 2.1.0 |
--no-exit-on-vuln | Ne pas quitter avec le code 1 lorsque des vulnérabilités sont trouvées |
--debug | Activer la sortie de débogage |
Exigences :
Bloquer les déploiements vulnérables avant qu'ils n'atteignent la production :```bash
react2shell-guard vercel-check
{ "scripts": { "vercel-build": "react2shell-guard vercel-check && next build" } }
{ "buildCommand": "npx react2shell-guard vercel-check && npm run build" }
### Options de vérification Vercel
| Option | Description |
|--------|-------------|
| `--no-fail` | Avertir mais ne pas échouer la construction en cas de vulnérabilités |
| `--ignore-path <patterns>` | Chemins à ignorer (modèles glob) |
| `--debug` | Activer la sortie de débogage |
## Automatisation des PR GitHub
Créer automatiquement une pull request pour corriger les vulnérabilités :```bash
# Preview what will be done
react2shell-guard create-pr --dry-run
# Create branch and PR
react2shell-guard create-pr
# Create branch but don't push/create PR
react2shell-guard create-pr --no-push
# Custom branch name
react2shell-guard create-pr --branch fix/security-update
| Option | Description |
|---|---|
--branch <name> | Nom de la branche pour le correctif (par défaut : fix/cve-2025-55182) |
--dry-run | Montre ce qui serait fait sans apporter de modifications |
--no-push | Crée la branche et les commits mais ne pousse pas et ne crée pas de PR |
Prérequis :
react2shell-guard - CVE-2025-55182 Scanner ──────────────────────────────────────────────────
Scanned 1 project(s)
✗ my-app [VULNERABLE] Path: /path/to/my-app Framework: nextjs v15.2.1 App Router: Yes (RSC enabled)
Vulnerabilities found: - react-server-dom-webpack @ 19.1.0 Upgrade to: 19.1.2 Advisory: https://react.dev/blog/2025/12/03/... - next @ 15.2.1 Upgrade to: 15.2.6 Advisory: https://react.dev/blog/2025/12/03/...
────────────────────────────────────────────────── VULNERABLE - Action required! Upgrade affected packages to patched versions immediately.
## GitHub Actions Integration
> **Note:** Nous publions activement de nouvelles versions avec des motifs de détection améliorés et des correctifs. Utilisez `@v1` pour les versions stables ou `@latest` pour la version la plus récente.
### GitHub Marketplace Action
La façon la plus simple d'intégrer est d'utiliser notre action GitHub officielle :```yaml
name: Security Scan
on: [push, pull_request]
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Scan for CVE-2025-55182
uses: gensecaihq/react2shell-scanner@v1
with:
path: '.'
fail-on-vuln: true
name: Security Scan
on: [push, pull_request]
jobs: scan: runs-on: ubuntu-latest permissions: security-events: write # For SARIF upload pull-requests: write # For PR comments
steps:
- uses: actions/checkout@v4
- name: Scan for CVE-2025-55182
uses: gensecaihq/react2shell-scanner@v1
with:
path: '.'
format: sarif
fail-on-vuln: true
upload-sarif: true # Upload to GitHub Security tab
add-pr-comment: true # Comment on PRs with results
ignore-paths: 'examples/**,test/fixtures/**'
### Action Inputs
| Input | Description | Default |
|-------|-------------|---------|
| `path` | Chemin à analyser | `.` |
| `scan-type` | Type d'analyse : `repo`, `sbom`, `container` | `repo` |
| `format` | Format de sortie : `text`, `json`, `sarif` | `text` |
| `fail-on-vuln` | Échouer si des vulnérabilités sont trouvées | `true` |
| `upload-sarif` | Téléverser le SARIF vers GitHub Security | `false` |
| `add-pr-comment` | Ajouter un commentaire PR avec les résultats | `false` |
| `ignore-paths` | Chemins à ignorer (séparés par des virgules) | `''` |
| `sbom-file` | Chemin du fichier SBOM (lorsque scan-type est sbom) | `''` |
| `container-image` | Image Docker (lorsque scan-type est container) | `''` |
### Action Outputs
| Output | Description |
|--------|-------------|
| `vulnerable` | Indique si des vulnérabilités ont été trouvées (`true`/`false`) |
| `findings-count` | Nombre de paquets vulnérables |
| `scan-result` | Résultat complet de l'analyse (format JSON) |
| `sarif-file` | Chemin vers le fichier de sortie SARIF |
### Scanner les images conteneur```yaml
- name: Scan Docker image
uses: gensecaihq/react2shell-scanner@v1
with:
scan-type: container
container-image: myapp:latest
### Utilisation manuelle en ligne de commande
Si vous préférez utiliser la CLI directement :```yaml
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Scan for vulnerabilities
run: npx react2shell-guard@latest .
react2shell-guard détecte et analyse automatiquement les fichiers de verrouillage de :
package-lock.json (formats v2 et v3)pnpm-lock.yamlyarn.lock (formats Classic et Berry)Mettez à jour automatiquement votre package.json pour utiliser les versions corrigées :```bash
react2shell-guard fix --dry-run
react2shell-guard fix
react2shell-guard fix --install
## Hooks de pré-commit
Installez des hooks git pour éviter de commettre des dépendances vulnérables :```bash
# Auto-detect hook framework and install
react2shell-guard init-hooks
# Preview what would be installed
react2shell-guard init-hooks --dry-run
# Force specific hook type
react2shell-guard init-hooks --hook-type husky
react2shell-guard init-hooks --hook-type lefthook
react2shell-guard init-hooks --hook-type standalone
Supported hook frameworks:
.husky/pre-commitlefthook.yml.git/hooks/pre-commitLe hook bloquera les commits lorsque package.json contient des dépendances vulnérables et suggérera d'exécuter react2shell-guard fix pour y remédier.
Analyser les fichiers SBOM CycloneDX pour les vulnérabilités :```bash
react2shell-guard scan-sbom bom.json
react2shell-guard scan-sbom bom.json --json
react2shell-guard scan-sbom bom.json --sarif
## MCP Server (Intégration d'Assistant AI)
Démarrer le serveur Model Context Protocol pour l'intégration d'Assistant AI:```bash
react2shell-guard mcp-server
Outils MCP disponibles :
scan_repo - Analyser un dépôt pour trouver des vulnérabilitésscan_sbom - Analyser un fichier SBOM CycloneDXConfigurer avec des clients compatibles MCP (exemple de configuration):```json { "mcpServers": { "react2shell-guard": { "command": "npx", "args": ["react2shell-guard", "mcp-server"] } } }
## Middleware de protection en runtime
Middleware de défense en profondeur qui détecte et bloque les tentatives d'exploitation de CVE-2025-55182 en runtime.
### Express.js```typescript
import express from 'express';
import { createExpressMiddleware } from 'react2shell-guard/middleware';
const app = express();
// Add raw body parser for RSC payloads
app.use(express.raw({ type: 'text/x-component' }));
app.use(express.json());
// Add protection middleware
app.use(createExpressMiddleware({
action: 'block', // 'block' | 'log' | 'alert'
onAlert: (result, req) => {
// Send to your alerting system (Slack, PagerDuty, etc.)
console.error('CVE-2025-55182 exploit attempt:', result);
},
skipPaths: ['/health', '/metrics'],
}));
// middleware.ts import { withReact2ShellGuard } from 'react2shell-guard/middleware';
export const middleware = withReact2ShellGuard({ action: 'block', rscEndpointsOnly: true, // Only check RSC endpoints (recommended) });
export const config = { matcher: ['/((?!_next/static|_next/image|favicon.ico).*)'], };
**Modèles détectés :**
- Serialized function injection
- Prototype pollution attempts
- Malformed module references
- Server action tampering
- Encoded malicious payloads
- RSC streaming format abuse
## Utilisation de l'API```typescript
import { scan } from 'react2shell-guard';
const result = scan({
path: '/path/to/project',
ignorePaths: ['examples/**'],
debug: false,
});
console.log(result.vulnerable); // boolean
console.log(result.projects); // ProjectResult[]
{ "cve": "CVE-2025-55182", "vulnerable": true, "scanTime": "2025-12-04T10:30:00Z", "projects": [ { "name": "my-app", "path": "/path/to/my-app", "framework": { "type": "nextjs", "version": "15.2.1", "appRouterDetected": true }, "findings": [ { "package": "react-server-dom-webpack", "currentVersion": "19.1.0", "fixedVersion": "19.1.2", "severity": "critical", "advisoryUrl": "https://..." } ], "vulnerable": true } ], "errors": [] }
## Remédiation
**Correction automatique (recommandée) :**```bash
react2shell-guard fix --install
Mise à niveau manuelle - Paquets React:```bash npm install [email protected] # or 19.0.1, 19.2.1
**Mise à niveau manuelle - Next.js:**```bash
npm install [email protected] # or other patched version for your release line
Versions fixes de Next.js par ligne de version :
npm install
npm run build
npm test
npm run dev
## Licence
MIT