VOIDLINK
ITW UTC --:--:--

VoidLink threat dossier

Threat dossier // cloud-native linux malware

A field guide to VoidLink, a modular Zig-based post-exploitation framework built for Linux cloud and container estates. It covers how VoidLink works, who has been using it, and how to find it. The framework was first described as an unfinished project. It has since been tied to real intrusions.

status
In the wild (Cisco Talos)
operator
UAT-9921 (Talos; timeline disputed)
platform
Linux cloud & containers; Windows build indicated
language
Zig core · C · Go
disclosed
2026-01-13 · Check Point Research
updated
2026-09-25 · dossier v2.0

analyst@voidlink:~/dossier$ cat 01_overview.md

01Executive Summary

A cloud-native Linux malware framework, now confirmed in the wild

[!] STATUS
The January assessment of "no confirmed real-world infections" no longer holds. Cisco Talos reports victims in technology and financial services dating back to September 2025. Elastic Security Labs found operator scripts pointing at real infrastructure.

VoidLink is a modular command-and-control framework written mainly in Zig. It is built for long-term, quiet access to Linux servers in public clouds and container platforms. Check Point Research found it in December 2025 and published it on 13 January 2026. At the time it looked like work in progress: debug symbols, fast-changing builds and no known victims.

Since then, Cisco Talos has linked VoidLink to intrusions by an actor it tracks as UAT-9921. Check Point says it cannot independently verify Talos's timeline. Elastic Security Labs analysed a leaked dump of the rootkit source and found four generations of kernel rootkit. VoidLink is also the best-documented case so far of an advanced framework built largely by one developer driving an AI coding agent.

35+Modular plugins
88KLines of code
<7Days to working build
5Clouds fingerprinted
4Rootkit generations
ITWSince Sep 2025
git diff dossier-v1.0..dossier-v2.0 --stat
--- v1.0  2026-01-31
+++ v2.0  2026-09-25
- No confirmed real-world infections as of January 2026
+ In the wild: victims in tech & finance, Sep 2025 → Jan 2026   (Cisco Talos)
+ Operator named UAT-9921; Check Point disputes the timeline     (Talos / THN)
+ Leaked rootkit source: 4 kernel-rootkit generations           (Elastic)
+ Windows build of the core implant indicated; RBAC in the C2    (Talos)
+ New IoCs: 2 C2 IPs, rootkit sample, 7 host artifacts           (Elastic / Ontinue)
+ Vendor detections: Snort, ClamAV, YARA, Splunk                 (various)
~ Rewrote Falco + auditd rules (old eBPF rule matched the wrong syscall)
~ All 7 Check Point implant hashes listed (v1.0 page showed 3)

Key characteristics

Linux cloud

Target platform

Linux servers in public clouds and containerised workloads. Talos has also seen signs of a Windows build.

Zig + Go + C

Languages

Core implant in Zig. C for the "arsenal" (rootkits, plugins). Go for the backend.

Plugin system

Architecture

Modular plugin API modelled on Cobalt Strike's Beacon Object Files.

Multi-cloud

Cloud focus

Detects and adapts to AWS, GCP, Azure, Alibaba Cloud and Tencent Cloud.

Persistence

Purpose

Long-term access, surveillance, credential theft and pivoting through cloud estates.

AI-built

Development

Built by one developer directing an AI coding agent from written specifications.

analyst@voidlink:~/dossier$ tail -n 50 02_timeline.log

02Timeline

