The strongest control is to upgrade Log4j to a fixed release, such as 2.16.0 for Java 8 and later, or 2.12.2 for Java 7. If upgrading is not immediately possible, remove the JndiLookup class, apply a vetted hot patch, and use WAF rules as defense in depth while monitoring for bypasses.
Why the safest Log4j fix is removal, not just containment
Log4j exploitation is primarily a software vulnerability problem, but it becomes an access-control problem once attackers can trigger remote code execution or reach internal services through crafted payloads. The most reliable mitigation is to replace the vulnerable component with a fixed release rather than relying on compensating controls alone. CISA’s Known Exploited Vulnerabilities Catalog is a useful prioritisation reference when you need to treat a Log4Shell finding as active risk, not theoretical exposure.
For teams still triaging exposure, the practical distinction is between reducing exploitability and reducing blast radius. Upgrading Log4j closes the vulnerable code path directly, while temporary measures such as class removal, hot patches, and WAF signatures only narrow the attack surface. Validation matters because exploitation can occur through multiple inputs, including application logs, message fields, and downstream components that re-emit attacker-controlled strings.
When you need a second opinion on exposure prioritisation, the NIST National Vulnerability Database gives the CVE context and affected-product framing, while FIRST EPSS helps teams distinguish broadly known vulnerabilities from those with higher near-term exploitation likelihood. That combination is useful when patch queues are long and you need to decide what gets emergency treatment first.
How to reduce exposure before and after patching
Pre-patch controls should be treated as stopgaps, not substitutes for remediation. Removing JndiLookup can block the most dangerous lookup path in affected versions, but teams must confirm that the class is actually absent from every deployed artifact, sidecar, and bundled dependency. WAF rules can help, yet they are best viewed as defense in depth because evasions and variant payloads have historically limited their durability.
Operationally, the highest-value work is inventory and verification. Security teams should identify every Java application, container image, library bundle, and third-party package that carries Log4j, then confirm the deployed runtime matches the fixed version or the approved mitigation state. This is especially important where build artifacts are reused across environments or where the vulnerable library is nested inside a vendor deliverable.
For software teams that need implementation guidance on secure packaging and dependency handling, OWASP API Security Top 10 is useful for the broader application exposure mindset, and SLSA helps frame why build provenance and artifact integrity matter when a vulnerable library can reappear through the supply chain.
Standards & Framework Alignment
This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.
MITRE ATT&CK address the attack and risk surface, while CIS Controls v8 and NIST CSF 2.0 set the governance and control requirements practitioners need to meet.
| Framework | Control / Reference | Relevance |
|---|---|---|
| CIS Controls v8 | CIS 7 — Continuous Vulnerability Management | Log4j remediation depends on finding, prioritising, and fixing vulnerable software quickly. |
| CIS 16 — Application Software Security | The issue is a vulnerable Java application component that requires secure dependency handling and patching. | |
| CIS 4 — Secure Configuration of Enterprise Assets and Software | Temporary mitigations like class removal and WAF rules depend on hardened, verified configuration states. | |
| Recommendation — Prioritise, track, and remediate Log4j exposure as a continuous vulnerability management item. Apply application security controls to remove or replace vulnerable Log4j dependencies. Harden and verify software configurations so temporary mitigations do not drift or disappear. | ||
| NIST CSF 2.0 | PR.IP — Information Protection Processes and Procedures | Patch, mitigation, and verification steps are procedural controls for vulnerable software handling. |
| DE.CM — Security Continuous Monitoring | Monitoring for bypasses and residual exposure is essential while temporary mitigations remain in place. | |
| RS.MI — Mitigation | The core action is to contain and eliminate active Log4j exposure through remediation. | |
| Recommendation — Formalise patch and mitigation procedures for vulnerable Java libraries. Monitor for exploit attempts and bypasses until the fixed release is fully deployed. Execute mitigation quickly by upgrading or removing the vulnerable Log4j component. | ||
| MITRE ATT&CK | T1190 — Exploit Public-Facing Application | Log4j exploitation commonly begins by abusing an externally reachable Java application. |
| T1059.007 — Java | The vulnerable component is a Java logging library used in Java application execution contexts. | |
| T1203 — Exploitation for Client Execution | Successful Log4j exploitation can lead to arbitrary code execution in the target process. | |
| Recommendation — Hunt for public-facing application exploitation paths and restrict reachable attack surfaces. Review Java execution paths and application dependencies for exploitable logging libraries. Treat exploitation as a code-execution event and validate post-exploitation containment. | ||
Practitioner Guidance
What to verify: Confirm the vulnerable Log4j classes are removed or the package is upgraded everywhere the code can execute, including test, build, and container images. A partial fix in one environment is not sufficient if the same artifact can still be promoted elsewhere.
Decision rule: If the application is internet-facing, externally reachable through partner networks, or processes attacker-controlled input, treat patching as urgent and do not rely on WAF rules alone. If patching is delayed, document the temporary control, set an expiry for it, and re-test after each deployment.
Common mistake: Teams often secure the primary application but miss embedded copies inside plugins, vendor jars, and non-production pipelines. The practical test is whether any runtime in the delivery path can still resolve the vulnerable class.
Practitioner takeaway: Log4j remediation succeeds when teams remove the vulnerable code path, verify every deployment copy, and use compensating controls only as short-lived protection while patching completes.
Related resources from NHI Mgmt Group
- How should security teams prevent command injection in Java applications?
- How should security teams prevent broken authentication in Java applications?
- How should security teams prevent LDAP injection in directory-backed applications?
- How should security teams prevent code injection in modern applications?