Join our Newsletter — 33% off our NHI Course

How do you patch or mitigate CVE-2018-11776 (Apache Struts Remote Code Execution)?

CISA’s required action for CVE-2018-11776 is to apply updates per vendor instructions. In practice, find every instance of Apache Struts in your estate, apply the vendor security update or documented mitigation, and if no fix can be applied, remove internet exposure or take the product out of service. After patching, review logs for signs of earlier exploitation, because attackers used this flaw in the wild.

What patching CVE-2018-11776 should look like in practice

The fix path is straightforward, but the work is really about scope control. You need to inventory every Apache Struts instance, apply the vendor security update or documented mitigation, and treat any internet-facing deployment as higher urgency. If patching cannot happen immediately, the safest interim move is to remove external exposure or take the affected service out of service.

For broad vulnerability response, use the same discipline you would apply to any actively exploited issue: confirm ownership, confirm exposure, and make the remediation decision from the actual asset list rather than from assumptions. NHIMG’s Zero-Day and Exploited Vulnerabilities Guide is useful here because the operational questions are the same even when the vulnerability is not a zero-day.

After the update or mitigation is in place, do not stop at “patched.” Verify that the affected application still runs as intended, then check whether the vulnerable instance was reachable before remediation and whether any compensating control, such as isolation or removal from service, is still needed for exposed systems that cannot be updated promptly.

How to confirm whether exposure still exists

Start with an asset and application search, not with the assumption that one Struts deployment will be obvious. Older Java applications are often embedded in multiple services, and the same product can appear in test, staging, partner-facing, and forgotten production paths. If you only patch the best-known server, the rest of the estate remains a viable attack surface.

Apache Struts is also the kind of component that can sit behind an application owner’s line of sight, so the practical task is to tie the vulnerable package to a service, a business owner, and an internet exposure status. If you can identify the instance, the owner, and the reachable entry point, you can decide whether the right control is patching, isolation, or retirement.

When you need a structured response sequence, map the issue to a broader vulnerability-management workflow. The Vulnerability Management Guide is a good fit because it emphasizes asset scoping, prioritisation, verification, and remediation tracking rather than treating patching as a one-off task.

What to do if patching is delayed or the system is hard to change

Some Struts deployments cannot be updated quickly because they are tied to fragile business logic, vendor-managed applications, or maintenance windows that are too infrequent. In that case, the mitigation decision should be based on blast radius, not convenience: reduce reachability, segment the host, place it behind stronger filtering, or remove the service from exposure until a fix is possible.

If a mitigation is temporary, treat it as temporary in your records and in your operational follow-up. A control that depends on “we meant to come back to it later” tends to fail when ownership is unclear, so the exception needs a due date, an accountable owner, and a clear rollback path back to full remediation.

Because this flaw was used in the wild, the mitigation question is also a detection question. If the system stayed exposed for any time, you should assume the attack window existed and verify whether the application or its host shows signs of earlier exploitation before you declare the issue closed.

Risk and Threat Considerations

Apache Struts RCE is dangerous because it turns a reachable application bug into server-side code execution, which can be used for initial access, web shell placement, credential theft, and later movement into adjacent systems. The practical risk is not only compromise of the vulnerable app, but also what that app can reach with its runtime privileges and network access.

Failure mechanism: An attacker sends crafted input to the vulnerable Struts path, gains code execution on the server, and then uses that foothold to probe the host, harvest secrets, or pivot into internal resources if the application is overexposed or overprivileged.

Impact: The result can range from data theft and service disruption to broader compromise of the environment, especially when the vulnerable instance has access to back-end databases, administrative interfaces, or other trusted services.

Standards & Framework Alignment

This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.

CIS Controls v8, NIST CSF 2.0 and NIST SP 800-53 Rev 5 set the governance and control requirements practitioners need to meet.

Framework Control / Reference Relevance
CIS Controls v8 CIS-7 — Continuous Vulnerability Management Applies directly to finding, prioritising, and remediating exploited software flaws.
Recommendation — Track exposed Struts instances and verify remediation until the vulnerable condition is removed.
NIST CSF 2.0 PR.IP-12 — Vulnerability Management Plan Covers the planned remediation process for exposed vulnerabilities and exceptions.
Recommendation — Apply a vulnerability management process that forces patching, mitigation, or removal of exposure.
NIST SP 800-53 Rev 5 SI-2 — Flaw Remediation Directly addresses applying vendor fixes or documented mitigations for known flaws.
RA-5 — Vulnerability Monitoring and Scanning Supports locating every Struts instance and confirming exposure before and after remediation.
IR-4 — Incident Handling Relevant because exploited-in-the-wild RCE requires compromise assessment after patching.
Recommendation — Execute flaw remediation promptly and verify the vulnerable component is no longer exploitable. Scan and inventory all Struts deployments, then confirm the exposure state after remediation. Investigate for signs of compromise before closing the incident and returning the system to normal operation.

Practitioner Guidance

What to prioritise: Prioritise internet-facing Struts instances first, then any instance that can reach sensitive internal systems. If two systems are equally vulnerable, the one with broader network reach or stronger business impact should be remediated first.

What to verify: Confirm the vendor update or mitigation actually removed the vulnerable condition, not just the scanner finding. Then verify that no alternate path, cloned deployment, or forgotten container still exposes the same component.

What to measure: Track time to inventory, time to remediation, and the number of exposed instances still awaiting action. Those three signals tell you whether you have a real remediation process or just an emergency response.

Practitioner takeaway: Treat an exploited RCE as both a patching problem and a compromise-assessment problem, because the highest-value control is not only closing the flaw, but proving the environment was not already used through it.