From first victims to public research, Sep 2025 → Sep 2026

  1. Earliest VoidLink-related victims, according to Talos, which believes this was still version 1.0. Check Point says it has seen no evidence of use this early.
    Cisco Talos
  2. Development of the documented build starts (late November), per the developer's own planning files.
    Check Point Research
  3. Working implant with 88K+ lines of code within a week (4 Dec test build). Check Point then finds a cluster of unfamiliar Linux samples that still contain debug symbols.
    Check Point Research
  4. Public disclosure: "VoidLink: The Cloud-Native Malware Framework".
    Check Point Research
  5. Elastic ships YARA rules Linux_Trojan_VoidLink_*.
    Elastic protections-artifacts
  6. Sysdig describes server-side rootkit compilation: the C2 builds kernel modules for each victim's kernel.
    Sysdig TRT
  7. Reports that the framework was written almost entirely by an AI agent.
    Check Point Research · The Register
  8. Splunk publishes the "VoidLink Cloud-Native Linux Malware" analytic story.
    Splunk Threat Research
  9. Implant teardown: "not a proof of concept". Hard-coded C2 8.149.128[.]10.
    Ontinue
  10. Talos names UAT-9921 and reports victims in technology and finance, a Windows build, and role-based access control in the C2.
    Cisco Talos
  11. Check Point "cannot independently verify" the September 2025 start date or the actor's activity since 2019.
    The Hacker News
  12. Elastic YARA rule Linux_Rootkit_VoidLink_243306b5.
    Elastic protections-artifacts
  13. "Illuminating VoidLink": analysis of leaked rootkit source, binaries and deployment scripts. Evidence of operational use.
    Elastic Security Labs
  14. No new primary research found. No government advisory. No MITRE ATT&CK software entry.
    Checked 2026-09-25

analyst@voidlink:~/dossier$ cat 03_architecture.md

03Technical Architecture

Multi-stage loader with fileless execution

Component Role
stage0 Dropper: forks, renames itself [kworker/0:0], prepares Stage 1
stage1 Fetches the implant over HTTP into a memfd, so nothing is written to disk
core Orchestrator: state, comms, task execution
plugins BOF-style modular API, 35–37 plugins
rootkits LD_PRELOAD, LKM and eBPF concealment
c2 panel Chinese-localised web console with role-based access
win32? Talos found "clear indications" the core was also built for Windows, loading plugins by DLL sideloading. No public sample.
execution flow
stage0 ─► fork() ─► prctl rename "[kworker/0:0]" ─► memfd_create()
       ─► HTTP GET stage1 ─► execveat(memfd)   # payload never touches disk
[i] NOTE
Because the payload lives only in memory, disk forensics and signature scanning miss it. Capture memory before you reboot or reimage a suspect host.

analyst@voidlink:~/dossier$ cat 04_cloud.md

04Cloud & Container Awareness

Fingerprints the provider and runtime, then changes behaviour to suit

Provider Method Status
AWS Instance metadata 169.254.169.254 active
Google Cloud Metadata server active
Microsoft Azure IMDS endpoint active
Alibaba Cloud Metadata 100.100.100.200 active
Tencent Cloud Metadata service active
Huawei · DigitalOcean · Vultr Listed as planned; no support observed as of Sep 2026 planned

Runtime detection

Docker

Detects container runtimes and adjusts behaviour.

Kubernetes

Identifies pod context for cluster-level discovery and privilege escalation.

Bare metal / VM

Unlocks the full capability set on hosts that are not containerised.

Container-specific capabilities

  • Kubernetes and Docker enumeration
  • Automated container-escape attempts
  • Service-account token harvesting
  • Secret extraction from orchestrators
  • Privilege escalation via misconfigurations
  • Cloud metadata harvesting from pods

analyst@voidlink:~/dossier$ cat 05_rootkits.md

05Rootkit Mechanisms

Picks a rootkit to match the kernel; four generations recovered from leaked source

Kernel Type Method
< 4.0 ld_preload User-space library injection via /etc/ld.so.preload
4.x – 5.4 lkm Loadable kernel module
≥ 5.5 ebpf eBPF programs attached to kernel hooks
6.x+ ebpf / src Modules compiled by the C2 for the victim's exact kernel
LD_PRELOAD rootkit
  • Hijacks dynamic-linker preloading via /etc/ld.so.preload
  • Intercepts libc calls to hide files, processes and sockets
  • Works on old kernels without kernel-level access
LKM rootkit
  • Unlinks itself from /proc/modules and /sys/module
  • Hooks getdents to hide processes and files; manipulates VFS operations
  • Hides sockets from netstat via a kretprobe on tcp4_seq_show
  • Spoofs the in-tree flag to look legitimate
