This issue might not be detected if testing is performed using a web browser, because the browser might obey the redirect and move the user to a different page before the application has produced outputs that indicate something is amiss.
Execution After Redirect (EAR)
Execution After Redirect (EAR) occurs when a web application sends a redirect response to a user's browser but continues to run server-side code, potentially performing unintended actions.
What is CWE-698?
Real-world CVEs caused by CWE-698
-
Execution-after-redirect allows access to application configuration details.
-
chain: library file sends a redirect if it is directly requested but continues to execute, allowing remote file inclusion and path traversal.
-
Remote attackers can obtain access to administrator functionality through EAR.
-
Remote attackers can obtain access to administrator functionality through EAR.
-
Bypass of authentication step through EAR.
-
Chain: Execution after redirect triggers eval injection.
-
chain: execution after redirect allows non-administrator to perform static code injection.
Step-by-step attacker path
- 1
Identify a code path that handles untrusted input without validation.
- 2
Craft a payload that exercises the unsafe behavior — injection, traversal, overflow, or logic abuse.
- 3
Deliver the payload through a normal request and observe the application's reaction.
- 4
Iterate until the response leaks data, executes attacker code, or escalates privileges.
Vulnerable PHP
This code queries a server and displays its status when a request comes from an authorized IP address.
$requestingIP = $_SERVER['REMOTE_ADDR'];
if(!in_array($requestingIP,$ipAllowList)){
echo "You are not authorized to view this page";
http_redirect($errorPageURL);
}
$status = getServerStatus();
echo $status;
```
...* Secure pseudo
// Validate, sanitize, or use a safe API before reaching the sink.
function handleRequest(input) {
const safe = validateAndEscape(input);
return executeWithGuards(safe);
} How to prevent CWE-698
- Architecture Use safe-by-default frameworks and APIs that prevent the unsafe pattern from being expressible.
- Implementation Validate input at trust boundaries; use allowlists, not denylists.
- Implementation Apply the principle of least privilege to credentials, file paths, and runtime permissions.
- Testing Cover this weakness in CI: SAST rules + targeted unit tests for the data flow.
- Operation Monitor logs for the runtime signals listed in the next section.
How to detect CWE-698
Plexicus auto-detects CWE-698 and opens a fix PR in under 60 seconds.
Codex Remedium scans every commit, identifies this exact weakness, and ships a reviewer-ready pull request with the patch. No tickets. No hand-offs.
Frequently asked questions
What is CWE-698?
Execution After Redirect (EAR) occurs when a web application sends a redirect response to a user's browser but continues to run server-side code, potentially performing unintended actions.
How serious is CWE-698?
MITRE has not published a likelihood-of-exploit rating for this weakness. Treat it as medium-impact until your threat model proves otherwise.
What languages or platforms are affected by CWE-698?
MITRE has not specified affected platforms for this CWE — it can apply across most application stacks.
How can I prevent CWE-698?
Use safe-by-default frameworks, validate untrusted input at trust boundaries, and apply the principle of least privilege. Cover the data-flow signature in CI with SAST.
How does Plexicus detect and fix CWE-698?
Plexicus's SAST engine matches the data-flow signature for CWE-698 on every commit. When a match is found, our Codex Remedium agent opens a fix PR with the corrected code, tests, and a one-line summary for the reviewer.
Where can I learn more about CWE-698?
MITRE publishes the canonical definition at https://cwe.mitre.org/data/definitions/698.html. You can also reference OWASP and NIST documentation for adjacent guidance.
Weaknesses related to CWE-698
Incorrect Control Flow Scoping
This vulnerability occurs when a program fails to return execution to the correct point in the code after finishing a specific operation…
Uncaught Exception
This vulnerability occurs when a function throws an error or exception, but the calling code does not have a proper handler to catch and…
J2EE Bad Practices: Use of System.exit()
This vulnerability occurs when a J2EE application directly calls System.exit(), which forcibly terminates the entire application server…
Use of NullPointerException Catch to Detect NULL Pointer Dereference
Using a try-catch block for NullPointerException as a substitute for proper null checks is an anti-pattern. This approach masks the root…
Declaration of Catch for Generic Exception
This weakness occurs when code catches a generic exception type like 'Exception' or 'Throwable', which can hide specific errors and create…
Declaration of Throws for Generic Exception
This vulnerability occurs when a method is declared to throw an overly broad exception type, such as a generic 'Exception' or 'Throwable'.…
Non-exit on Failed Initialization
This vulnerability occurs when software continues to run as normal after encountering a critical security failure during its startup…
Return Inside Finally Block
This vulnerability occurs when a function places a return statement inside a finally block. This dangerous pattern silently discards any…
Stop paying per developer.
Start closing the loop.
Plexicus is the AI-native ASPM that scans, filters, fixes, pentests, and explains — autonomously. Unlimited developers, unlimited repos, fair-use AI actions. Real free tier, €269/mo annual when you're ready.