Skip to content

340 000 serveurs dans le viseur : comment la porte dérobée CWPdoor s’efface des logs Linux

🕵️‍♂️ Aucun port ouvert, zéro détection antivirus et suppression automatique des journaux d'accès : la porte dérobée CWPdoor pirate le serveur web de Control Web Panel sous Linux ! Comment détecter l'infection.

ucun port ouvert, zéro détection antivirus et suppression automatique des journaux d’accès : la porte dérobée CWPdoor pirate le serveur web de Control Web Panel sous Linux ! Comment détecter l’infection et ce qu’il faut faire.

💡 En résumé : la menace CWPdoor décortiquée

  • Furtivité passive totale : le code malveillant n’ouvre aucun port d’écoute distinct et n’émet aucune balise sortante, rendant aveugles les outils de détection réseau traditionnels.
  • Exécution chiffrée et signée : les instructions de l’attaquant transitent par trois en-têtes HTTP spécifiques protégés par une signature RSA, un chiffrement AES-256-CBC et une fenêtre temporelle de 5 minutes contre le rejeu.
  • Suppression des journaux système : lors de son activation, le malware détourne le pointeur du module de journalisation pour empêcher l’enregistrement de la requête dans les fichiers d’accès.

340 mille consoles d’administration exposées en libre accès sur l’internet public et une charge virale totalement indétectable lors des contrôles de routine, ce n’est pas rien. Les experts en sécurité du laboratoire chinois XLab, entité de recherche du groupe QiAnXin, viennent de documenter l’anatomie d’une menace ciblant l’écosystème des serveurs d’hébergement. Baptisé CWPdoor, cet implant malveillant ne se contente pas de déposer un fichier suspect sur le système : il prend la forme d’une version modifiée et recompilée du binaire cwpsrv, le composant serveur dérivé de Nginx qui anime l’interface de gestion Control Web Panel (CWP, anciennement CentOS Web Panel).

Un cheval de Troie niché au cœur du serveur d’hébergement

Repéré initialement à travers un script d’infection baptisé cwpsrv_update.sh, l’outil se fait passer pour une banale mise à jour corrective ciblant les versions 1.15.10 et 1.24.0 de CWP. Nécessitant les privilèges administrateur (root), ce script ne sert pas à s’introduire sur la machine, mais à y implanter une persistance indétectable. Une fois le binaire d’origine remplacé, le script restaure immédiatement les dates de modification (mtime) et d’accès (atime) d’origine, purge les fichiers temporaires et supprime l’historique des commandes du shell pour tromper les commandes de vérification de base telles que ls ou stat.

Comme le souligne l’étude technique publiée par XLab, le déclenchement de la porte dérobée s’opère de manière passive lors du traitement normal des requêtes web. Pour piloter le serveur à distance, l’attaquant transmet trois en-têtes HTTP conçus sur mesure :

  • X-Ngx-Integrity-Time : contient un horodatage dont la validité est strictement contrôlée dans un intervalle de ±300 secondes pour interdire les attaques par rejeu.
  • X-Ngx-Integrity-Sig : transporte une signature numérique encodée en Base64, vérifiée à l’aide d’une clé publique RSA masquée dans le code par une opération XOR.
  • X-Ngx-Integrity-Data : héberge la charge utile malveillante chiffrée en AES-256-CBC dont la clé dérive de l’empreinte SHA-256 de la clé RSA.

Si la signature ou la fenêtre temporelle s’avère non conforme, la requête continue son transit sans déclencher le moindre comportement anormal. À l’inverse, si l’authentification réussit, le processus maître déchiffre la charge et la transmet à un processus auxiliaire via une socket Unix masquée. Le résultat est ensuite renvoyé à l’attaquant sous la forme d’un flux binaire HTTP 200, tandis que l’appel d’écriture dans les journaux d’accès web est neutralisé à la volée.

Alors que netstat ne montre aucun port suspect, la commande ss révèle immédiatement la socket Unix malveillante liée à cwpsrv. Crédit : XLab / QiAnXin.

Comment identifier la présence de l’implant et assainir sa machine

La dangerosité de CWPdoor s’est confirmée fin septembre lors de l’apparition sur VirusTotal d’une archive contenant le binaire compromis aux côtés d’Ebury, un malware bien connu pour le vol d’identifiants SSH. À cette date, la quasi-totalité des moteurs antivirus affichait un taux de détection nul pour ce fichier modifié. Pour s’assurer de l’intégrité de leur infrastructure, les administrateurs système doivent vérifier manuellement trois indicateurs d’infection (IoC) :

  • Inspection de la socket Unix : exécuter la commande ss -axp | grep integrity pour débusquer la liaison locale @ngx_http_integrity_helper utilisée pour la communication inter-processus.
  • Analyse des processus actifs : surveiller via ps aux | grep cwpsrv la présence de processus enfants auxiliaires suspects rattachés au serveur web.
  • Contrôle des chaînes binaires : lancer strings /usr/local/cwpsrv/bin/cwpsrv | grep X-Ngx-Integrity pour vérifier l’absence des signatures des en-têtes malveillants dans l’exécutable.

En cas de compromission avérée, il est indispensable de restaurer la copie saine du binaire (conservée par le script sous un nom du type cwpsrv.prev-*), d’appliquer les dernières mises à jour du panneau de contrôle et de renouveler l’intégralité des identifiants et des mots de passe d’administration. L’attaquant ayant obtenu les droits root pour déployer cet implant, un audit approfondi de l’ensemble du système d’exploitation reste obligatoire pour repérer d’éventuels vecteurs d’intrusion résiduels.

🌐 L’actualité de l’open source et des technologies éthiques dans votre flux

🐘 Fediverse / Mastodon : suivez notre profil officiel @redaction@goodtech.info depuis votre application ou votre instance favorite.

🦋 Bluesky (AT Protocol) : retrouvez nos actualités condensées et abonnez-vous à @goodtech.info.

Did you enjoy this article?

Recommend it — Standard Reader surfaces well-loved writing to more readers across the network.

Across the AtmosphereDiscussions