eBPF rootkit
  • Hides sockets from ss by rewriting NETLINK_SOCK_DIAG replies in recvmsg
  • Uses a kprobe-registration trick to work around the Linux 5.7+ restriction on kallsyms_lookup_name
  • Source comment: ss 命令隐藏由 eBPF 模块实现 (更稳定), meaning "ss hiding is done by the eBPF module (more stable)"
Server-side rootkit compilation (Sysdig)

The C2 compiles kernel modules for the victim's exact kernel on request and serves them from /compile endpoints. This removes the usual problem of LKMs breaking across kernel versions.

Elastic analysed a dump containing source code, compiled binaries and deployment scripts for VoidLink's kernel rootkits. It found at least four generations:

Gen Artifact Target Notes
1 stealth_centos7_v2.c CentOS 7 · kernel 3.10 Hooks the syscall table directly
2 stealth_kernel5x.c Kernel 5.x ftrace / kprobe hooking
3 kernel5x_new/, lkm_5x/ Kernel 5.x Production-ready variants
4 "Ultimate Stealth v5" Modern kernels Delayed start, anti-debug timers, XOR-obfuscated names
  • Module name vl_stealth, or amd_mem_encrypt in some variants
  • Hybrid LKM + eBPF design; eBPF map pinned at /sys/fs/bpf/vl_hide_tcp
  • Defaults: ICMP magic 0xC0DE, XOR key 0x42, hidden port 8080

analyst@voidlink:~/dossier$ cat 06_c2.md

06Command & Control

Several transports, with traffic dressed up as ordinary web content

Protocol Role Stealth
HTTP/HTTPS Primary Looks like ordinary web and API traffic
HTTP/2 Performance Multiplexed connections
WebSocket Real-time Persistent bidirectional session
DNS tunnelling Covert Data encoded in queries/responses
ICMP Fallback Echo requests with magic ID 0xC0DE
P2P / mesh Relay Infected hosts relay traffic for each other

Traffic concealment

  • Encrypted data inside PNG images
  • Payloads hidden in JS/HTML/CSS
  • Slow 10-minute beacon observed

Operator console

  • Chinese-localised web UI
  • Agent manager + built-in terminal
  • Implant generator with evasion tuning
new

Role-based access (Talos)

  • SuperAdmin
  • Operator
  • Viewer

Roles suggest several operators share one C2.

analyst@voidlink:~/dossier$ ls ./plugins | wc -l # 35–37

07Plugin Ecosystem

35–37 modules; direct syscalls get around libc hooks

Reconnaissance

  • Kernel, hypervisor, process and network enumeration
  • Users, groups and services
  • Kubernetes resources and internal topology

Credential harvesting

  • SSH keys, Git credentials
  • API tokens, cloud secrets, env vars
  • Browser cookies, keyrings

Cloud & container

  • Container escape
  • Kubernetes privilege escalation
  • Metadata harvesting

Lateral movement

  • SSH-based worming
  • Port forwarding and tunnelling
  • Remote execution

Persistence

  • LD_PRELOAD abuse
  • cron and systemd units
  • Process injection

Anti-forensics

  • Keyword-based log wiping
  • History and login-record cleaning
  • Timestomping, secure overwrite

analyst@voidlink:~/dossier$ cat 08_evasion.md

08Evasion & Anti-Analysis

Scores how risky the environment is, then sets its operating tempo

Adaptive OPSEC

Computes a risk score for the host:

  • High risk: slower scans, longer beacons, stealth first
  • Low risk: aggressive recon, faster tempo

Security-product discovery

  • Linux EDR / XDR agents
  • Kernel hardening; Falco, Sysdig
  • Debuggers and sandboxes
Mechanism Effect
Runtime code encryption Decrypts regions only while in use, then re-encrypts
Self-modifying code Defeats memory scanners
Debugger detection Spots analysis environments
Integrity checks Detects hooks and tampering
Self-destruct Wipes history, logins and logs, overwrites its files, then exits

analyst@voidlink:~/dossier$ cat 09_ai_dev.md

09AI-Generated Development

One developer, an AI coding agent, and a spec-first workflow

[>] QUOTE
"VoidLink demonstrates that the long-awaited era of sophisticated AI-generated malware has likely begun." (Check Point Research)
30Week plan
<7Days to working build
88KLines of code
1Suspected developer

