Introduction
JavaScript malware infections have become increasingly sophisticated, with recent campaigns affecting thousands of websites worldwide. One particularly dangerous variant has been targeting WordPress and Node.js applications, specifically those hosted on cPanel environments. This malware employs advanced obfuscation techniques to evade detection while establishing persistent backdoor access to compromised websites.
What is This JavaScript Malware?
This malware is a highly obfuscated JavaScript injection that targets web applications, particularly WordPress sites and Node.js applications. The infection spreads by infecting all writable JavaScript files on the server, creating a persistent presence that’s difficult to completely remove.
Key Characteristics:
- Multi-file Infection: Spreads across thousands of JavaScript files
- Heavy Obfuscation: Uses advanced code obfuscation to avoid detection
- cPanel Targeting: Primarily affects cPanel-hosted websites
- Persistent Backdoor: Maintains access even after initial cleanup
- Cross-platform: Affects both WordPress and Node.js environments
Technical Analysis of the Malware Code
Let’s break down the malicious code structure:
1. Obfuscation Layer
if(typeof cqxq==="undefined"){
(function(W,y){
var A=a0y,h=W();
while(!![]){
try{
var e=-parseInt(A(0xa1,'qcC%'))/(0x124a+0xdaf+-0x1ff8)*
// Heavy mathematical obfuscation continues...
The malware starts with a check for the cqxq
variable to prevent re-execution. It then uses a complex mathematical obfuscation scheme with hexadecimal values to hide its true purpose.
2. HTTPClient Implementation
var HttpClient=function(){
var H=a0y;
this[H(0x94,'hG7i')]=function(W,y){
var j=H,h=new XMLHttpRequest();
// Establishes communication with command & control server
The malware creates an HTTP client to communicate with command and control (C2) servers, allowing remote attackers to execute commands on infected websites.
3. Token Generation System
rand=function(){
var K=a0y;
return Math[K(0x72,'Ksot')+K(0xa9,'MH^(')]()
[K(0xb8,'p]0[')+K(0xae,'ydx2')+'ng'](0x1013+-0xc*0x2ce+-0xd*-0x15d)
[K(0x8d,'e!tf')+K(0xa8,'jYYK')](-0x159b*0x1+-0x1e46+-0x33e3*-0x1);
},
token=function(){return rand()+rand();};
The malware generates random tokens for authentication with the C2 server, making detection more difficult.
4. Deobfuscation Function
function a0y(W,y){
var h=a0W();
return a0y=function(e,u){
e=e-(0xe76+-0x3a*-0x3d+-0x1bd6);
var S=h[e];
if(a0y['sudkJi']===undefined){
// Complex string decryption process
The malware includes its own deobfuscation function that dynamically decrypts strings and function calls at runtime.
How the Malware Spreads
Initial Infection Vectors:
- Vulnerable Plugins: Exploiting outdated WordPress plugins
- Weak Credentials: Brute force attacks on admin accounts
- File Upload Vulnerabilities: Through unprotected upload forms
- FTP Compromise: Weak FTP credentials in cPanel environments
Propagation Method:
Once inside, the malware:
- Scans for all
.js
files in the web directory - Injects itself at the beginning of each file
- Maintains a persistent presence across updates
- Creates backup copies in hidden directories
Identifying the Infection
Common Symptoms:
- Unexpected redirects to suspicious websites
- Slow website loading times
- Unknown JavaScript files in your directories
- Presence of obfuscated code in legitimate JS files
- SEO spam or malicious ads appearing on your site
Detection Command:
# Search for the malware signature in all JS files
grep -r "if(typeof cqxq" /path/to/your/website/
File Analysis:
# Find all recently modified JS files
find /path/to/website -name "*.js" -mtime -7 -exec ls -la {} \;
Complete Removal Process
Step 1: Immediate Response
# Take site offline temporarily
# Change all passwords (cPanel, WordPress admin, FTP, database)
# Create a complete backup before cleanup
Step 2: Download Website Files
The most effective way to clean this malware is to work locally:
- Download all website files via FTP, cPanel File Manager, or hosting control panel
- Create a local backup before making any changes
- Use VS Code for bulk cleaning (most reliable method)
Step 3: VS Code Cleaning Method (Recommended)
This is the best and most thorough approach for cleaning this malware:
3.1 Open Project in VS Code
# Download your website files locally
# Open the entire website folder in VS Code
code /path/to/downloaded/website-files
3.2 Use Global Search & Replace
- Press
Ctrl+Shift+H
(Windows/Linux) orCmd+Shift+H
(Mac) to open Find and Replace - Click the “Replace in Files” option (the folder icon)
- Search for the malware pattern:
if(typeof cqxq==="undefined"){
3.3 Advanced Search Pattern
For more comprehensive cleaning, use this regex pattern in VS Code:
if\(typeof cqxq===["']undefined["']\)\{[\s\S]*?\}\(\)\);
Settings for VS Code search:
- ✅ Enable “Use Regular Expression” (the
.*
icon) - ✅ Enable “Case Sensitive” if needed
- Replace with: (leave empty)
- Files to include:
*.js
3.4 Step-by-Step VS Code Cleaning:
- Open Find and Replace (
Ctrl+Shift+H
) - Enter the malicious code
- Leave replacement field empty
- Click “Replace All” button
- VS Code will show you all matches across all files
- Review the matches to ensure they’re malware (not legitimate code)
- Confirm replacement to remove all instances
Step 4: Manual Verification
After bulk replacement, manually check some files:
// Look for any remaining suspicious patterns:
// - Obfuscated function names (a0y, a0W, etc.)
// - Heavy mathematical operations in hexadecimal
// - XMLHttpRequest implementations with random tokens
// - Base64 encoded strings
Step 5: Additional Cleaning Patterns
Search and replace these additional patterns in VS Code:
Pattern 1: Function declarations
Search: function a0y\([\s\S]*?\}
Replace: (empty)
Pattern 2: Variable declarations
Search: var cqxq=!!.*?;
Replace: (empty)
Pattern 3: Obfuscated arrays
Search: function a0W\(\)\{[\s\S]*?\}
Replace: (empty)
Step 5: Security Hardening
# .htaccess rules to prevent future infections
<Files "*.js">
Order Allow,Deny
Allow from all
<FilesMatch "\.(php|phtml|php3|php4|php5|pl|py|jsp|asp|aspx|sh)$">
Deny from all
</FilesMatch>
</Files>
# Prevent access to sensitive files
<Files ~ "^\.">
Order allow,deny
Deny from all
</Files>
Prevention Strategies
1. Regular Updates
- Keep WordPress core, themes, and plugins updated
- Update Node.js and npm packages regularly
- Monitor security advisories
2. Strong Access Controls
# Limit login attempts
<Location "/wp-admin">
AuthType Basic
AuthName "Admin Area"
Require valid-user
</Location>
3. File Integrity Monitoring
# Set up file integrity monitoring
find /public_html -type f -name "*.js" -exec md5sum {} \; > js_hashes.txt
4. Security Headers
# Add security headers
Header always set X-Content-Type-Options nosniff
Header always set X-Frame-Options DENY
Header always set X-XSS-Protection "1; mode=block"
Header always set Content-Security-Policy "script-src 'self'"
What Makes This Malware Dangerous?
1. Advanced Obfuscation
Over 25% of malicious JavaScript uses obfuscation techniques, making this malware particularly challenging to detect and remove.
2. Persistence Mechanisms
The malware creates multiple infection points, making complete removal difficult without proper tools and expertise.
3. Data Harvesting Capabilities
The C2 communication allows attackers to:
- Steal sensitive user data
- Inject additional malware
- Use your site for SEO spam
- Launch attacks on other websites
Professional Removal Services
If you’re dealing with this infection, consider professional help. Malware campaigns have become increasingly sophisticated, switching between different techniques to maintain persistence.
For comprehensive malware removal services, including this specific JavaScript malware, visit: WordPress Malware Removal Service
Conclusion
This JavaScript malware represents a significant threat to WordPress and Node.js websites, particularly those hosted on cPanel environments. Its sophisticated obfuscation and persistence mechanisms make it challenging to remove without proper expertise.
Key takeaways:
- Regular monitoring and updates are essential
- Professional removal may be necessary for complete cleanup
- Implement proper security measures to prevent reinfection
- Always maintain current backups of your website
Stay vigilant and keep your websites secure. If you suspect an infection, act quickly to minimize damage and protect your visitors’ data.
Need Help? If you’re struggling with this malware infection, don’t hesitate to seek professional assistance. Quick action can prevent further damage and protect your website’s reputation.