CWE VIEW: CISQ Quality Measures (2020)
This view outlines the most important software quality issues as identified by the Consortium for Information & Software Quality (CISQ) Automated Quality Characteristic Measures, released in 2020. These measures are derived from Object Management Group (OMG) standards.
The following graph shows the tree-like relationships between
weaknesses that exist at different levels of abstraction. At the highest level, categories
and pillars exist to group weaknesses. Categories (which are not technically weaknesses) are
special CWE entries used to group weaknesses that share a common characteristic. Pillars are
weaknesses that are described in the most abstract fashion. Below these top-level entries
are weaknesses are varying levels of abstraction. Classes are still very abstract, typically
independent of any specific language or technology. Base level weaknesses are used to
present a more specific type of weakness. A variant is a weakness that is described at a
very low level of detail, typically limited to a specific language or technology. A chain is
a set of weaknesses that must be reachable consecutively in order to produce an exploitable
vulnerability. While a composite is a set of weaknesses that must all be present
simultaneously in order to produce an exploitable vulnerability.
Show Details:
1305 - CISQ Quality Measures (2020)
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability)
Weaknesses in this category are related to the CISQ Quality Measures for Reliability. Presence of these weaknesses could reduce the reliability of the software.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
119
(Improper Restriction of Operations within the Bounds of a Memory Buffer)
The product performs operations on a memory buffer, but it reads from or writes to a memory location outside the buffer's intended boundary. This may result in read or write operations on unexpected memory locations that could be linked to other variables, data structures, or internal program data.
Buffer Overflow
buffer overrun
memory safety
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
119
(Improper Restriction of Operations within the Bounds of a Memory Buffer) >
120
(Buffer Copy without Checking Size of Input ('Classic Buffer Overflow'))
The product copies an input buffer to an output buffer without verifying that the size of the input buffer is less than the size of the output buffer, leading to a buffer overflow.
Classic Buffer Overflow
Unbounded Transfer
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
119
(Improper Restriction of Operations within the Bounds of a Memory Buffer) >
123
(Write-what-where Condition)
Any condition where the attacker has the ability to write an arbitrary value to an arbitrary location, often as the result of a buffer overflow.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
119
(Improper Restriction of Operations within the Bounds of a Memory Buffer) >
125
(Out-of-bounds Read)
The product reads data past the end, or before the beginning, of the intended buffer.
OOB read
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
119
(Improper Restriction of Operations within the Bounds of a Memory Buffer) >
130
(Improper Handling of Length Parameter Inconsistency)
The product parses a formatted message or structure, but it does not handle or incorrectly handles a length field that is inconsistent with the actual length of the associated data.
length manipulation
length tampering
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
119
(Improper Restriction of Operations within the Bounds of a Memory Buffer) >
786
(Access of Memory Location Before Start of Buffer)
The product reads or writes to a buffer using an index or pointer that references a memory location prior to the beginning of the buffer.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
119
(Improper Restriction of Operations within the Bounds of a Memory Buffer) >
787
(Out-of-bounds Write)
The product writes data past the end, or before the beginning, of the intended buffer.
Memory Corruption
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
119
(Improper Restriction of Operations within the Bounds of a Memory Buffer) >
788
(Access of Memory Location After End of Buffer)
The product reads or writes to a buffer using an index or pointer that references a memory location after the end of the buffer.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
119
(Improper Restriction of Operations within the Bounds of a Memory Buffer) >
805
(Buffer Access with Incorrect Length Value)
The product uses a sequential operation to read or write a buffer, but it uses an incorrect length value that causes it to access memory that is outside of the bounds of the buffer.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
119
(Improper Restriction of Operations within the Bounds of a Memory Buffer) >
822
(Untrusted Pointer Dereference)
The product obtains a value from an untrusted source, converts this value to a pointer, and dereferences the resulting pointer.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
119
(Improper Restriction of Operations within the Bounds of a Memory Buffer) >
823
(Use of Out-of-range Pointer Offset)
The product performs pointer arithmetic on a valid pointer, but it uses an offset that can point outside of the intended range of valid memory locations for the resulting pointer.
Untrusted pointer offset
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
119
(Improper Restriction of Operations within the Bounds of a Memory Buffer) >
824
(Access of Uninitialized Pointer)
The product accesses or uses a pointer that has not been initialized.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
119
(Improper Restriction of Operations within the Bounds of a Memory Buffer) >
825
(Expired Pointer Dereference)
The product dereferences a pointer that contains a location for memory that was previously valid, but is no longer valid.
Dangling pointer
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
170
(Improper Null Termination)
The product does not terminate or incorrectly terminates a string or array with a null character or equivalent terminator.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
252
(Unchecked Return Value)
The product does not check the return value from a method or function, which can prevent it from detecting unexpected states and conditions.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
390
(Detection of Error Condition Without Action)
The product detects a specific error, but takes no actions to handle the error.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
394
(Unexpected Status Code or Return Value)
The product does not properly check when a function or operation returns a value that is legitimate for the function, but is not expected by the product.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
404
(Improper Resource Shutdown or Release)
The product does not release or incorrectly releases a resource before it is made available for re-use.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
404
(Improper Resource Shutdown or Release) >
401
(Missing Release of Memory after Effective Lifetime)
The product does not sufficiently track and release allocated memory after it has been used, which slowly consumes remaining memory.
Memory Leak
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
404
(Improper Resource Shutdown or Release) >
772
(Missing Release of Resource after Effective Lifetime)
The product does not release a resource after its effective lifetime has ended, i.e., after the resource is no longer needed.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
404
(Improper Resource Shutdown or Release) >
775
(Missing Release of File Descriptor or Handle after Effective Lifetime)
The product does not release a file descriptor or handle after its effective lifetime has ended, i.e., after the file descriptor/handle is no longer needed.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
424
(Improper Protection of Alternate Path)
The product does not sufficiently protect all possible paths that a user can take to access restricted functionality or resources.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
459
(Incomplete Cleanup)
The product does not properly "clean up" and remove temporary or supporting resources after they have been used.
Insufficient Cleanup
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
476
(NULL Pointer Dereference)
The product dereferences a pointer that it expects to be valid but is NULL.
NPD
null deref
NPE
nil pointer dereference
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
480
(Use of Incorrect Operator)
The product accidentally uses the wrong operator, which changes the logic in security-relevant ways.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
484
(Omitted Break Statement in Switch)
The product omits a break statement within a switch or similar construct, causing code associated with multiple conditions to execute. This can cause problems when the programmer only intended to execute code associated with one condition.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
562
(Return of Stack Variable Address)
A function returns the address of a stack variable, which will cause unintended program behavior, typically in the form of a crash.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
595
(Comparison of Object References Instead of Object Contents)
The product compares object references instead of the contents of the objects themselves, preventing it from detecting equivalent objects.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
595
(Comparison of Object References Instead of Object Contents) >
1097
(Persistent Storable Data Element without Associated Comparison Control Element)
The product uses a storable data element that does not have
all of the associated functions or methods that are necessary to support
comparison.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
595
(Comparison of Object References Instead of Object Contents) >
597
(Use of Wrong Operator in String Comparison)
The product uses the wrong operator when comparing a string, such as using "==" when the .equals() method should be used instead.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
662
(Improper Synchronization)
The product utilizes multiple threads or processes to allow temporary access to a shared resource that can only be exclusive to one process at a time, but it does not properly synchronize these actions, which might cause simultaneous accesses of this resource by multiple threads or processes.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
662
(Improper Synchronization) >
1058
(Invokable Control Element in Multi-Thread Context with non-Final Static Storable or Member Element)
The code contains a function or method that
operates in a multi-threaded environment but owns an unsafe non-final
static storable or member data element.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
662
(Improper Synchronization) >
1096
(Singleton Class Instance Creation without Proper Locking or Synchronization)
The product implements a Singleton design pattern but does not use appropriate locking or other synchronization mechanism to ensure that the singleton class is only instantiated once.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
662
(Improper Synchronization) >
366
(Race Condition within a Thread)
If two threads of execution use a resource simultaneously, there exists the possibility that resources may be used while invalid, in turn making the state of execution undefined.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
662
(Improper Synchronization) >
543
(Use of Singleton Pattern Without Synchronization in a Multithreaded Context)
The product uses the singleton pattern when creating a resource within a multithreaded environment.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
662
(Improper Synchronization) >
567
(Unsynchronized Access to Shared Data in a Multithreaded Context)
The product does not properly synchronize shared data, such as static variables across threads, which can lead to undefined behavior and unpredictable data changes.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
662
(Improper Synchronization) >
667
(Improper Locking)
The product does not properly acquire or release a lock on a resource, leading to unexpected resource state changes and behaviors.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
662
(Improper Synchronization) >
764
(Multiple Locks of a Critical Resource)
The product locks a critical resource more times than intended, leading to an unexpected state in the system.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
662
(Improper Synchronization) >
820
(Missing Synchronization)
The product utilizes a shared resource in a concurrent manner but does not attempt to synchronize access to the resource.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
662
(Improper Synchronization) >
821
(Incorrect Synchronization)
The product utilizes a shared resource in a concurrent manner, but it does not correctly synchronize access to the resource.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
662
(Improper Synchronization) >
833
(Deadlock)
The product contains multiple threads or executable segments that are waiting for each other to release a necessary lock, resulting in deadlock.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
665
(Improper Initialization)
The product does not initialize or incorrectly initializes a resource, which might leave the resource in an unexpected state when it is accessed or used.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
665
(Improper Initialization) >
456
(Missing Initialization of a Variable)
The product does not initialize critical variables, which causes the execution environment to use unexpected values.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
665
(Improper Initialization) >
457
(Use of Uninitialized Variable)
The code uses a variable that has not been initialized, leading to unpredictable or unintended results.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
672
(Operation on a Resource after Expiration or Release)
The product uses, accesses, or otherwise operates on a resource after that resource has been expired, released, or revoked.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
672
(Operation on a Resource after Expiration or Release) >
415
(Double Free)
The product calls free() twice on the same memory address, potentially leading to modification of unexpected memory locations.
Double-free
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
672
(Operation on a Resource after Expiration or Release) >
416
(Use After Free)
The product reuses or references memory after it has been freed. At some point afterward, the memory may be allocated again and saved in another pointer, while the original pointer references a location somewhere within the new allocation. Any operations using the original pointer are no longer valid because the memory "belongs" to the code that operates on the new pointer.
Dangling pointer
UAF
Use-After-Free
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
681
(Incorrect Conversion between Numeric Types)
When converting from one data type to another, such as long to integer, data can be omitted or translated in a way that produces unexpected values. If the resulting values are used in a sensitive context, then dangerous behaviors may occur.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
681
(Incorrect Conversion between Numeric Types) >
194
(Unexpected Sign Extension)
The product performs an operation on a number that causes it to be sign extended when it is transformed into a larger data type. When the original number is negative, this can produce unexpected values that lead to resultant weaknesses.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
681
(Incorrect Conversion between Numeric Types) >
195
(Signed to Unsigned Conversion Error)
The product uses a signed primitive and performs a cast to an unsigned primitive, which can produce an unexpected value if the value of the signed primitive can not be represented using an unsigned primitive.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
681
(Incorrect Conversion between Numeric Types) >
196
(Unsigned to Signed Conversion Error)
The product uses an unsigned primitive and performs a cast to a signed primitive, which can produce an unexpected value if the value of the unsigned primitive can not be represented using a signed primitive.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
681
(Incorrect Conversion between Numeric Types) >
197
(Numeric Truncation Error)
Truncation errors occur when a primitive is cast to a primitive of a smaller size and data is lost in the conversion.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
682
(Incorrect Calculation)
The product performs a calculation that generates incorrect or unintended results that are later used in security-critical decisions or resource management.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
682
(Incorrect Calculation) >
131
(Incorrect Calculation of Buffer Size)
The product does not correctly calculate the size to be used when allocating a buffer, which could lead to a buffer overflow.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
682
(Incorrect Calculation) >
369
(Divide By Zero)
The product divides a value by zero.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
703
(Improper Check or Handling of Exceptional Conditions)
The product does not properly anticipate or handle exceptional conditions that rarely occur during normal operation of the product.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
703
(Improper Check or Handling of Exceptional Conditions) >
248
(Uncaught Exception)
An exception is thrown from a function, but it is not caught.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
703
(Improper Check or Handling of Exceptional Conditions) >
391
(Unchecked Error Condition)
[PLANNED FOR DEPRECATION. SEE MAINTENANCE NOTES AND CONSIDER CWE-252, CWE-248, OR CWE-1069.] Ignoring exceptions and other error conditions may allow an attacker to induce unexpected behavior unnoticed.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
703
(Improper Check or Handling of Exceptional Conditions) >
392
(Missing Report of Error Condition)
The product encounters an error but does not provide a status code or return value to indicate that an error has occurred.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
704
(Incorrect Type Conversion or Cast)
The product does not correctly convert an object, resource, or structure from one type to a different type.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
758
(Reliance on Undefined, Unspecified, or Implementation-Defined Behavior)
The product uses an API function, data structure, or other entity in a way that relies on properties that are not always guaranteed to hold for that entity.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
835
(Loop with Unreachable Exit Condition ('Infinite Loop'))
The product contains an iteration or loop with an exit condition that cannot be reached, i.e., an infinite loop.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
908
(Use of Uninitialized Resource)
The product uses or accesses a resource that has not been initialized.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
1045
(Parent Class with a Virtual Destructor and a Child Class without a Virtual Destructor)
A parent class has a virtual destructor method, but the parent has a child class that does not have a virtual destructor.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
1051
(Initialization with Hard-Coded Network Resource Configuration Data)
The product initializes data using hard-coded values that act as network resource identifiers.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
1066
(Missing Serialization Control Element)
The product contains a serializable data element that does not
have an associated serialization method.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
1070
(Serializable Data Element Containing non-Serializable Item Elements)
The product contains a serializable, storable data element such as a field or member,
but the data element contains member elements that are not
serializable.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
1077
(Floating Point Comparison with Incorrect Operator)
The code performs a comparison such as an
equality test between two float (floating point) values, but
it uses comparison operators that do not account for the
possibility of loss of precision.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
1079
(Parent Class without Virtual Destructor Method)
A parent class contains one or more child classes, but the parent class does not have a virtual destructor method.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
1082
(Class Instance Self Destruction Control Element)
The code contains a class instance that calls the method or function to delete or destroy itself.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
1083
(Data Access from Outside Expected Data Manager Component)
The product is intended to manage data access through a particular data manager component such as a relational or non-SQL database, but it contains code that performs data access operations without using that component.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
1087
(Class with Virtual Method without a Virtual Destructor)
A class contains a virtual method, but the method does not have an associated virtual destructor.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
1088
(Synchronous Access of Remote Resource without Timeout)
The code has a synchronous call to a remote resource, but there is no timeout for the call, or the timeout is set to infinite.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1306
(CISQ Quality Measures - Reliability) >
1098
(Data Element containing Pointer Item without Proper Copy Control Element)
The code contains a data element with a pointer that does not have an associated copy or constructor method.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1307
(CISQ Quality Measures - Maintainability)
Weaknesses in this category are related to the CISQ Quality Measures for Maintainability. Presence of these weaknesses could reduce the maintainability of the software.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1307
(CISQ Quality Measures - Maintainability) >
407
(Inefficient Algorithmic Complexity)
An algorithm in a product has an inefficient worst-case computational complexity that may be detrimental to system performance and can be triggered by an attacker, typically using crafted manipulations that ensure that the worst case is being reached.
Quadratic Complexity
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1307
(CISQ Quality Measures - Maintainability) >
478
(Missing Default Case in Multiple Condition Expression)
The code does not have a default case in an expression with multiple conditions, such as a switch statement.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1307
(CISQ Quality Measures - Maintainability) >
480
(Use of Incorrect Operator)
The product accidentally uses the wrong operator, which changes the logic in security-relevant ways.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1307
(CISQ Quality Measures - Maintainability) >
484
(Omitted Break Statement in Switch)
The product omits a break statement within a switch or similar construct, causing code associated with multiple conditions to execute. This can cause problems when the programmer only intended to execute code associated with one condition.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1307
(CISQ Quality Measures - Maintainability) >
561
(Dead Code)
The product contains dead code, which can never be executed.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1307
(CISQ Quality Measures - Maintainability) >
570
(Expression is Always False)
The product contains an expression that will always evaluate to false.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1307
(CISQ Quality Measures - Maintainability) >
571
(Expression is Always True)
The product contains an expression that will always evaluate to true.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1307
(CISQ Quality Measures - Maintainability) >
783
(Operator Precedence Logic Error)
The product uses an expression in which operator precedence causes incorrect logic to be used.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1307
(CISQ Quality Measures - Maintainability) >
1041
(Use of Redundant Code)
The product has multiple functions, methods, procedures, macros, etc. that
contain the same code.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1307
(CISQ Quality Measures - Maintainability) >
1045
(Parent Class with a Virtual Destructor and a Child Class without a Virtual Destructor)
A parent class has a virtual destructor method, but the parent has a child class that does not have a virtual destructor.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1307
(CISQ Quality Measures - Maintainability) >
1047
(Modules with Circular Dependencies)
The product contains modules in which one module has references that cycle back to itself, i.e., there are circular dependencies.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1307
(CISQ Quality Measures - Maintainability) >
1048
(Invokable Control Element with Large Number of Outward Calls)
The code contains callable control elements that
contain an excessively large number of references to other
application objects external to the context of the callable,
i.e. a Fan-Out value that is excessively large.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1307
(CISQ Quality Measures - Maintainability) >
1051
(Initialization with Hard-Coded Network Resource Configuration Data)
The product initializes data using hard-coded values that act as network resource identifiers.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1307
(CISQ Quality Measures - Maintainability) >
1052
(Excessive Use of Hard-Coded Literals in Initialization)
The product initializes a data element using a hard-coded
literal that is not a simple integer or static constant element.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1307
(CISQ Quality Measures - Maintainability) >
1054
(Invocation of a Control Element at an Unnecessarily Deep Horizontal Layer)
The code at one architectural layer invokes code that resides
at a deeper layer than the adjacent layer, i.e., the invocation skips at least one
layer, and the invoked code is not part of a vertical utility layer that can be referenced from any horizontal layer.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1307
(CISQ Quality Measures - Maintainability) >
1055
(Multiple Inheritance from Concrete Classes)
The product contains a class with inheritance from more than
one concrete class.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1307
(CISQ Quality Measures - Maintainability) >
1062
(Parent Class with References to Child Class)
The code has a parent class that contains references to a child class, its methods, or its members.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1307
(CISQ Quality Measures - Maintainability) >
1064
(Invokable Control Element with Signature Containing an Excessive Number of Parameters)
The product contains a function, subroutine, or method whose signature has an unnecessarily large number of
parameters/arguments.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1307
(CISQ Quality Measures - Maintainability) >
1074
(Class with Excessively Deep Inheritance)
A class has an inheritance level that is too high, i.e., it
has a large number of parent classes.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1307
(CISQ Quality Measures - Maintainability) >
1075
(Unconditional Control Flow Transfer outside of Switch Block)
The product performs unconditional control transfer (such as a
"goto") in code outside of a branching structure such as a switch
block.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1307
(CISQ Quality Measures - Maintainability) >
1079
(Parent Class without Virtual Destructor Method)
A parent class contains one or more child classes, but the parent class does not have a virtual destructor method.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1307
(CISQ Quality Measures - Maintainability) >
1080
(Source Code File with Excessive Number of Lines of Code)
A source code file has too many lines of
code.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1307
(CISQ Quality Measures - Maintainability) >
1084
(Invokable Control Element with Excessive File or Data Access Operations)
A function or method contains too many
operations that utilize a data manager or file resource.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1307
(CISQ Quality Measures - Maintainability) >
1085
(Invokable Control Element with Excessive Volume of Commented-out Code)
A function, method, procedure, etc. contains an excessive amount of code that has been
commented out within its body.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1307
(CISQ Quality Measures - Maintainability) >
1086
(Class with Excessive Number of Child Classes)
A class contains an unnecessarily large number of
children.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1307
(CISQ Quality Measures - Maintainability) >
1087
(Class with Virtual Method without a Virtual Destructor)
A class contains a virtual method, but the method does not have an associated virtual destructor.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1307
(CISQ Quality Measures - Maintainability) >
1090
(Method Containing Access of a Member Element from Another Class)
A method for a class performs an operation that directly
accesses a member element from another class.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1307
(CISQ Quality Measures - Maintainability) >
1095
(Loop Condition Value Update within the Loop)
The product uses a loop with a control flow condition based on
a value that is updated within the body of the loop.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security)
Weaknesses in this category are related to the CISQ Quality Measures for Security. Presence of these weaknesses could reduce the security of the software.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
22
(Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal'))
The product uses external input to construct a pathname that is intended to identify a file or directory that is located underneath a restricted parent directory, but the product does not properly neutralize special elements within the pathname that can cause the pathname to resolve to a location that is outside of the restricted directory.
Directory traversal
Path traversal
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
22
(Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')) >
23
(Relative Path Traversal)
The product uses external input to construct a pathname that should be within a restricted directory, but it does not properly neutralize sequences such as ".." that can resolve to a location that is outside of that directory.
Zip Slip
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
22
(Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')) >
36
(Absolute Path Traversal)
The product uses external input to construct a pathname that should be within a restricted directory, but it does not properly neutralize absolute path sequences such as "/abs/path" that can resolve to a location that is outside of that directory.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
77
(Improper Neutralization of Special Elements used in a Command ('Command Injection'))
The product constructs all or part of a command using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended command when it is sent to a downstream component.
Command injection
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
77
(Improper Neutralization of Special Elements used in a Command ('Command Injection')) >
624
(Executable Regular Expression Error)
The product uses a regular expression that either (1) contains an executable component with user-controlled inputs, or (2) allows a user to enable execution by inserting pattern modifiers.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
77
(Improper Neutralization of Special Elements used in a Command ('Command Injection')) >
78
(Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection'))
The product constructs all or part of an OS command using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended OS command when it is sent to a downstream component.
Shell injection
Shell metacharacters
OS Command Injection
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
77
(Improper Neutralization of Special Elements used in a Command ('Command Injection')) >
88
(Improper Neutralization of Argument Delimiters in a Command ('Argument Injection'))
The product constructs a string for a command to be executed by a separate component
in another control sphere, but it does not properly delimit the
intended arguments, options, or switches within that command string.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
77
(Improper Neutralization of Special Elements used in a Command ('Command Injection')) >
917
(Improper Neutralization of Special Elements used in an Expression Language Statement ('Expression Language Injection'))
The product constructs all or part of an expression language (EL) statement in a framework such as a Java Server Page (JSP) using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended EL statement before it is executed.
EL Injection
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
89
(Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection'))
The product constructs all or part of an SQL command using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended SQL command when it is sent to a downstream component. Without sufficient removal or quoting of SQL syntax in user-controllable inputs, the generated SQL query can cause those inputs to be interpreted as SQL instead of ordinary user data.
SQL injection
SQLi
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
89
(Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')) >
564
(SQL Injection: Hibernate)
Using Hibernate to execute a dynamic SQL statement built with user-controlled input can allow an attacker to modify the statement's meaning or to execute arbitrary SQL commands.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
90
(Improper Neutralization of Special Elements used in an LDAP Query ('LDAP Injection'))
The product constructs all or part of an LDAP query using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended LDAP query when it is sent to a downstream component.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
91
(XML Injection (aka Blind XPath Injection))
The product does not properly neutralize special elements that are used in XML, allowing attackers to modify the syntax, content, or commands of the XML before it is processed by an end system.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
99
(Improper Control of Resource Identifiers ('Resource Injection'))
The product receives input from an upstream component, but it does not restrict or incorrectly restricts the input before it is used as an identifier for a resource that may be outside the intended sphere of control.
Insecure Direct Object Reference
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
119
(Improper Restriction of Operations within the Bounds of a Memory Buffer)
The product performs operations on a memory buffer, but it reads from or writes to a memory location outside the buffer's intended boundary. This may result in read or write operations on unexpected memory locations that could be linked to other variables, data structures, or internal program data.
Buffer Overflow
buffer overrun
memory safety
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
119
(Improper Restriction of Operations within the Bounds of a Memory Buffer) >
120
(Buffer Copy without Checking Size of Input ('Classic Buffer Overflow'))
The product copies an input buffer to an output buffer without verifying that the size of the input buffer is less than the size of the output buffer, leading to a buffer overflow.
Classic Buffer Overflow
Unbounded Transfer
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
119
(Improper Restriction of Operations within the Bounds of a Memory Buffer) >
123
(Write-what-where Condition)
Any condition where the attacker has the ability to write an arbitrary value to an arbitrary location, often as the result of a buffer overflow.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
119
(Improper Restriction of Operations within the Bounds of a Memory Buffer) >
125
(Out-of-bounds Read)
The product reads data past the end, or before the beginning, of the intended buffer.
OOB read
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
119
(Improper Restriction of Operations within the Bounds of a Memory Buffer) >
130
(Improper Handling of Length Parameter Inconsistency)
The product parses a formatted message or structure, but it does not handle or incorrectly handles a length field that is inconsistent with the actual length of the associated data.
length manipulation
length tampering
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
119
(Improper Restriction of Operations within the Bounds of a Memory Buffer) >
786
(Access of Memory Location Before Start of Buffer)
The product reads or writes to a buffer using an index or pointer that references a memory location prior to the beginning of the buffer.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
119
(Improper Restriction of Operations within the Bounds of a Memory Buffer) >
787
(Out-of-bounds Write)
The product writes data past the end, or before the beginning, of the intended buffer.
Memory Corruption
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
119
(Improper Restriction of Operations within the Bounds of a Memory Buffer) >
788
(Access of Memory Location After End of Buffer)
The product reads or writes to a buffer using an index or pointer that references a memory location after the end of the buffer.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
119
(Improper Restriction of Operations within the Bounds of a Memory Buffer) >
805
(Buffer Access with Incorrect Length Value)
The product uses a sequential operation to read or write a buffer, but it uses an incorrect length value that causes it to access memory that is outside of the bounds of the buffer.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
119
(Improper Restriction of Operations within the Bounds of a Memory Buffer) >
822
(Untrusted Pointer Dereference)
The product obtains a value from an untrusted source, converts this value to a pointer, and dereferences the resulting pointer.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
119
(Improper Restriction of Operations within the Bounds of a Memory Buffer) >
823
(Use of Out-of-range Pointer Offset)
The product performs pointer arithmetic on a valid pointer, but it uses an offset that can point outside of the intended range of valid memory locations for the resulting pointer.
Untrusted pointer offset
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
119
(Improper Restriction of Operations within the Bounds of a Memory Buffer) >
824
(Access of Uninitialized Pointer)
The product accesses or uses a pointer that has not been initialized.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
119
(Improper Restriction of Operations within the Bounds of a Memory Buffer) >
825
(Expired Pointer Dereference)
The product dereferences a pointer that contains a location for memory that was previously valid, but is no longer valid.
Dangling pointer
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
129
(Improper Validation of Array Index)
The product uses untrusted input when calculating or using an array index, but the product does not validate or incorrectly validates the index to ensure the index references a valid position within the array.
out-of-bounds array index
index-out-of-range
array index underflow
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
134
(Use of Externally-Controlled Format String)
The product uses a function that accepts a format string as an argument, but the format string originates from an external source.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
252
(Unchecked Return Value)
The product does not check the return value from a method or function, which can prevent it from detecting unexpected states and conditions.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
404
(Improper Resource Shutdown or Release)
The product does not release or incorrectly releases a resource before it is made available for re-use.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
404
(Improper Resource Shutdown or Release) >
401
(Missing Release of Memory after Effective Lifetime)
The product does not sufficiently track and release allocated memory after it has been used, which slowly consumes remaining memory.
Memory Leak
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
404
(Improper Resource Shutdown or Release) >
772
(Missing Release of Resource after Effective Lifetime)
The product does not release a resource after its effective lifetime has ended, i.e., after the resource is no longer needed.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
404
(Improper Resource Shutdown or Release) >
775
(Missing Release of File Descriptor or Handle after Effective Lifetime)
The product does not release a file descriptor or handle after its effective lifetime has ended, i.e., after the file descriptor/handle is no longer needed.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
424
(Improper Protection of Alternate Path)
The product does not sufficiently protect all possible paths that a user can take to access restricted functionality or resources.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
434
(Unrestricted Upload of File with Dangerous Type)
The product allows the upload or transfer of dangerous file types that are automatically processed within its environment.
Unrestricted File Upload
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
477
(Use of Obsolete Function)
The code uses deprecated or obsolete functions, which suggests that the code has not been actively reviewed or maintained.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
480
(Use of Incorrect Operator)
The product accidentally uses the wrong operator, which changes the logic in security-relevant ways.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
502
(Deserialization of Untrusted Data)
The product deserializes untrusted data without sufficiently ensuring that the resulting data will be valid.
Marshaling, Unmarshaling
Pickling, Unpickling
PHP Object Injection
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
570
(Expression is Always False)
The product contains an expression that will always evaluate to false.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
571
(Expression is Always True)
The product contains an expression that will always evaluate to true.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
606
(Unchecked Input for Loop Condition)
The product does not properly check inputs that are used for loop conditions, potentially leading to a denial of service or other consequences because of excessive looping.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
611
(Improper Restriction of XML External Entity Reference)
The product processes an XML document that can contain XML entities with URIs that resolve to documents outside of the intended sphere of control, causing the product to embed incorrect documents into its output.
XXE
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
643
(Improper Neutralization of Data within XPath Expressions ('XPath Injection'))
The product uses external input to dynamically construct an XPath expression used to retrieve data from an XML database, but it does not neutralize or incorrectly neutralizes that input. This allows an attacker to control the structure of the query.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
652
(Improper Neutralization of Data within XQuery Expressions ('XQuery Injection'))
The product uses external input to dynamically construct an XQuery expression used to retrieve data from an XML database, but it does not neutralize or incorrectly neutralizes that input. This allows an attacker to control the structure of the query.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
662
(Improper Synchronization)
The product utilizes multiple threads or processes to allow temporary access to a shared resource that can only be exclusive to one process at a time, but it does not properly synchronize these actions, which might cause simultaneous accesses of this resource by multiple threads or processes.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
662
(Improper Synchronization) >
1058
(Invokable Control Element in Multi-Thread Context with non-Final Static Storable or Member Element)
The code contains a function or method that
operates in a multi-threaded environment but owns an unsafe non-final
static storable or member data element.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
662
(Improper Synchronization) >
1096
(Singleton Class Instance Creation without Proper Locking or Synchronization)
The product implements a Singleton design pattern but does not use appropriate locking or other synchronization mechanism to ensure that the singleton class is only instantiated once.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
662
(Improper Synchronization) >
366
(Race Condition within a Thread)
If two threads of execution use a resource simultaneously, there exists the possibility that resources may be used while invalid, in turn making the state of execution undefined.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
662
(Improper Synchronization) >
543
(Use of Singleton Pattern Without Synchronization in a Multithreaded Context)
The product uses the singleton pattern when creating a resource within a multithreaded environment.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
662
(Improper Synchronization) >
567
(Unsynchronized Access to Shared Data in a Multithreaded Context)
The product does not properly synchronize shared data, such as static variables across threads, which can lead to undefined behavior and unpredictable data changes.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
662
(Improper Synchronization) >
667
(Improper Locking)
The product does not properly acquire or release a lock on a resource, leading to unexpected resource state changes and behaviors.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
662
(Improper Synchronization) >
764
(Multiple Locks of a Critical Resource)
The product locks a critical resource more times than intended, leading to an unexpected state in the system.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
662
(Improper Synchronization) >
820
(Missing Synchronization)
The product utilizes a shared resource in a concurrent manner but does not attempt to synchronize access to the resource.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
662
(Improper Synchronization) >
821
(Incorrect Synchronization)
The product utilizes a shared resource in a concurrent manner, but it does not correctly synchronize access to the resource.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
662
(Improper Synchronization) >
833
(Deadlock)
The product contains multiple threads or executable segments that are waiting for each other to release a necessary lock, resulting in deadlock.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
665
(Improper Initialization)
The product does not initialize or incorrectly initializes a resource, which might leave the resource in an unexpected state when it is accessed or used.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
665
(Improper Initialization) >
456
(Missing Initialization of a Variable)
The product does not initialize critical variables, which causes the execution environment to use unexpected values.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
665
(Improper Initialization) >
457
(Use of Uninitialized Variable)
The code uses a variable that has not been initialized, leading to unpredictable or unintended results.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
672
(Operation on a Resource after Expiration or Release)
The product uses, accesses, or otherwise operates on a resource after that resource has been expired, released, or revoked.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
672
(Operation on a Resource after Expiration or Release) >
415
(Double Free)
The product calls free() twice on the same memory address, potentially leading to modification of unexpected memory locations.
Double-free
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
672
(Operation on a Resource after Expiration or Release) >
416
(Use After Free)
The product reuses or references memory after it has been freed. At some point afterward, the memory may be allocated again and saved in another pointer, while the original pointer references a location somewhere within the new allocation. Any operations using the original pointer are no longer valid because the memory "belongs" to the code that operates on the new pointer.
Dangling pointer
UAF
Use-After-Free
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
681
(Incorrect Conversion between Numeric Types)
When converting from one data type to another, such as long to integer, data can be omitted or translated in a way that produces unexpected values. If the resulting values are used in a sensitive context, then dangerous behaviors may occur.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
681
(Incorrect Conversion between Numeric Types) >
194
(Unexpected Sign Extension)
The product performs an operation on a number that causes it to be sign extended when it is transformed into a larger data type. When the original number is negative, this can produce unexpected values that lead to resultant weaknesses.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
681
(Incorrect Conversion between Numeric Types) >
195
(Signed to Unsigned Conversion Error)
The product uses a signed primitive and performs a cast to an unsigned primitive, which can produce an unexpected value if the value of the signed primitive can not be represented using an unsigned primitive.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
681
(Incorrect Conversion between Numeric Types) >
196
(Unsigned to Signed Conversion Error)
The product uses an unsigned primitive and performs a cast to a signed primitive, which can produce an unexpected value if the value of the unsigned primitive can not be represented using a signed primitive.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
681
(Incorrect Conversion between Numeric Types) >
197
(Numeric Truncation Error)
Truncation errors occur when a primitive is cast to a primitive of a smaller size and data is lost in the conversion.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
682
(Incorrect Calculation)
The product performs a calculation that generates incorrect or unintended results that are later used in security-critical decisions or resource management.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
682
(Incorrect Calculation) >
131
(Incorrect Calculation of Buffer Size)
The product does not correctly calculate the size to be used when allocating a buffer, which could lead to a buffer overflow.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
682
(Incorrect Calculation) >
369
(Divide By Zero)
The product divides a value by zero.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
732
(Incorrect Permission Assignment for Critical Resource)
The product specifies permissions for a security-critical resource in a way that allows that resource to be read or modified by unintended actors.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
778
(Insufficient Logging)
When a security-critical event occurs, the product either does not record the event or omits important details about the event when logging it.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
783
(Operator Precedence Logic Error)
The product uses an expression in which operator precedence causes incorrect logic to be used.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
789
(Memory Allocation with Excessive Size Value)
The product allocates memory based on an untrusted, large size value, but it does not ensure that the size is within expected limits, allowing arbitrary amounts of memory to be allocated.
Stack Exhaustion
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
79
(Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting'))
The product does not neutralize or incorrectly neutralizes user-controllable input before it is placed in output that is used as a web page that is served to other users.
XSS
HTML Injection
CSS
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
798
(Use of Hard-coded Credentials)
The product contains hard-coded credentials, such as a password or cryptographic key.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
798
(Use of Hard-coded Credentials) >
259
(Use of Hard-coded Password)
The product contains a hard-coded password, which it uses for its own inbound authentication or for outbound communication to external components.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
798
(Use of Hard-coded Credentials) >
321
(Use of Hard-coded Cryptographic Key)
The use of a hard-coded cryptographic key significantly increases the possibility that encrypted data may be recovered.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1308
(CISQ Quality Measures - Security) >
835
(Loop with Unreachable Exit Condition ('Infinite Loop'))
The product contains an iteration or loop with an exit condition that cannot be reached, i.e., an infinite loop.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1309
(CISQ Quality Measures - Efficiency)
Weaknesses in this category are related to the CISQ Quality Measures for Efficiency. Presence of these weaknesses could reduce the efficiency of the software.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1309
(CISQ Quality Measures - Efficiency) >
404
(Improper Resource Shutdown or Release)
The product does not release or incorrectly releases a resource before it is made available for re-use.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1309
(CISQ Quality Measures - Efficiency) >
404
(Improper Resource Shutdown or Release) >
401
(Missing Release of Memory after Effective Lifetime)
The product does not sufficiently track and release allocated memory after it has been used, which slowly consumes remaining memory.
Memory Leak
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1309
(CISQ Quality Measures - Efficiency) >
404
(Improper Resource Shutdown or Release) >
772
(Missing Release of Resource after Effective Lifetime)
The product does not release a resource after its effective lifetime has ended, i.e., after the resource is no longer needed.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1309
(CISQ Quality Measures - Efficiency) >
404
(Improper Resource Shutdown or Release) >
775
(Missing Release of File Descriptor or Handle after Effective Lifetime)
The product does not release a file descriptor or handle after its effective lifetime has ended, i.e., after the file descriptor/handle is no longer needed.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1309
(CISQ Quality Measures - Efficiency) >
424
(Improper Protection of Alternate Path)
The product does not sufficiently protect all possible paths that a user can take to access restricted functionality or resources.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1309
(CISQ Quality Measures - Efficiency) >
1042
(Static Member Data Element outside of a Singleton Class Element)
The code contains a member element that is declared as static (but not final), in which
its parent class element
is not a singleton class - that is, a class element that can be used only once in
the 'to' association of a Create action.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1309
(CISQ Quality Measures - Efficiency) >
1043
(Data Element Aggregating an Excessively Large Number of Non-Primitive Elements)
The product uses a data element that has an excessively large
number of sub-elements with non-primitive data types such as structures or aggregated objects.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1309
(CISQ Quality Measures - Efficiency) >
1046
(Creation of Immutable Text Using String Concatenation)
The product creates an immutable text string using string concatenation operations.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1309
(CISQ Quality Measures - Efficiency) >
1049
(Excessive Data Query Operations in a Large Data Table)
The product performs a data query with a large number of joins
and sub-queries on a large data table.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1309
(CISQ Quality Measures - Efficiency) >
1050
(Excessive Platform Resource Consumption within a Loop)
The product has a loop body or loop condition that contains a control element that directly or
indirectly consumes platform resources, e.g. messaging, sessions, locks, or file
descriptors.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1309
(CISQ Quality Measures - Efficiency) >
1057
(Data Access Operations Outside of Expected Data Manager Component)
The product uses a dedicated, central data manager component as required by design, but it contains code that performs data-access operations that do not use this data manager.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1309
(CISQ Quality Measures - Efficiency) >
1060
(Excessive Number of Inefficient Server-Side Data Accesses)
The product performs too many data queries without using efficient data processing functionality such as stored procedures.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1309
(CISQ Quality Measures - Efficiency) >
1067
(Excessive Execution of Sequential Searches of Data Resource)
The product contains a data query against an SQL table or view
that is configured in a way that does not utilize an index and may cause
sequential searches to be performed.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1309
(CISQ Quality Measures - Efficiency) >
1072
(Data Resource Access without Use of Connection Pooling)
The product accesses a data resource through a database without using a
connection pooling capability.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1309
(CISQ Quality Measures - Efficiency) >
1073
(Non-SQL Invokable Control Element with Excessive Number of Data Resource Accesses)
The product contains a client with a function or method that contains a large number of data accesses/queries that are sent through a data manager, i.e., does not use efficient database capabilities.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1309
(CISQ Quality Measures - Efficiency) >
1089
(Large Data Table with Excessive Number of Indices)
The product uses a large data table that contains an excessively large number of
indices.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1309
(CISQ Quality Measures - Efficiency) >
1091
(Use of Object without Invoking Destructor Method)
The product contains a method that accesses an object but does not later invoke
the element's associated finalize/destructor method.
![]() ![]()
1305
(CISQ Quality Measures (2020)) >
1309
(CISQ Quality Measures - Efficiency) >
1094
(Excessive Index Range Scan for a Data Resource)
The product contains an index range scan for a large data table,
but the scan can cover a large number of rows.
More information is available — Please edit the custom filter or select a different filter. |
Use of the Common Weakness Enumeration (CWE™) and the associated references from this website are subject to the Terms of Use. CWE is sponsored by the U.S. Department of Homeland Security (DHS) Cybersecurity and Infrastructure Security Agency (CISA) and managed by the Homeland Security Systems Engineering and Development Institute (HSSEDI) which is operated by The MITRE Corporation (MITRE). Copyright © 2006–2025, The MITRE Corporation. CWE, CWSS, CWRAF, and the CWE logo are trademarks of The MITRE Corporation. |