Background image: Matthieu's World Background image: Matthieu's World
Social Icons

Mon Mac a freeze à cause d'une faille de sécurité (et la solution tient en 3 lignes)

4 min de lecture
Par Matthieu Cousin

Table des matières

La semaine dernière, j'ai voulu être un bon développeur responsable. Une faille critique venait d'être annoncée dans React et Next.js, alors j'ai mis à jour tous mes projets.

Et là, mon Mac s'est mis à freezer à chaque build.

Après avoir failli jeter mon ordi par la fenêtre, j'ai trouvé la cause. Et la solution tient en 3 lignes de config.


Le contexte : une mise à jour de sécurité critique

Début décembre 2025, une faille critique est découverte dans React et Next.js : CVE-2025-55182 (surnommée "React2Shell").

Score CVSS : 10.0 sur 10. Le maximum.

Exécution de code à distance, sans authentification, exploitée activement par des groupes APT chinois. Bref, le genre de truc où tu mets à jour avant de finir ton café.

⚠️
Si tu n'as pas encore mis à jour tes projets Next.js/React, fais-le avant de continuer à lire. Les versions patchées sont en fin d'article.

En bon vibecoder responsable, je mets à jour mes projets :

  • Next.js 16.0.10 (patché)
  • React 19.2.3 (patché)

Je régénère mon pnpm-lock.yaml, je lance pnpm audit → tout est clean.

Et là, je teste un pnpm build...

Mon Mac freeze complètement.


Le symptôme : 30 processus qui cramaient mon CPU

Je lance pnpm build sur mon projet Next.js. Tout se passe bien pendant 2 secondes, puis mon Mac commence à chauffer, le ventilateur s'emballe, et VS Code devient inutilisable.

Je suis obligé de forcer la fermeture.

En ouvrant Activity Monitor, je vois ça :

rg --files --hidden ...  6.2% CPU
rg --files --hidden ...  6.1% CPU
rg --files --hidden ...  6.0% CPU
... x30 processus

30 processus rg qui tournent en parallèle. Chacun consomme 6% de CPU. Total : 180% de mon CPU cramé juste pour indexer des fichiers.


C'est quoi rg ?

rg c'est ripgrep, un outil de recherche ultra-rapide dans les fichiers. VS Code l'utilise en interne pour :

  • La recherche globale (Cmd+Shift+F)
  • L'indexation des fichiers du workspace
  • Le file watcher qui détecte les changements

Le problème ? VS Code ne sait pas quand s'arrêter.


Pourquoi ça arrive maintenant ?

Deux facteurs combinés :

1. Turbopack génère plus de fichiers

Next.js 15+ utilise Turbopack par défaut pour le build. C'est plus rapide, mais ça génère aussi plus de fichiers intermédiaires dans .next/ :

.next/
├── cache/           # Cache de compilation (énorme)
├── server/          # Code serveur compilé
├── static/          # Assets statiques
└── ...              # Des milliers d'autres fichiers

2. VS Code réagit à chaque fichier

VS Code détecte chaque nouveau fichier et lance un processus ripgrep pour l'indexer. Sauf que les fichiers arrivent plus vite que VS Code ne peut les traiter.

Résultat : une avalanche de processus qui s'accumulent.


Le bug est connu (et pas fixé)

Ce n'est pas un problème de mon côté. C'est un bug documenté chez Microsoft :

Pas de fix prévu côté Microsoft. C'est à nous de configurer les exclusions.


La solution

Ouvre tes settings VS Code globaux :

OSChemin
Mac~/Library/Application Support/Code/User/settings.json
Windows%APPDATA%\Code\User\settings.json
Linux~/.config/Code/User/settings.json

Ajoute ces lignes :

{
  "files.watcherExclude": {
    "**/.next/**": true,
    "**/node_modules/**": true,
    "**/dist/**": true,
    "**/build/**": true,
    "**/.turbo/**": true,
    "**/out/**": true
  },
  "search.exclude": {
    "**/.next/**": true,
    "**/node_modules/**": true,
    "**/dist/**": true,
    "**/build/**": true
  },
  "search.followSymlinks": false
}

Redémarre VS Code et relance ton build. Normalement tu n'auras plus de freeze.


Pourquoi ça marche ?

SettingEffet
files.watcherExcludeVS Code ignore ces dossiers pour le file watcher
search.excludeExclut aussi de la recherche globale
search.followSymlinksÉvite les boucles infinies avec les symlinks

Bonus : config par projet

Tu peux aussi créer un fichier .vscode/settings.json à la racine de ton projet Next.js :

{
  "files.watcherExclude": {
    "**/.next/**": true
  }
}

Comme ça, les settings sont versionnés avec ton projet et tes collègues en profitent aussi.


Attends, t'as pas encore mis à jour ?

🚨
Si tu n'as pas encore patché tes projets Next.js/React : fais-le maintenant. Les CVE de décembre 2025 sont critiques.
CVETypeCVSSImpact
CVE-2025-55182RCE10.0Exécution de code à distance, sans auth
CVE-2025-66478RCE10.0Même faille côté Next.js
CVE-2025-29927Auth Bypass9.1Bypass complet du middleware

Versions minimum à avoir :

  • Next.js : 14.2.35+ (14.x), 15.5.9+ (15.x), 16.0.10+ (16.x)
  • React : 19.0.3+, 19.1.4+, ou 19.2.3+
# Vérifier tes versions
cat package.json | grep -E '"next"|"react"'

# Mettre à jour
pnpm update next react react-dom

# Regénérer le lock file
rm pnpm-lock.yaml && pnpm install

# Vérifier qu'il n'y a plus de vulnérabilités
pnpm audit
🔑
Important : après mise à jour, rotate tous tes secrets (API keys, JWT secrets, etc.). Si ton app était vulnérable en prod, des attaquants ont pu les exfiltrer.

Ce que j'ai appris

ProblèmeCauseSolution
CPU 100% pendant buildVS Code indexe .next/files.watcherExclude
VS Code freeze30+ processus ripgrepExclure les dossiers de build
Apparu après update Next.jsTurbopack génère plus de fichiersConfig globale + projet

Le takeaway

Si tu viens de mettre à jour Next.js/React pour patcher les CVE critiques de décembre 2025 et que ton ordi freeze pendant les builds : c'est pas ton code le problème.

C'est VS Code qui essaie d'indexer des fichiers dont il n'a pas besoin.

3 lignes de config et c'est réglé.



Bonus : N8N aussi

Et pendant quon parle de failles critiques : si tu utilises N8N en self-hosted, vérifie ta version.

Plusieurs CVE critiques ont été découvertes fin 2025/début 2026 :

CVETypeCVSSVersions vulnérables
CVE-2026-21858 (Ni8mare)Accès fichiers sans auth10.01.65.0 → 1.120.4
CVE-2026-21877RCE écriture fichiers10.00.123.0 → 1.121.2
CVE-2025-68613RCE expression injection9.90.211.0 → 1.120.3
CVE-2025-68668 (N8scape)Bypass sandbox Python9.9Toutes les v1.x
⚠️
103,476 instances vulnérables selon Censys. Si tu self-host N8N, vérifie ta version.

Quelle version installer ?

Si tu utilises le Python Code Nodev2.0+ obligatoire (N8scape affecte toutes les v1.x, pas de patch)

Sinonv1.122.0+ minimum, ou désactive Python : N8N_PYTHON_ENABLED=false

La v2 apporte une architecture "Secure by Default" avec task runners isolés. Cest le choix recommandé si tu peux migrer.

Ressources

Sur les CVE patchées :

Sur le bug VS Code :

Commentaires