Common signs include a suspicious JNDI lookup string in headers or URLs, unusual LDAP, LDAPS, or RMI connections to external servers, and outbound traffic to new or rare IP addresses. Security teams should also look for matching DNS requests, unexpected Java process behavior, and endpoint alerts tied to the same source host. Correlation across these signals is critical.
What Log4Shell exploitation looks like once it is underway
When Log4Shell exploitation is in progress, the most important clue is not the payload alone but the pattern it creates across application, network, and host telemetry. A malicious JNDI lookup may appear in HTTP headers, query strings, form fields, chat payloads, or other user-controlled input, but the real indicator is often the follow-on behaviour: outbound lookups, remote class loading attempts, and a Java process that starts reaching beyond its normal trust boundary. Because the exploit can be delivered through many entry points, teams need to think in terms of correlated signals rather than one perfect indicator.
Security teams often miss the early stage because the first observable event is usually an application log artifact, while the decisive evidence appears a moment later in DNS, LDAP, LDAPS, RMI, or HTTP traffic leaving a server that should not be making those calls. The practical question is whether the application is merely receiving crafted input or whether it is already trying to resolve and retrieve attacker-controlled resources. For a broad treatment of control expectations around monitoring and anomaly handling, NIST SP 800-53 Rev 5 Security and Privacy Controls provides relevant defensive context. In practice, many teams recognise Log4Shell only after the server starts making unusual outbound connections, rather than when the original lookup string first lands.
How to correlate the signals that matter most
The strongest way to confirm active exploitation is to line up application evidence with network and endpoint evidence on the same host and time window. A single suspicious string may indicate probing, but a string plus outbound resolution attempts, plus a new remote connection from the same process, is much closer to an exploitation chain. On the application side, look for the familiar
JNDI
pattern, especially when it is embedded in headers that are normally logged without deep validation. On the network side, look for DNS queries to domains the server has never contacted before, followed by LDAP, LDAPS, or RMI connections that are not part of the service’s normal runtime profile.
Endpoint telemetry adds the next layer of confidence. Java processes may spawn child processes, load unexpected classes, write temporary files, or connect to destinations that have no business relationship to the application. The question is not simply whether Java is active, but whether it is behaving in a way that suggests remote code retrieval or post-exploitation activity. A useful triage sequence is:
- Confirm whether the suspicious string is present in application logs or WAF logs.
- Check for DNS and outbound connection attempts from the same host within minutes of the string.
- Review Java process lineage, child process creation, and file-write activity.
- Compare the destination IPs and domains against historical baselines for that service.
Where those signals line up, the chance of genuine exploitation rises quickly. Where they do not, the event may still be reconnaissance or failed probing, but it should remain under watch because exploitation attempts often arrive in bursts. This guidance breaks down when logging is incomplete, when the application sits behind shared proxy infrastructure, or when network telemetry cannot be tied back to the originating workload.
When the pattern is real, and when it is only noisy probing
Tighter detection often increases alert volume, requiring organisations to balance early warning against the cost of chasing malformed input and harmless scanner traffic. That tradeoff matters because Log4Shell activity ranges from opportunistic internet-wide scanning to deliberate exploitation with follow-on payload delivery, and the early telemetry can look similar.
The first edge case is benign-looking test traffic. Some scanners and defenders deliberately send lookup strings to see whether a target is vulnerable, so a single JNDI pattern is not enough to prove compromise. The second edge case is indirect execution. In some environments the exploit succeeds through chained services, so the original request source may not match the machine that later shows outbound LDAP or RMI activity. The third edge case is encrypted or segmented networks, where network visibility is partial and the best signal may be an endpoint alert or an application exception rather than a clear outbound flow. Guidance-vs-consensus note: there is broad agreement that multi-signal correlation is the right approach, but teams differ on how much weight to give DNS versus process telemetry when one of those sources is missing.
Practitioners should treat rare or previously unseen outbound destinations from a Java service as more significant than the presence of the payload string alone, especially if the destination is coupled to process spawning or credentialed access attempts. If the environment cannot correlate logs, DNS, and endpoint activity reliably, the organisation should assume detection confidence is lower and escalate to containment sooner rather than later.
Risk and Threat Considerations
Log4Shell is dangerous because exploitation can move from an application-layer input to remote code execution with very little visible transition in between. The material risk is not only initial compromise but also the speed at which an attacker can pivot from a logged string to outbound retrieval, execution, and post-exploitation activity on the same host.
Failure mechanism: The exploit abuses unsafe JNDI resolution in a logging path, allowing attacker-controlled lookups to trigger external communication and, in vulnerable contexts, code loading or command execution. Defenders often miss the chain because they inspect only the request payload and not the downstream DNS, LDAP, RMI, or process behaviour that confirms abuse.
Impact: A compromised Java service can expose credentials, internal data, and network reachability, and it can become a foothold for persistence, lateral movement, or additional malware delivery. At scale, repeated exploitation attempts can also overwhelm detection queues and delay incident response across multiple internet-facing systems.
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 |
|---|---|---|
| MITRE ATT&CK | T1190 — Exploit Public-Facing Application | Log4Shell is commonly observed as exploitation of an exposed application entry point. |
| T1059.006 — Command and Scripting Interpreter: Java | The exploit centers on Java runtime behavior and post-exploitation execution paths. | |
| T1071.004 — Application Layer Protocol: DNS | DNS lookups often appear in the exploitation chain and help confirm outbound activity. | |
| Recommendation — Map suspicious request patterns to T1190 and hunt for compromise on exposed Java services. Use T1059.006 to inspect Java process execution, child processes, and spawned commands. Correlate DNS anomalies with the originating Java host to confirm exploitation in progress. | ||
| CIS Controls v8 | 8 — Audit Log Management | Detection depends on retaining and correlating application, DNS, and endpoint logs. |
| 13 — Network Monitoring and Defense | Unusual LDAP, LDAPS, RMI, and rare outbound connections are core indicators here. | |
| Recommendation — Centralise and correlate logs to preserve the evidence chain for Log4Shell triage. Monitor outbound network behaviour from Java services for rare destinations and protocols. | ||
| NIST CSF 2.0 | DE.CM-1 — The network is monitored to detect potential cybersecurity events | Active exploitation is identified through correlated network anomalies and host telemetry. |
| Recommendation — Monitor network and host telemetry together to detect exploitation patterns early. | ||
Practitioner Guidance
What to prioritise: Correlate the suspicious lookup string with outbound traffic and host activity from the same asset before treating the event as confirmed exploitation. A lone payload indicator is useful, but a clustered sequence of application, DNS, and endpoint events is the decision point that justifies containment.
What to verify: Verify whether the destination is new for that service, whether the Java process spawned children, and whether the same host shows repeated attempts within a short interval. Repeated failures with no outbound movement may indicate probing; a successful outbound chain usually demands faster response.
Practitioner takeaway: The best Log4Shell signal is not the lookup string by itself but the change in behaviour that follows it, because exploitation becomes actionable when input turns into outbound trust abuse.