CVE-2016-3088
Improper Input Validation in Apache ActiveMQ
Description
Response & Mitigation
Why act now?
Prioritisation rationale
CVE-2016-3088 grants unauthenticated remote attackers full code execution on the broker host via a simple two-step HTTP sequence — no credentials, no prior access required. The EPSS score of 98.52 % (99.9th percentile) reflects the high availability of working exploit code and the large installed base of unpatched instances; CISA KEV inclusion confirms real-world exploitation. Organisations running ActiveMQ as production middleware — particularly in NIS2/KRITIS sectors such as energy, transport, or healthcare — face a high-impact scenario where broker compromise can cascade into message manipulation, lateral movement, or full infrastructure takeover. Treat this as critical regardless of the absence of a CISA ransomware flag: patch or disable the Fileserver within 24 hours, and validate compensating controls are in place before that window closes.
Runbook · Step 1
Immediate response (0-24 h)
- Apply the vendor patch: Upgrade Apache ActiveMQ to version 5.14.0 or later. All 5.x releases prior to 5.14.0 are affected — verify the exact artifact version in the Apache release archive (activemq.apache.org/download-archives).
- Disable the Fileserver web application: If an immediate upgrade is not feasible, remove the Fileserver webapp from the ActiveMQ deployment or comment out its handler entry in
conf/jetty.xml. In 5.14.0 the Fileserver is disabled by default — replicate that posture manually on older installs. - Restrict network access to port 8161 and 61616: Firewall-ACL the ActiveMQ admin console (8161/TCP) and broker port (61616/TCP) to authorised management networks only. No direct internet exposure.
- Inspect upload directories immediately: Check
${ACTIVEMQ_HOME}/webapps/fileserver/for unknown files (JSP, WAR, SH, EXE, PHP). Preserve suspicious files for forensics before removal. - Rotate credentials: Reset ActiveMQ admin passwords (
conf/jetty-realm.properties) and all service accounts with broker access.
Runbook · Step 2
Mitigation layers
- WAF / reverse proxy: Block HTTP methods PUT and MOVE on the
/fileserver/*path at the network edge. Nginx example:limit_except GET POST { deny all; }scoped to the fileserver location block. - Network segmentation: Place ActiveMQ brokers in a dedicated broker VLAN; restrict east-west traffic to explicitly enumerated producer/consumer hosts. No direct reachability from DMZ or internet segments.
- IPS signature: Suricata/Snort rule targeting an HTTP PUT followed by MOVE to the same path on port 8161 — example:
alert http any any -> $ACTIVEMQ_SERVERS 8161 (msg:"CVE-2016-3088 ActiveMQ Fileserver PUT+MOVE RCE"; flow:to_server,established; content:"PUT"; http_method; pcre:"/^\/fileserver\//Ui"; sid:2016308801; rev:1;). - Least-privilege process account: Run the ActiveMQ service under a dedicated, non-privileged OS account with no interactive shell; mount the upload directory with the
noexecflag where the filesystem supports it. - File-extension whitelist: If the Fileserver must remain operational, enforce server-side validation to an allowlist of safe extensions (e.g.
.xml,.properties) and strip execute permissions from the upload directory.
Runbook · Step 3
Detection rules
- Web/proxy access logs: A PUT to
/fileserver/<path>followed by a MOVE to the same path from the same client within 60 seconds — SPL:index=proxy method IN (PUT,MOVE) uri_path="/fileserver/*" | transaction clientip maxspan=60s | where mvcount(method)>1. - Filesystem monitoring (auditd / Sysmon): New files created under
${ACTIVEMQ_HOME}/webapps/fileserver/with extensions.jsp,.war,.sh,.py,.php— Sysmon EID 11 (FileCreate) withTargetFilenamematching*\fileserver\*.jsp. - Process ancestry (EDR): Child processes spawned by
activemq.jar/java.exewith suspicious arguments — Sigma shape:ParentImage|endswith: 'java.exe'ANDCommandLine|contains: ['cmd','bash','wget','curl','powershell']. - Network telemetry (Zeek / Suricata): Outbound connections from the ActiveMQ host to external IPs on non-standard ports following a PUT/MOVE event — indicator of post-exploitation activity (reverse shell, C2 beacon).
- auditd / Windows Event Log: File creation or modification inside the webapps directory by the ActiveMQ service process — auditd key
activemq_webroot, syscallsopen/creat, path containingfileserver.
Metrics
Affected products
Products and version ranges extracted from the vendor/CERT advisory. A range like „<4.14.6“ implies the update recommendation „upgrade to 4.14.6 or later“.
maven
org.apache.activemq:activemq-client5.0.0
maven
org.apache.activemq:activemq-client5.10.0
maven
org.apache.activemq:activemq-client5.10.1
maven
org.apache.activemq:activemq-client5.10.2
maven
org.apache.activemq:activemq-client5.11.0
maven
org.apache.activemq:activemq-client5.11.1
maven
org.apache.activemq:activemq-client5.11.2
maven
org.apache.activemq:activemq-client5.11.3
maven
org.apache.activemq:activemq-client5.11.4
maven
org.apache.activemq:activemq-client5.12.0
maven
org.apache.activemq:activemq-client5.12.1
maven
org.apache.activemq:activemq-client5.12.2
maven
org.apache.activemq:activemq-client5.12.3
maven
org.apache.activemq:activemq-client5.13.0
maven
org.apache.activemq:activemq-client5.13.1
maven
org.apache.activemq:activemq-client5.13.2
maven
org.apache.activemq:activemq-client5.13.3
maven
org.apache.activemq:activemq-client5.13.4
maven
org.apache.activemq:activemq-client5.13.5
maven
org.apache.activemq:activemq-client5.8.0
maven
org.apache.activemq:activemq-client5.9.0
maven
org.apache.activemq:activemq-client5.9.1
Public exploit references
Public proof-of-concepts and detection templates for this vulnerability. Maturity ranges from reported PoCs through working detection scripts up to fully weaponized exploit modules. NEOSEC mirrors the code internally for forensic analysis; externally we only link to the original sources.
References & sources
- https://nvd.nist.gov/vuln/detail/CVE-2016-3088advisory
- https://github.com/apache/activemq/commit/3dd86d04e8b90ba309819317d19e7260d414d9e7web
- https://issues.apache.org/jira/browse/AMQ-6276web
- https://lists.apache.org/thread.html/a859563f05fbe7c31916b3178c2697165bd9bbf5a65d1cf62aef27d2%40%3Ccommits.activemq.apache.org%3Eweb
- https://lists.apache.org/thread.html/a859563f05fbe7c31916b3178c2697165bd9bbf5a65d1cf62aef27d2@%3Ccommits.activemq.apache.org%3Eweb
- https://lists.apache.org/thread.html/f956ea38e4da2e2c1e7131e6f91e41754852f5a4861d1a14ca5ca78a%40%3Cusers.activemq.apache.org%3Eweb
- https://lists.apache.org/thread.html/f956ea38e4da2e2c1e7131e6f91e41754852f5a4861d1a14ca5ca78a@%3Cusers.activemq.apache.org%3Eweb
- https://lists.apache.org/thread.html/r6d03e45b81eab03580cf7f8bb51cb3e9a1b10a2cc0c6a2d3cc92ed0c%40%3Cannounce.apache.org%3Eweb
- https://lists.apache.org/thread.html/r6d03e45b81eab03580cf7f8bb51cb3e9a1b10a2cc0c6a2d3cc92ed0c@%3Cannounce.apache.org%3Eweb
- https://stackoverflow.com/questions/67140241/configuring-activemq-webconsole-to-redirect-http-to-httpsweb
- https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2016-3088web
- https://www.exploit-db.com/exploits/42283web
- http://activemq.apache.org/security-advisories.data/CVE-2016-3088-announcement.txtweb
- http://rhn.redhat.com/errata/RHSA-2016-2036.htmlweb
- http://www.securitytracker.com/id/1035951web
- http://www.zerodayinitiative.com/advisories/ZDI-16-356web
- http://www.zerodayinitiative.com/advisories/ZDI-16-357web
- https://www.exploit-db.com/exploits/42283/exploitx_refsource_EXPLOIT-DB