Protect.Computer
NEWS

CWPdoor Backdoor Hides Inside Trojanized Control Web Panel Server

· 2 min read · Malicious byte Got hacked
CWPdoor Backdoor Hides Inside Trojanized Control Web Panel Server

Researchers at XLab, the research arm of QiAnXin, have documented a new Linux backdoor they call CWPdoor. It is spread as a trojanized copy of cwpsrv, the web server that runs the management interface of Control Web Panel (CWP, formerly CentOS Web Panel), an open-source hosting control panel comparable to cPanel and Plesk. XLab captured an infection script on June 29 that poses as a version update: it checks the local cwpsrv version, downloads a matching malicious binary, backs up the original, stops the service, overwrites /usr/local/cwpsrv/bin/cwpsrv, restarts it, and rolls back automatically if the health check fails. It then restores file timestamps, deletes temporary files and wipes command history. The script supports only cwpsrv versions 1.15.10 and 1.24.0.

CWPdoor is passive: it does nothing until the attacker sends a specially crafted HTTP request carrying three headers (X-Ngx-Integrity-Data, X-Ngx-Integrity-Time and X-Ngx-Integrity-Sig). The command is AES-256-CBC encrypted, signed with RSA, and must arrive within a five-minute window. The backdoor also tampers with the server’s logging so the triggering request never appears in access logs, and returns its output as an encrypted HTTP 200 response. On September 30, a file from Brazil was uploaded to VirusTotal containing the CWPdoor binary alongside the Ebury backdoor; the CWPdoor file had zero detections, which XLab takes as a sign that real victims exist. XLab says it does not yet know how the malware spreads or how it relates to Ebury, which may have been planted on the same server by a different attacker. XLab cites data from QiAnXin’s Hunter platform showing more than 340,000 CWP instances exposed to the internet over the past month, all of which are potential targets.

How to check if you’re affected

Affected products are servers running Control Web Panel, and in particular hosts where cwpsrv has been replaced. The captured script targets cwpsrv versions 1.15.10 and 1.24.0. XLab has not identified the infection route, so there is no known list of unaffected builds. XLab’s indicators of infection:

  • A Unix domain socket named ngx_http_integrity_helper. XLab’s guidance is to confirm that ss -axp | grep integrity returns nothing after cleanup.
  • Suspicious helper processes spawned by cwpsrv.
  • The strings X-Ngx-Integrity inside the cwpsrv binary.
  • A backup of the original binary in /usr/local/cwpsrv/bin, named cwpsrv.prev-<date>-<time>, left by the infection script.
  • Network and file indicators from the XLab report: downloader IP 136.0.141[.]71 (serving cwpsrv_update.sh, cwpsrv_1.15.10 and cwpsrv_1.24.0), script MD5 e505d4ffa21cf494a5dc2d7c8f4f1236, and MD5s 965aea67fb40de1bab5169ada993349f (1.15.10 binary) and d3f4e95113d49ab3991b45e457bda75b (1.24.0 binary).

If you confirm a compromise, XLab recommends replacing the malicious binary with the legitimate backup, upgrading to the latest version, and rotating all control panel credentials, since the backdoor can run arbitrary commands. It also advises treating the host as compromised and investigating it for other malware. Because the backdoor suppresses its own log entries, a clean access log is not evidence that a host is clean.

Sources

Related reading