Overview
CVE-2023-46604 is a remote code execution flaw in the Java OpenWire marshaller, affecting ActiveMQ brokers and Java clients alike. A manufacturer ran Classic brokers at several plants and in its cloud accounts, installed by different teams over the years. Nobody could say how many there were, which versions they ran, or which networks could reach the OpenWire port.
Challenge
Versions ranged from 5.14 to 5.18, and 5.14 has no fix line of its own, so those brokers had to move to a newer release. Plant networks were flat, so the OpenWire port was reachable from far more hosts than the broker's real clients. The flaw also affects clients, and several applications carried an ActiveMQ client library inside a fat jar, which no broker upgrade would touch. Production lines allowed only short change windows.
Environment
A mixed estate of ActiveMQ Classic 5.14 to 5.18 brokers on Linux hosts and in containers, across plant data centres and cloud accounts, with Java applications and gateways as clients.
Approach
AceMQ contained first and patched second. Network restrictions on the OpenWire port went in the same day, then an inventory of brokers and clients, then a check for signs of exploitation, then upgrades in order of exposure. Clients followed brokers, with each change tested against a staging copy of the plant's integration.
Solution
- Restricted the OpenWire port on every broker to the addresses of its known clients before any upgrade
- Built the inventory of broker versions from JMX and of client library versions by scanning application images and fat jars
- Checked each broker for signs of exploitation: unexpected child processes of the broker JVM, outbound connections from broker hosts, and remote configuration loads in the logs
- Upgraded brokers to the fixed release of their line, 5.15.16, 5.16.7, 5.17.6 or 5.18.3, and tested failover after each
- Replaced the vulnerable client libraries inside applications and rebuilt the affected images
- Turned on authentication and TLS for transport connectors, and added version and advisory monitoring so the next ActiveMQ CVE reaches the owner of each broker
Outcome
Every broker ran a fixed release, the OpenWire port was reachable only from listed clients, and the review found no signs of compromise. The manufacturer now has a current inventory of ActiveMQ brokers and client libraries, with a named owner for each.