The developer used spec-driven development. They wrote detailed specifications and a work plan, split across three notional teams (Core/Zig, Arsenal/C, Backend/Go). They then had the agent in TRAE SOLO, part of ByteDance's TRAE IDE, write the code. A plan scheduled for 30 weeks produced a working implant in under a week. A test build from 4 December 2025 already held more than 88,000 lines of code. Check Point says the planning documents "bear all the hallmarks of a large language model".

Talos notes that the documents Check Point saw describe version 2.0. It believes version 1.0 was already in use earlier. Ontinue's teardown concluded: "VoidLink is not a proof of concept."

analyst@voidlink:~/dossier$ cat 10_in_the_wild.md

10In the Wild & Attribution

UAT-9921, the victims, and a disputed timeline

[!] ITW
Talos (10 Feb 2026) reports "multiple VoidLink-related victims dating back to September with the activity continuing through to January 2026." It gives no victim count.

Targeting

  • Mainly technology, some financial services
  • Active since at least 2019, medium confidence (not necessarily with VoidLink)
  • Knows Chinese, judging by the framework, code comments and planning

Tradecraft

  • Initial access: previously stolen credentials, or Java deserialisation RCE (notably Apache Dubbo)
  • Installs VoidLink C2 on compromised hosts and scans onward from them
  • A SOCKS server and FSCAN for internal reconnaissance
  • Operators have source code for some modules
disputed

Check Point's response

"We have not observed evidence of VoidLink being used as of September 2025 and threat actor activity since 2019 … we cannot independently verify activity outside of the datasets and sources available to us." (via The Hacker News, 13 Feb 2026)

operational

Elastic's evidence

Operator scripts in the leaked dump name real Alibaba Cloud infrastructure. Elastic reads this as VoidLink "being used operationally against targets accessible from Chinese cloud infrastructure."

Chinese-affiliation indicators

  • Chinese-localised C2 console
  • Chinese source comments and planning docs
  • Malpedia links elf.voidlink to UAT-9921

Business model: still open

  • No evidence it is sold (Talos)
  • Leak origin unknown (Elastic)
  • No law-enforcement action or government advisory reported

analyst@voidlink:~/dossier$ cat 11_iocs.txt

11Indicators of Compromise

Hashes cross-checked against the vendors' published lists (Sep 2026)

File hashes (SHA-256)
sha256 · 10 samples
# Stage 0 loader (Check Point)
70aa5b3516d331e9d1876f3b8994fc8c18e2b1b9f15096e6c790de8cdadb3fc9

# Stage 1 loader (Check Point)
13025f83ee515b299632d267f94b37c71115b22447a0425ac7baed4bf60b95cd

# Core implants (Check Point)
05eac3663d47a29da0d32f67e10d161f831138e10958dcd88b9dc97038948f69
15cb93d38b0a4bd931434a501d8308739326ce482da5158eb657b0af0fa7ba49
6850788b9c76042e0e29a318f65fceb574083ed3ec39a34bc64a1292f4586b41
6dcfe9f66d3aef1efd7007c588a59f69e5cd61b7a8eca1fb89a84b8ccef13a2b
28c4a4df27f7ce8ced69476cc7923cf56625928a7b4530bc7b484eec67fe3943
e990a39e479e0750d2320735444b6c86cc26822d86a40d37d6e163d0fe058896
4c4201cc1278da615bacf48deef461bf26c343f8cbb2d8596788b41829a39f3f

# Kernel rootkit (Elastic YARA Linux_Rootkit_VoidLink_243306b5 reference sample)
8bce8daacaaa546a8fc77f484d776560a28dfb024e3b7aa7c6b322c7c5716ac5
Network indicators
ipv4 · defanged
# Alibaba Cloud: named in operator scripts (Elastic); first is Ontinue's hard-coded C2
8.149.128[.]10
116.62.172[.]147
  • ICMP echo with magic ID 0xC0DE
  • Requests to /compile endpoints (server-side rootkit build)
  • Metadata endpoints (169.254.169.254, 100.100.100.200) queried by unexpected processes
  • DGA-style domains; HTTP traffic that only imitates normal web requests

