CWE Database
/

CWE-543

Back to CWE list

CWE-543

Use of Singleton Pattern Without Synchronization in a Multithreaded Context

Variant
Incomplete

Description

The product uses the singleton pattern when creating a resource within a multithreaded environment.

The use of a singleton pattern may not be thread-safe.

Common Consequences

Scope

Other
Integrity

Impact

Other, Modify Application Data

Potential Mitigations

Architecture and Design

Use the Thread-Specific Storage Pattern. See References.

Implementation

Do not use member fields to store information in the Servlet. In multithreading environments, storing user data in Servlet member fields introduces a data access race condition.

Implementation

Avoid using the double-checked locking pattern in language versions that cannot guarantee thread safety. This pattern may be used to avoid the overhead of a synchronized call, but in certain versions of Java (for example), this has been shown to be unsafe because it still introduces a race condition (CWE-209).

Applicable Platforms

Java
C++

Security Training

Train your team to recognize and prevent security threats with our comprehensive security awareness program.

Start Training

Vulnerability Scanning

Discover vulnerabilities in your applications and infrastructure before attackers do.

Scan Now