CISA just updated its malware analysis report on RESURGE — and the finding is alarming: this implant can remain dormant and undetected on Ivanti Connect Secure devices, silently waiting for its operators to reconnect.
If your organization runs Ivanti Connect Secure, Policy Secure, or ZTA Gateways, this is a must-read.
What Is RESURGE?
RESURGE is a sophisticated Linux implant that combines the capabilities of a rootkit, backdoor, bootkit, dropper, proxy, and tunneler — all in a single shared library (libdsupgrade.so). It was discovered on a critical infrastructure entity's Ivanti Connect Secure device after exploitation of CVE-2025-0282, a stack-based buffer overflow enabling remote code execution.
RESURGE is the evolution of the SPAWNCHIMERA malware family, which itself consolidated four earlier tools: SPAWNANT, SPAWNMOLE, SPAWNSNAIL, and SPAWNSLOTH. RESURGE adds three entirely new command sets that its predecessors lacked.
Attribution: UNC5337 (China-nexus espionage) and Silk Typhoon (formerly Hafnium).
Why RESURGE Is Dangerous: The Dormancy Problem
CISA's updated analysis (February 26, 2026) reveals the critical finding: RESURGE uses a passive C2 model. Instead of beaconing out to a server (which network monitoring would catch), it:
- Hooks the
accept()function in Ivanti's web process - Inspects every incoming TLS connection
- Computes a CRC32 fingerprint of the TLS ClientHello random field
- If the fingerprint matches → routes to malicious handler
- If not → forwards to legitimate Ivanti server transparently
This means RESURGE generates zero outbound C2 traffic. It sits dormant until an operator connects to the device's normal HTTPS port with a specially crafted TLS handshake. Standard network monitoring sees nothing.
Technical Deep-Dive
The TLS Authentication Trick
RESURGE's operator authentication is remarkably sophisticated:
- ClientHello fingerprint: CRC32 hash of the final 28 bytes in the TLS random field, byte-swapped, compared against the first 4 bytes
-
ServerHello spoofing: Responds with a forged Ivanti certificate (
CN: va1.Ivanti.net, issued Jul 15 2024) - Mutual TLS: Establishes encrypted channel using P-521 ECC with hardcoded keys
- SSH tunnel: Embeds a statically-linked libssh server for interactive access
All of this happens over the device's legitimate HTTPS port — no extra ports, no suspicious connections.
Three Command Sets
Command Set 1 — System Persistence:
- Injects into
ld.so.preloadfor automatic loading - Generates RSA-2048 keys for SSH access
- Deploys web shell at
compcheckresult.cgi - Modifies system manifests with valid SHA-256 checksums
- Disables integrity verification in
check_integrity.sh
Command Set 2 — Bootkit (Survives Factory Reset):
- Extracts vmlinux from kernel images
- Decrypts and decompresses the coreboot RAM disk
- Injects malware into boot initialization
- Re-encrypts the modified filesystem
- Persists across reboots and system updates
Command Set 3 — Scanner Evasion:
- Patches
scanner.pyandscanner_legacy.py - Replaces mismatch detection counters with
passstatements - Disables Ivanti's built-in integrity checking
Associated Malware
| Component | File | Purpose |
|---|---|---|
| RESURGE |
libdsupgrade.so (1.4MB) |
Main implant — rootkit + backdoor + bootkit |
| SPAWNSLOTH |
liblogblock.so (95KB) |
Log tampering — hooks dslogserver
|
| BusyBox binary |
dsmain (5.1MB) |
Utility — kernel extraction, AES crypto, shell |
Indicators of Compromise
File Hashes (SHA-256)
| Hash | File | Description |
|---|---|---|
52bbc44eb451cb5e16bf98bc5b1823d2f47a18d71f14543b460395a1c1b1aeda |
libdsupgrade.so | RESURGE backdoor |
3526af9189533470bc0e90d54bafb0db7bda784be82a372ce112e361f7c7b104 |
liblogblock.so | SPAWNSLOTH log tamper |
b1221000f43734436ec8022caaa34b133f4581ca3ae8eccd8d57ea62573f301d |
dsmain | BusyBox utility |
File System Indicators
/home/runtime/tmp/.logsrv # RESURGE IPC socket
/tmp/.liblogblock.so # SPAWNSLOTH staging
/tmp/data/ # Temporary workspace
Modified: ld.so.preload # Library injection
Modified: scanner.py # Integrity check disabled
Modified: check_integrity.sh # Verification bypass
Web shell: compcheckresult.cgi # Remote access
Network Indicators
- Forged TLS certificate with
CN: va1.Ivanti.net - P-521 ECC certificate exchanges on HTTPS port
- CRC32-based TLS ClientHello fingerprinting
MITRE ATT&CK Mapping
| Technique | ID | Usage |
|---|---|---|
| Boot Initialization Scripts | T1547.013 |
ld.so.preload injection |
| Supply Chain: Compromised Software | T1195.002 | CVE-2025-0282 exploitation |
| Modify Authentication Process | T1556 | CRC32 TLS fingerprinting |
| Remote Services: SSH | T1021.004 | Embedded libssh server |
| Indicator Removal: Clear Logs | T1070.001 | SPAWNSLOTH log tampering |
| Proxy | T1090.001 | Traffic proxying via .logsrv socket |
| Deobfuscation | T1140 | AES decryption of coreboot RAM disk |
| Network Sniffing | T1040 | TLS packet inspection |
Detection & Hunting
YARA Rules (CISA-provided)
-
CISA_25993211_01— RESURGE detection -
CISA_25993211_02— SPAWNSLOTH detection -
CISA_25239228_04— SPAWNSNAIL detection
Sigma Rule — RESURGE Persistence
title: RESURGE Ivanti Implant - ld.so.preload Injection
status: experimental
logsource:
category: file_event
product: linux
detection:
selection:
TargetFilename:
- '/etc/ld.so.preload'
- '/home/runtime/tmp/.logsrv'
selection_web_shell:
TargetFilename|endswith: 'compcheckresult.cgi'
condition: selection or selection_web_shell
level: critical
tags:
- attack.persistence
- attack.t1547.013
- attack.t1505.003
Network Detection
title: RESURGE Forged Ivanti TLS Certificate
status: experimental
logsource:
category: proxy
detection:
selection:
tls.server.subject.cn: 'va1.Ivanti.net'
tls.server.not_before: '2024-07-15*'
condition: selection
level: critical
tags:
- attack.command_and_control
- attack.t1556
Remediation Steps
- Immediately scan all Ivanti Connect Secure devices for the IOCs listed above
- Check for the
.logsrvsocket file and modifiedld.so.preload - Verify
scanner.pyhasn't been patched to disable integrity checks - Do NOT trust factory resets — RESURGE's bootkit survives them
- Restore from known-clean firmware images
- Reset ALL credentials (domain and local accounts)
- Rotate certificates and access keys
- Monitor for forged
va1.Ivanti.netTLS certificates
Affected versions: Ivanti Connect Secure < 22.7R2.5, Policy Secure < 22.7R1.2, Neurons for ZTA < 22.7R2.3
Running Ivanti VPN appliances? Find out if you're exposed with a free penetration test — currently in open beta.
References:
Top comments (0)