Non-exit on Failed Initialization

Draft Base
Structure: Simple
Description

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.

Extended Description

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.

Common Consequences 1
Scope: IntegrityOther

Impact: Modify Application DataAlter Execution Logic

The application could be placed in an insecure state that may allow an attacker to modify sensitive data or allow unintended logic to be executed.

Potential Mitigations 1
Phase: 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.
Demonstrative Examples 1

ID : DX-54

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

Code Example:

Bad
Perl
perl

do stuff*

perl
If the application is unable to extract the state information - say, due to a database timeout - then the $uid variable will not be explicitly set by the programmer. This will cause $uid to be regarded as equivalent to "0" in the conditional, allowing the original user to perform administrator actions. Even if the attacker cannot directly influence the state data, unexpected errors could cause incorrect privileges to be assigned to a user just by accident.
Observed Examples 1
CVE-2005-1345Product does not trigger a fatal error if missing or invalid ACLs are in a configuration file.
Applicable Platforms
Languages:
Not Language-Specific : Undetermined
Modes of Introduction
Implementation
Taxonomy Mapping
  • PLOVER
Notes
Research GapUnder-studied. These issues are not frequently reported, and it is difficult to find published examples.