Une vulnérabilité critique dans React Server Components, connue sous le nom de React2Shell et suivie sous CVE-2025-55182, est activement exploitée pour déployer une nouvelle backdoor Linux appelée PeerBlight. Ce malware transforme les serveurs compromis en nœuds proxy et de commande et contrôle discrets. Les attaquants utilisent une seule requête HTTP conçue pour exécuter du code arbitraire sur des applications Next.js et React vulnérables.
La vulnérabilité React2Shell provient d'un problème de désérialisation insecure dans la manière dont React Server Components gèrent les « chunks » React Flight. Un attaquant non authentifié peut injecter une logique malveillante via un objet « thenable » spécialement conçu, forçant le serveur à exécuter du JavaScript arbitraire lors du rendu côté serveur. Cette faille affecte plusieurs versions du paquet react-server-dom et a été observée dans des attaques contre des applications Next.js exposées sur Internet, souvent initiées par des commandes curl ou wget simples pour récupérer des scripts shell et des payloads ELF.
Les chercheurs en sécurité ont noté des scans actifs utilisant un scanner React2Shell disponible publiquement, identifiable par son User-Agent par défaut dans les logs. L'exploitation a eu lieu dans la nature, permettant des activités ultérieures telles que la livraison de malware, le minage de cryptomonnaies et des mécanismes de persistance.
Une fois à l'intérieur, les attaquants déploient PeerBlight, une backdoor Linux sophistiquée avec une structure de commande et contrôle (C2) multicouche. Elle se connecte initialement à un serveur C2 codé en dur à 185.247.224.41:8443, négociant des clés de session AES-256 via des handshakes chiffrés RSA. Le malware envoie des balises JSON détaillant l'architecture de l'hôte, le système d'exploitation et un identifiant de groupe de campagne. Si le C2 principal échoue, il recourt à un algorithme de génération de domaines (DGA) créant jusqu'à 200 paires domaine-port, et utilise finalement le réseau BitTorrent DHT avec un préfixe d'ID de nœud distinct « LOLlolLOL » pour la découverte C2 peer-to-peer.
Pour la persistance et la discrétion, PeerBlight se copie dans /bin/systemd-daemon et s'enregistre comme systemd-agent sur les systèmes utilisant systemd, ou dépose un job Upstart sur les distributions anciennes. Il écrase argv et les noms de processus pour imiter un thread kernel [ksoftirqd], évitant la détection dans les listes de processus.
La backdoor gère au moins 10 types de commandes basées sur JSON, incluant les téléchargements et uploads de fichiers, le spawn de reverse-shell, les modifications de permissions, l'exécution de binaires arbitraires et les mises à niveau en mémoire. Cette configuration transforme les hôtes infectés en nœuds proxy résilients pour d'autres intrusions et mouvements latéraux.
La même campagne a également introduit des outils comme CowTunnel (un reverse-proxy basé sur xfrpc), ZinFoq (un implant Go avec pivot SOCKS5 et timestomping), des mineurs XMRig, et une variante du botnet Kaiji pour les fonctions DDoS et watchdog. Les organisations utilisant des React Server Components ou Next.js vulnérables sont invitées à appliquer les correctifs immédiatement et à surveiller les indicateurs de PeerBlight, tels que ses binaires, fichiers systemd-agent, nœuds DHT LOLlolLOL et trafic vers les endpoints C2 connus.