Detect N-able N-central Pre-Authentication Static Code Injection RCE (CVE-2026-86218) in Splunk
Detects exploitation of CVE-2026-86218, a pre-authentication remote code execution vulnerability in N-able N-central caused by static code injection (CWE-96) where attacker-controlled input is evaluated as code by the N-central server. Listed in CISA KEV. This detection looks for anomalous unauthenticated requests to N-central web endpoints followed by child-process spawns from the N-central application/Apache/Java service accounts, injected payload markers in HTTP request bodies, and web-server processes launching shells or interpreters — the hallmarks of code-injection RCE against an Internet-exposed RMM server.
MITRE ATT&CK
- Tactic
- Initial Access Execution
SPL Detection Query
index=* (sourcetype="linux:audit" OR sourcetype="WinEventLog:Security" OR sourcetype="Sysmon" OR sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational")
| eval parent=lower(coalesce(parent_process_name,ParentImage,pproc))
| eval child=lower(coalesce(process_name,Image,proc))
| where (like(parent,"%java%") OR like(parent,"%httpd%") OR like(parent,"%apache2%") OR like(parent,"%tomcat%") OR like(parent,"%catalina%"))
| where (like(child,"%sh") OR like(child,"%bash%") OR like(child,"%cmd.exe%") OR like(child,"%powershell%") OR like(child,"%python%") OR like(child,"%perl%") OR like(child,"%curl%") OR like(child,"%wget%") OR like(child,"%whoami%"))
| stats count min(_time) as firstTime max(_time) as lastTime values(child) as children values(process) as cmdlines by host parent user
| convert ctime(firstTime) ctime(lastTime)
| sort - count Detects N-central web/app-tier processes (Java, Tomcat, Apache) spawning shells or living-off-the-land binaries on the appliance, consistent with post-injection command execution.
Data Sources
Required Sourcetypes
False Positives & Tuning
- N-central upgrade/hotfix routines that legitimately invoke shell helpers from the service account
- Approved administrative troubleshooting sessions on the appliance
- Third-party monitoring integrations that spawn interpreters
Other platforms for CVE-2026-86218
Testing Methodology
Validate this detection against 3 adversary techniques from Atomic Red Team. Each test below lists the behaviour to exercise and the telemetry you should expect to see. Executable commands and cleanup steps are available with Pro.
- Test 1Simulate Java app-tier spawning a shell (Linux)
Expected signal: Process-creation event with parent named 'java' spawning /bin/bash executing id/whoami.
- Test 2Simulate web-tier reverse-shell attempt (Linux)
Expected signal: Network-connection event from a tomcat-named process to port 4444.
- Test 3Simulate Tomcat spawning PowerShell (Windows)
Expected signal: ProcessRollup2/Sysmon EventID 1 showing tomcat9.exe parent launching powershell.exe running whoami.
References (4)
- https://status.n-able.com/2026/09/06/n-central-2026-3-hotfix-4-cve-2026-86218/
- https://me.n-able.com/s/security-advisory/aArVy0000002Ld3KAE/cve202686218-preauthentication-remote-code-execution
- https://www.cisa.gov/news-events/directives/bod-26-04-prioritizing-security-updates-based-risk
- https://nvd.nist.gov/vuln/detail/CVE-2026-86218
Response Playbook
Triage
- Confirm the N-central version and hotfix level on the affected appliance; determine whether it is patched to 2026.3 Hotfix 4 or later per the N-able advisory for CVE-2026-86218.
- Determine whether the N-central web interface is Internet-exposed and review web-server/reverse-proxy logs for anomalous unauthenticated POST requests immediately preceding the flagged child-process spawn.
- Correlate the parent Java/Tomcat/Apache process and its spawned child (shell/interpreter/LOLBin), capturing full command lines, executing user, and timestamps to establish whether execution was operator-driven or injected.
- Check for new or modified files (webshells, cron entries, systemd units) written by the N-central service account around the event time.
Containment
- Isolate the N-central appliance from the network (or restrict inbound to management IPs only) to halt further pre-auth exploitation and any active reverse shell.
- Apply N-able N-central 2026.3 Hotfix 4 (or the vendor-directed fixed release) addressing CVE-2026-86218; if patching must wait, place the web interface behind VPN/allow-list access.
- Rotate N-central service credentials, agent registration tokens, and any managed-endpoint secrets reachable from the compromised RMM server.
Evidence Collection
- Preserve web-server/reverse-proxy access and error logs, the Tomcat/Java application logs, and auditd/Sysmon process-creation records covering the exploitation window.
- Capture a forensic image or at minimum the process memory of the running Java service and copies of any dropped payloads/webshells before remediation.
- Export EDR process-tree and network-connection telemetry for the parent app process and all descendant processes.
Escalation Criteria
- !Escalate to incident response if a child shell, reverse-shell connection, dropped webshell, or persistence artifact is confirmed on the appliance.
- !Escalate to major-incident/customer-notification if the compromised N-central server pushed commands or scripts to downstream managed endpoints, indicating supply-chain-style spread through the RMM.
Investigation Guide
Related Techniques
Forensic Artifacts
- >
Tomcat/Java application and web-server access logs showing the malicious unauthenticated request - >
Process-creation records (auditd/Sysmon/EDR) linking the app-tier parent to shell children - >
Newly written files in N-central web directories or service-account-owned paths (potential webshells) - >
Outbound connection logs from the Java service to attacker infrastructure
Tuning Guidance
Baseline the legitimate shell/helper invocations produced by N-central's own upgrade and maintenance routines from the service account, then exclude those specific parent-child command-line patterns. Restrict the parent-process list to the actual JVM/web binaries on your appliance and scope by the known N-central host(s) to cut noise. Alert with high urgency when the child process is an interactive shell, network utility, or connects outbound to an uncommon port shortly after an unauthenticated web request.
Hunting Queries
Hunt for N-central application-tier processes spawning shells or download utilities across the estate, grouped by host and account.
DeviceProcessEvents | where InitiatingProcessFileName in~ ("java","java.exe","httpd","apache2","tomcat9.exe") | where FileName in~ ("sh","bash","cmd.exe","powershell.exe","python","python3","curl","wget","nc","whoami") | summarize count() by DeviceName, InitiatingProcessAccountName, FileName, ProcessCommandLine, bin(Timestamp, 1h) index=* (sourcetype=linux:audit OR sourcetype=Sysmon) | eval p=lower(coalesce(parent_process_name,ParentImage)), c=lower(coalesce(process_name,Image)) | where (like(p,"%java%") OR like(p,"%tomcat%") OR like(p,"%apache2%")) AND (like(c,"%sh") OR like(c,"%python%") OR like(c,"%curl%") OR like(c,"%wget%")) | stats count by host,user,c Atomic Red Team Tests
Emulates an N-central Java/Tomcat process spawning a shell as would occur after static code injection, generating parent-child process telemetry.
Command
cp /usr/bin/sleep /tmp/java && /tmp/java 1 & sleep 0.2; /bin/bash -c 'id; whoami' Cleanup
rm -f /tmp/java Expected Telemetry
Process-creation event with parent named 'java' spawning /bin/bash executing id/whoami.
Expected Detection
The KQL/SPL/EQL rules match a java parent spawning bash running whoami/id.
Emulates an injected payload opening an outbound connection from the app tier to a listener on a common reverse-shell port.
Command
cp /usr/bin/bash /tmp/tomcat 2>/dev/null; /tmp/tomcat -c 'exec 3<>/dev/tcp/127.0.0.1/4444; echo test >&3' 2>/dev/null || true Cleanup
rm -f /tmp/tomcat Expected Telemetry
Network-connection event from a tomcat-named process to port 4444.
Expected Detection
DeviceNetworkEvents / SPL network stanza flags app-tier process connecting to reverse-shell port 4444.
Emulates a Windows-hosted N-central web process launching PowerShell to run reconnaissance, as after code-injection RCE.
Command
copy C:\Windows\System32\cmd.exe %TEMP%\tomcat9.exe >nul & %TEMP%\tomcat9.exe /c "powershell -Command whoami" Cleanup
del %TEMP%\tomcat9.exe Expected Telemetry
ProcessRollup2/Sysmon EventID 1 showing tomcat9.exe parent launching powershell.exe running whoami.
Expected Detection
KQL, CQL, and EQL rules match a tomcat/w3wp parent spawning powershell/cmd.