CWE-455 Base Draft

Non-exit on Failed Initialization

This vulnerability occurs when software continues to run as normal after encountering a critical security failure during its startup process. Instead of halting or entering a safe mode, the…

Definition

What is CWE-455?

This vulnerability occurs when software continues to run as normal after encountering a critical security failure during its startup process. Instead of halting or entering a safe mode, the application proceeds with weakened or missing security controls, leaving it exposed.
During initialization, an application loads its core security components—like configuration files, encryption keys, or connections to hardware security modules (HSMs). If any of these critical steps fail (e.g., due to a corrupted config file, an invalid certificate, or an HSM communication error), the software faces a crucial decision. A secure design would force a controlled shutdown or trigger a strict fallback state. However, with this weakness, the program ignores the failure and continues its normal startup routine, often with default, insecure settings or with key security features silently disabled. This creates a dangerous gap between the administrator's intended security posture and the application's actual runtime state. An attacker doesn't need to exploit the initial failure; they can simply target the now-unprotected system. For example, communications might proceed without encryption, authentication checks could be bypassed, or audit logging might be turned off—all without any visible warning. To prevent this, initialization routines must treat security-critical failures as fatal errors, ensuring the software either fails securely or enters a well-defined, restrictive operational mode that alerts administrators immediately.
Real-world impact

Real-world CVEs caused by CWE-455

  • Product does not trigger a fatal error if missing or invalid ACLs are in a configuration file.

How attackers exploit it

Step-by-step attacker path

  1. 1

    Identify a code path that handles untrusted input without validation.

  2. 2

    Craft a payload that exercises the unsafe behavior — injection, traversal, overflow, or logic abuse.

  3. 3

    Deliver the payload through a normal request and observe the application's reaction.

  4. 4

    Iterate until the response leaks data, executes attacker code, or escalates privileges.

Vulnerable code example

Vulnerable Perl

The following code intends to limit certain operations to the administrator only.

Vulnerable Perl
$username = GetCurrentUser();
  $state = GetStateData($username);
  if (defined($state)) {
  	$uid = ExtractUserID($state);
  }
```
# do stuff* 
  if ($uid == 0) {
  ```
  	DoAdminThings();
  }
Secure code example

Secure pseudo

Secure pseudo
// Validate, sanitize, or use a safe API before reaching the sink.
function handleRequest(input) {
  const safe = validateAndEscape(input);
  return executeWithGuards(safe);
}
What changed: the unsafe sink is replaced (or the input is validated/escaped) so the same payload no longer triggers the weakness.
Prevention checklist

How to prevent CWE-455

  • Implementation Follow the principle of failing securely when an error occurs. The system should enter a state where it is not vulnerable and will not display sensitive error messages to a potential attacker.
Detection signals

How to detect CWE-455

SAST High

Run static analysis (SAST) on the codebase looking for the unsafe pattern in the data flow.

DAST Moderate

Run dynamic application security testing against the live endpoint.

Runtime Moderate

Watch runtime logs for unusual exception traces, malformed input, or authorization bypass attempts.

Code review Moderate

Code review: flag any new code that handles input from this surface without using the validated framework helpers.

Plexicus auto-fix

Plexicus auto-detects CWE-455 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

Frequently asked questions

What is CWE-455?

This vulnerability occurs when software continues to run as normal after encountering a critical security failure during its startup process. Instead of halting or entering a safe mode, the application proceeds with weakened or missing security controls, leaving it exposed.

How serious is CWE-455?

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-455?

MITRE has not specified affected platforms for this CWE — it can apply across most application stacks.

How can I prevent CWE-455?

Follow the principle of failing securely when an error occurs. The system should enter a state where it is not vulnerable and will not display sensitive error messages to a potential attacker.

How does Plexicus detect and fix CWE-455?

Plexicus's SAST engine matches the data-flow signature for CWE-455 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-455?

MITRE publishes the canonical definition at https://cwe.mitre.org/data/definitions/455.html. You can also reference OWASP and NIST documentation for adjacent guidance.

Related weaknesses

Weaknesses related to CWE-455

CWE-705 Parent

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…

CWE-248 Sibling

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…

CWE-382 Sibling

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…

CWE-395 Sibling

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…

CWE-396 Sibling

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…

CWE-397 Sibling

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'.…

CWE-584 Sibling

Return Inside Finally Block

This vulnerability occurs when a function places a return statement inside a finally block. This dangerous pattern silently discards any…

CWE-698 Sibling

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…

Ready when you are

Don't Let Security
Weigh You Down.

Stop choosing between AI velocity and security debt. Plexicus is the only platform that runs Vibe Coding Security and ASPM in parallel — one workflow, every codebase.