Infrastructure IoCs go stale fast. Treat these IPs as historical and check them before blocking.

Host artifacts
Artifact Context
[kworker/0:0] Stage 0 process name. A real kworker is a kernel thread (parent PID 2, no executable)
vl_stealth.ko Rootkit module name (Elastic)
amd_mem_encrypt.ko Rootkit masquerade name (Elastic). AMD memory encryption is normally compiled into the kernel, so a loadable module with this name is a red flag
/sys/fs/bpf/vl_hide_tcp Pinned eBPF map for hiding connections (Elastic)
/etc/ld.so.preload Unexpected entries: LD_PRELOAD rootkit
memfd_create → execveat Fileless Stage 1 execution
finit_module from /tmp Kernel module loaded from a temporary path

analyst@voidlink:~/dossier$ cat 12_detection.yml

12Detection & Hunting

Vendor content, plus starter rules to tune for your environment

Source Content
Cisco Talos Snort 2 SIDs 1:65915–65922, 1:65834–65842 · Snort 3 SIDs 1:65915–65922, 1:65834–65838, 1:310388–310389 · ClamAV Unix.Trojan.VoidLink-10059283
Elastic YARA Linux_Trojan_VoidLink_0868fa9d, Linux_Trojan_VoidLink_e4c13c2c, Linux_Rootkit_VoidLink_243306b5; EQL hunts in "Illuminating VoidLink"
Splunk Analytic story "VoidLink Cloud-Native Linux Malware"
Isovalent "Deconstructing VoidLink": runtime-security write-up (Feb 2026)
Ontinue IoC feed on GitHub (ontinue-research/threat-intel-iocs)
Falco: starter rules
yaml · falco ≥ 0.35
- list: voidlink_allowed_bpf_procs
  items: [falco, tetragon, cilium-agent, bpftool, systemd]

- rule: VoidLink - Fileless execution from memfd
  desc: Process executed from an anonymous memfd (Stage 1 memfd_create + execveat)
  condition: spawned_process and proc.is_exe_from_memfd = true
  output: >
    Fileless exec from memfd (proc=%proc.name exe=%proc.exe parent=%proc.pname
    cmdline=%proc.cmdline container=%container.id)
  priority: CRITICAL
  tags: [voidlink, T1620]

- rule: VoidLink - Unexpected bpf() caller
  desc: bpf syscall from a process outside the allowlist (eBPF rootkit load)
  condition: evt.type = bpf and evt.dir = > and not proc.name in (voidlink_allowed_bpf_procs)
  output: "bpf() by unexpected process (proc=%proc.name exe=%proc.exe user=%user.name)"
  priority: WARNING
  tags: [voidlink, T1014]

- rule: VoidLink - Kernel module load
  desc: init_module / finit_module outside of expected tooling
  condition: evt.type in (init_module, finit_module) and not proc.name in (modprobe, insmod, systemd-modules-load)
  output: "Kernel module load (proc=%proc.name exe=%proc.exe cmdline=%proc.cmdline)"
  priority: CRITICAL
  tags: [voidlink, T1547.006]

- rule: VoidLink - ld.so.preload modified
  desc: Write to /etc/ld.so.preload (LD_PRELOAD rootkit persistence)
  condition: open_write and fd.name = /etc/ld.so.preload
  output: "ld.so.preload written (proc=%proc.name exe=%proc.exe user=%user.name)"
  priority: CRITICAL
  tags: [voidlink, T1574.006]

These are starting points. Test them against your baseline and extend the allowlists before alerting on them.

auditd rules
/etc/audit/rules.d/voidlink.rules
# Kernel module loads (LKM rootkit)
-a always,exit -F arch=b64 -S init_module,finit_module -k voidlink_lkm

# eBPF program / map activity (eBPF rootkit); noisy on Cilium/Falco hosts
-a always,exit -F arch=b64 -S bpf -k voidlink_bpf

# Fileless loader
-a always,exit -F arch=b64 -S memfd_create -k voidlink_memfd

