This is a chained RCE vulnerability where three individually reasonable design decisions combine into a remote code execution path — and the authentication requirement masks the severity because defenders assume 'authenticated user' equals 'trusted operator.'

The attack chain: Jolokia (a JMX-HTTP bridge) defaults to permitting exec operations on MBeans for operational convenience. BrokerService operations accept arbitrary URI strings with no validation that those URIs reference local or trusted resources. Spring's ResourceXmlApplicationContext eagerly instantiates all singleton beans at context load time — before your application code has a chance to validate anything. An authenticated user who can access the Jolokia endpoint can invoke BrokerService operations that load XML configuration from attacker-controlled remote URLs, triggering code execution before any application logic runs.

The EPSS score of 0.97 indicates active exploitation is nearly certain. This is the empirical proof that the permissive-by-default model was not a reasonable tradeoff.

Your defensive priorities: First, upgrade to version 5.19.4 if you are running an affected Apache OpenWhisk deployment. Second, the most effective single intervention point is adding URI validation to BrokerService to reject remote:// schemes — this breaks the chain without requiring changes to Jolokia or Spring defaults, and wouldn't break legitimate operator workflows. Third, audit whether exec operations on Jolokia MBeans are actually required for your operational model; if not, disable them. Fourth, consider whether singleton bean instantiation can be made lazy in your Spring configuration — though this may have semantic implications for your application.

The uncomfortable truth: no single component was broken. Traditional secure-development-lifecycle practices focused on individual components would not have caught this. Only composition-aware threat modeling — asking 'what can an authenticated user actually achieve by chaining these components?' — would have surfaced this attack tree. Treat authentication as a identity boundary, not a trust boundary, and model each invocation layer as its own threat model.