# LD_PRELOAD rootkit persistence
-w /etc/ld.so.preload -p wa -k voidlink_preload

v1.0 used setsockopt … a2=26. That catches SO_ATTACH_FILTER (classic socket filters), not eBPF program loads. Hooking the bpf syscall is the correct approach.

Live hunting one-liners
bash · run as root
# 1. Fake kernel threads: real kworkers are children of kthreadd (PID 2) and have no exe
for p in /proc/[0-9]*; do
  c=$(cat "$p/comm" 2>/dev/null) || continue
  case "$c" in kworker*) ;; *) continue ;; esac
  pp=$(awk '/^PPid:/{print $2}' "$p/status" 2>/dev/null)
  [ "$pp" != 2 ] && echo "SUSPECT pid=${p#/proc/} comm=$c ppid=$pp exe=$(readlink "$p/exe")"
done

# 2. Processes running from a memfd (strong signal) or a deleted file (noisy: package upgrades cause it too)
ls -l /proc/[0-9]*/exe 2>/dev/null | grep -E 'memfd:|\(deleted\)'

# 3. VoidLink eBPF pin/map, then review every loaded BPF program by hand
ls -la /sys/fs/bpf/ 2>/dev/null | grep -i vl_
bpftool map show 2>/dev/null | grep -i vl_
bpftool prog show 2>/dev/null

# 4. Known module names (a hidden LKM will NOT appear here)
grep -E '^(vl_stealth|amd_mem_encrypt) ' /proc/modules
find / -xdev \( -name 'vl_stealth*.ko' -o -name 'amd_mem_encrypt*.ko' \) 2>/dev/null

# 5. Preload hijack
[ -s /etc/ld.so.preload ] && cat /etc/ld.so.preload

A kernel rootkit can hide from everything above. Clean results on a host you suspect are not proof it is clean. Use memory forensics (for example LiME + Volatility 3) or inspect it from outside the guest.

analyst@voidlink:~/dossier$ cat 13_mitigation.md

13Mitigation & Defence

Treat VoidLink as a cloud-identity and control-plane risk, not only an endpoint problem

Close the observed entry points

  • crit Patch or firewall exposed Java RPC and deserialisation surfaces (e.g. Apache Dubbo)
  • crit Rotate long-lived credentials; enforce MFA and short-lived tokens
  • Alert on logins from new infrastructure to server accounts

Cloud infrastructure

  • crit Lock down IMDS (require IMDSv2 on AWS; block metadata access from pods)
  • Least-privilege IAM for instance roles
  • Monitor metadata API queries from workloads

Kernel hardening

  • Require signed modules (module.sig_enforce=1) or turn on lockdown mode
  • Set kernel.modules_disabled=1 after boot where possible
  • Set kernel.unprivileged_bpf_disabled=1
  • SELinux or AppArmor in enforcing mode

Kubernetes

  • Block privileged pods (Pod Security "restricted")
  • No Docker/containerd socket mounts
  • Audit service-account RBAC; turn off token automount
  • Default-deny network policies and egress controls

Detection coverage

  • Linux EDR/XDR with kernel and eBPF visibility
  • Runtime sensors (Falco, Tetragon) with the rules above
  • Egress inspection for ICMP/DNS tunnelling

Incident response

  • Capture memory before shutdown
  • Rotate SSH keys, cloud credentials, Kubernetes tokens and API keys
  • Rebuild hosts from known-good images rather than cleaning them in place
  • Check container images and CI for tampering

analyst@voidlink:~/dossier$ jq . 14_attack_map.json

14MITRE ATT&CK Mapping

Analyst mapping. VoidLink has no ATT&CK Software ID as of Sep 2026

Tactic Techniques
Initial Access T1078 Valid Accounts · T1190 Exploit Public-Facing Application
Execution T1059.004 Unix Shell · T1106 Native API
Persistence T1053.003 Cron · T1543.002 Systemd Service · T1574.006 Dynamic Linker Hijacking · T1547.006 Kernel Modules and Extensions
Privilege Escalation T1611 Escape to Host · T1068 Exploitation for Privilege Escalation
Defense Evasion T1014 Rootkit · T1620 Reflective Code Loading · T1036.004 Masquerade Task or Service · T1027 Obfuscated Files or Information · T1497 Virtualization/Sandbox Evasion · T1070.002/.003/.006 Clear Logs / Clear History / Timestomp
Credential Access T1552.001 Credentials in Files · T1552.004 Private Keys · T1552.005 Cloud Instance Metadata API · T1552.007 Container API · T1555 Password Stores · T1539 Steal Web Session Cookie
Discovery T1580 Cloud Infrastructure · T1613 Container and Resource · T1082 System Information · T1518.001 Security Software · T1046 Network Service Discovery
Lateral Movement T1021.004 SSH · T1570 Lateral Tool Transfer
Command & Control T1071.001 Web Protocols · T1071.004 DNS · T1095 Non-Application Layer Protocol (ICMP) · T1001.002 Steganography · T1090 Proxy · T1572 Protocol Tunneling · T1573 Encrypted Channel
Exfiltration T1041 Exfiltration Over C2 Channel

analyst@voidlink:~/dossier$ column -ts, 15_compare.csv

15Threat Comparison

How VoidLink compares with familiar tooling

Feature VoidLink Cobalt Strike perfctl Winnti (Linux)
Platform linux (+Windows build) Windows-first Linux Linux / Windows
Cloud-aware yes 5 providers No No No
Container-aware yes No No No
Plugins 35–37, BOF-style BOFs, large ecosystem Limited Plugin-based
Rootkit LD_PRELOAD + LKM + eBPF None built in User-mode (preload) User-mode (preload)
AI-assisted build yes No No evidence No evidence
In the wild yes since 2025 Widely abused Yes Yes

analyst@voidlink:~/dossier$ cat 16_references.bib

16References

Primary research first, then news coverage

  1. Check Point Research. "VoidLink: The Cloud-Native Malware Framework." 13 Jan 2026. research.checkpoint.com
  2. Check Point Research. "VoidLink: Evidence That the Era of Advanced AI-Generated Malware Has Begun." 20 Jan 2026. research.checkpoint.com
  3. Sysdig TRT. "VoidLink threat analysis: Sysdig discovers C2-compiled kernel rootkits." Jan 2026. sysdig.com
  4. Ontinue. "VoidLink: Dissecting an AI-Generated C2 Implant." 9 Feb 2026 (upd. 6 May 2026). ontinue.com
  5. Cisco Talos. "New threat actor, UAT-9921, leverages VoidLink framework in campaigns." 10 Feb 2026. blog.talosintelligence.com
  6. Isovalent. "Deconstructing VoidLink." 11 Feb 2026. isovalent.com
  7. Elastic Security Labs (R. Groenewoud, R. Sprooten). "Illuminating VoidLink: Technical analysis of the VoidLink rootkit framework." 26 Mar 2026. elastic.co
  8. Elastic. protections-artifacts YARA rules (Linux_Trojan_VoidLink.yar, Linux_Rootkit_VoidLink.yar). github.com
  9. Splunk Threat Research. Analytic story "VoidLink Cloud-Native Linux Malware." 2026. research.splunk.com
  10. Malpedia. elf.voidlink. malpedia.caad.fkie.fraunhofer.de
  1. The Hacker News. "New Advanced Linux VoidLink Malware Targets Cloud and Container Environments." 13 Jan 2026. thehackernews.com
  2. The Hacker News. "UAT-9921 Deploys VoidLink Malware to Target Technology and Financial Sectors." 13 Feb 2026. thehackernews.com
  3. BleepingComputer. "New VoidLink malware framework targets Linux cloud servers." Jan 2026. bleepingcomputer.com
  4. The Register. "An AI wrote VoidLink, the cloud-targeting Linux malware." 20 Jan 2026.
  5. Dark Reading. "Complex VoidLink Linux Malware Created by AI." Jan 2026. darkreading.com
  6. SecurityWeek. "VoidLink Linux Malware Framework Targets Cloud Environments." Jan 2026.
  7. UltraViolet Cyber. "Threat Advisory: VoidLink." Jan 2026.
  8. Integrity360. "VoidLink Linux Malware Framework." Jan 2026.