Category: Comprehensive Categorization: Poor Coding Practices

Incomplete
Summary

Weaknesses in this category are related to poor coding practices.

Membership
IDNameDescription
CWE-1007Insufficient Visual Distinction of Homoglyphs Presented to UserThe product displays information or identifiers to a user, but the display mechanism does not make it easy for the user to distinguish between visually similar or identical glyphs (homoglyphs), which may cause the user to misinterpret a glyph and perform an unintended, insecure action.
CWE-103Struts: Incomplete validate() Method DefinitionThe product has a validator form that either does not define a validate() method, or defines a validate() method but does not call super.validate().
CWE-104Struts: Form Bean Does Not Extend Validation ClassIf a form bean does not extend an ActionForm subclass of the Validator framework, it can expose the application to other weaknesses related to insufficient input validation.
CWE-1041Use of Redundant CodeThe product has multiple functions, methods, procedures, macros, etc. that contain the same code.
CWE-1043Data Element Aggregating an Excessively Large Number of Non-Primitive ElementsThe 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.
CWE-1044Architecture with Number of Horizontal Layers Outside of Expected RangeThe product's architecture contains too many - or too few - horizontal layers.
CWE-1045Parent Class with a Virtual Destructor and a Child Class without a Virtual DestructorA parent class has a virtual destructor method, but the parent has a child class that does not have a virtual destructor.
CWE-1047Modules with Circular DependenciesThe product contains modules in which one module has references that cycle back to itself, i.e., there are circular dependencies.
CWE-1048Invokable Control Element with Large Number of Outward CallsThe 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.
CWE-1053Missing Documentation for DesignThe product does not have documentation that represents how it is designed.
CWE-1054Invocation of a Control Element at an Unnecessarily Deep Horizontal LayerThe 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.
CWE-1055Multiple Inheritance from Concrete ClassesThe product contains a class with inheritance from more than one concrete class.
CWE-1056Invokable Control Element with Variadic ParametersA named-callable or method control element has a signature that supports a variable (variadic) number of parameters or arguments.
CWE-1057Data Access Operations Outside of Expected Data Manager ComponentThe 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.
CWE-1059Insufficient Technical DocumentationThe product does not contain sufficient technical or engineering documentation (whether on paper or in electronic form) that contains descriptions of all the relevant software/hardware elements of the product, such as its usage, structure, architectural components, interfaces, design, implementation, configuration, operation, etc.
CWE-1060Excessive Number of Inefficient Server-Side Data AccessesThe product performs too many data queries without using efficient data processing functionality such as stored procedures.
CWE-1061Insufficient EncapsulationThe product does not sufficiently hide the internal representation and implementation details of data or methods, which might allow external components or modules to modify data unexpectedly, invoke unexpected functionality, or introduce dependencies that the programmer did not intend.
CWE-1062Parent Class with References to Child ClassThe code has a parent class that contains references to a child class, its methods, or its members.
CWE-1064Invokable Control Element with Signature Containing an Excessive Number of ParametersThe product contains a function, subroutine, or method whose signature has an unnecessarily large number of parameters/arguments.
CWE-1065Runtime Resource Management Control Element in a Component Built to Run on Application ServersThe product uses deployed components from application servers, but it also uses low-level functions/methods for management of resources, instead of the API provided by the application server.
CWE-1066Missing Serialization Control ElementThe product contains a serializable data element that does not have an associated serialization method.
CWE-1068Inconsistency Between Implementation and Documented DesignThe implementation of the product is not consistent with the design as described within the relevant documentation.
CWE-1069Empty Exception BlockAn invokable code block contains an exception handling block that does not contain any code, i.e. is empty.
CWE-107Struts: Unused Validation FormAn unused validation form indicates that validation logic is not up-to-date.
CWE-1070Serializable Data Element Containing non-Serializable Item ElementsThe product contains a serializable, storable data element such as a field or member, but the data element contains member elements that are not serializable.
CWE-1071Empty Code BlockThe source code contains a block that does not contain any code, i.e., the block is empty.
CWE-1074Class with Excessively Deep InheritanceA class has an inheritance level that is too high, i.e., it has a large number of parent classes.
CWE-1075Unconditional Control Flow Transfer outside of Switch BlockThe product performs unconditional control transfer (such as a "goto") in code outside of a branching structure such as a switch block.
CWE-1076Insufficient Adherence to Expected ConventionsThe product's architecture, source code, design, documentation, or other artifact does not follow required conventions.
CWE-1078Inappropriate Source Code Style or FormattingThe source code does not follow desired style or formatting for indentation, white space, comments, etc.
CWE-1079Parent Class without Virtual Destructor MethodA parent class contains one or more child classes, but the parent class does not have a virtual destructor method.
CWE-1080Source Code File with Excessive Number of Lines of CodeA source code file has too many lines of code.
CWE-1082Class Instance Self Destruction Control ElementThe code contains a class instance that calls the method or function to delete or destroy itself.
CWE-1083Data Access from Outside Expected Data Manager ComponentThe 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.
CWE-1085Invokable Control Element with Excessive Volume of Commented-out CodeA function, method, procedure, etc. contains an excessive amount of code that has been commented out within its body.
CWE-1086Class with Excessive Number of Child ClassesA class contains an unnecessarily large number of children.
CWE-1087Class with Virtual Method without a Virtual DestructorA class contains a virtual method, but the method does not have an associated virtual destructor.
CWE-1090Method Containing Access of a Member Element from Another ClassA method for a class performs an operation that directly accesses a member element from another class.
CWE-1092Use of Same Invokable Control Element in Multiple Architectural LayersThe product uses the same control element across multiple architectural layers.
CWE-1093Excessively Complex Data RepresentationThe product uses an unnecessarily complex internal representation for its data structures or interrelationships between those structures.
CWE-1095Loop Condition Value Update within the LoopThe product uses a loop with a control flow condition based on a value that is updated within the body of the loop.
CWE-1097Persistent Storable Data Element without Associated Comparison Control ElementThe product uses a storable data element that does not have all of the associated functions or methods that are necessary to support comparison.
CWE-1098Data Element containing Pointer Item without Proper Copy Control ElementThe code contains a data element with a pointer that does not have an associated copy or constructor method.
CWE-1099Inconsistent Naming Conventions for IdentifiersThe product's code, documentation, or other artifacts do not consistently use the same naming conventions for variables, callables, groups of related callables, I/O capabilities, data types, file names, or similar types of elements.
CWE-11ASP.NET Misconfiguration: Creating Debug BinaryDebugging messages help attackers learn about the system and plan a form of attack.
CWE-110Struts: Validator Without Form FieldValidation fields that do not appear in forms they are associated with indicate that the validation logic is out of date.
CWE-1100Insufficient Isolation of System-Dependent FunctionsThe product or code does not isolate system-dependent functionality into separate standalone modules.
CWE-1101Reliance on Runtime Component in Generated CodeThe product uses automatically-generated code that cannot be executed without a specific runtime support component.
CWE-1102Reliance on Machine-Dependent Data RepresentationThe code uses a data representation that relies on low-level data representation or constructs that may vary across different processors, physical machines, OSes, or other physical components.
CWE-1103Use of Platform-Dependent Third Party ComponentsThe product relies on third-party components that do not provide equivalent functionality across all desirable platforms.
CWE-1105Insufficient Encapsulation of Machine-Dependent FunctionalityThe product or code uses machine-dependent functionality, but it does not sufficiently encapsulate or isolate this functionality from the rest of the code.
CWE-1106Insufficient Use of Symbolic ConstantsThe source code uses literal constants that may need to change or evolve over time, instead of using symbolic constants.
CWE-1107Insufficient Isolation of Symbolic Constant DefinitionsThe source code uses symbolic constants, but it does not sufficiently place the definitions of these constants into a more centralized or isolated location.
CWE-1108Excessive Reliance on Global VariablesThe code is structured in a way that relies too much on using or setting global variables throughout various points in the code, instead of preserving the associated information in a narrower, more local context.
CWE-1109Use of Same Variable for Multiple PurposesThe code contains a callable, block, or other code element in which the same variable is used to control more than one unique task or store more than one instance of data.
CWE-111Direct Use of Unsafe JNIWhen a Java application uses the Java Native Interface (JNI) to call code written in another programming language, it can expose the application to weaknesses in that code, even if those weaknesses cannot occur in Java.
CWE-1110Incomplete Design DocumentationThe product's design documentation does not adequately describe control flow, data flow, system initialization, relationships between tasks, components, rationales, or other important aspects of the design.
CWE-1111Incomplete I/O DocumentationThe product's documentation does not adequately define inputs, outputs, or system/software interfaces.
CWE-1112Incomplete Documentation of Program ExecutionThe document does not fully define all mechanisms that are used to control or influence how product-specific programs are executed.
CWE-1113Inappropriate Comment StyleThe source code uses comment styles or formats that are inconsistent or do not follow expected standards for the product.
CWE-1114Inappropriate Whitespace StyleThe source code contains whitespace that is inconsistent across the code or does not follow expected standards for the product.
CWE-1115Source Code Element without Standard PrologueThe source code contains elements such as source files that do not consistently provide a prologue or header that has been standardized for the project.
CWE-1116Inaccurate CommentsThe source code contains comments that do not accurately describe or explain aspects of the portion of the code with which the comment is associated.
CWE-1117Callable with Insufficient Behavioral SummaryThe code contains a function or method whose signature and/or associated inline documentation does not sufficiently describe the callable's inputs, outputs, side effects, assumptions, or return codes.
CWE-1118Insufficient Documentation of Error Handling TechniquesThe documentation does not sufficiently describe the techniques that are used for error handling, exception processing, or similar mechanisms.
CWE-1119Excessive Use of Unconditional BranchingThe code uses too many unconditional branches (such as "goto").
CWE-1120Excessive Code ComplexityThe code is too complex, as calculated using a well-defined, quantitative measure.
CWE-1121Excessive McCabe Cyclomatic ComplexityThe code contains McCabe cyclomatic complexity that exceeds a desirable maximum.
CWE-1122Excessive Halstead ComplexityThe code is structured in a way that a Halstead complexity measure exceeds a desirable maximum.
CWE-1123Excessive Use of Self-Modifying CodeThe product uses too much self-modifying code.
CWE-1124Excessively Deep NestingThe code contains a callable or other code grouping in which the nesting / branching is too deep.
CWE-1125Excessive Attack SurfaceThe product has an attack surface whose quantitative measurement exceeds a desirable maximum.
CWE-1126Declaration of Variable with Unnecessarily Wide ScopeThe source code declares a variable in one scope, but the variable is only used within a narrower scope.
CWE-1127Compilation with Insufficient Warnings or ErrorsThe code is compiled without sufficient warnings enabled, which may prevent the detection of subtle bugs or quality issues.
CWE-1164Irrelevant CodeThe product contains code that is not essential for execution, i.e. makes no state changes and has no side effects that alter data or control flow, such that removal of the code would have no impact to functionality or correctness.
CWE-1177Use of Prohibited CodeThe product uses a function, library, or third party component that has been explicitly prohibited, whether by the developer or the customer.
CWE-1209Failure to Disable Reserved BitsThe reserved bits in a hardware design are not disabled prior to production. Typically, reserved bits are used for future capabilities and should not support any functional logic in the design. However, designers might covertly use these bits to debug or further develop new capabilities in production hardware. Adversaries with access to these bits will write to them in hopes of compromising hardware state.
CWE-1245Improper Finite State Machines (FSMs) in Hardware LogicFaulty finite state machines (FSMs) in the hardware logic allow an attacker to put the system in an undefined state, to cause a denial of service (DoS) or gain privileges on the victim's system.
CWE-1341Multiple Releases of Same Resource or HandleThe product attempts to close or release a resource or handle more than once, without any successful open between the close operations.
CWE-1357Reliance on Insufficiently Trustworthy ComponentThe product is built from multiple separate components, but it uses a component that is not sufficiently trusted to meet expectations for security, reliability, updateability, and maintainability.
CWE-1434Insecure Setting of Generative AI/ML Model Inference ParametersThe product has a component that relies on a generative AI/ML model configured with inference parameters that produce an unacceptably high rate of erroneous or unexpected outputs.
CWE-242Use of Inherently Dangerous FunctionThe product calls a function that can never be guaranteed to work safely.
CWE-245J2EE Bad Practices: Direct Management of ConnectionsThe J2EE application directly manages connections, instead of using the container's connection management facilities.
CWE-246J2EE Bad Practices: Direct Use of SocketsThe J2EE application directly uses sockets instead of using framework method calls.
CWE-253Incorrect Check of Function Return ValueThe product incorrectly checks a return value from a function, which prevents it from detecting errors or exceptional conditions.
CWE-358Improperly Implemented Security Check for StandardThe product does not implement or incorrectly implements one or more security-relevant checks as specified by the design of a standardized algorithm, protocol, or technique.
CWE-383J2EE Bad Practices: Direct Use of ThreadsThread management in a Web application is forbidden in some circumstances and is always highly error prone.
CWE-392Missing Report of Error ConditionThe product encounters an error but does not provide a status code or return value to indicate that an error has occurred.
CWE-393Return of Wrong Status CodeA function or operation returns an incorrect return value or status code that does not indicate the true result of execution, causing the product to modify its behavior based on the incorrect result.
CWE-440Expected Behavior ViolationA feature, API, or function does not perform according to its specification.
CWE-446UI Discrepancy for Security FeatureThe user interface does not correctly enable or configure a security feature, but the interface provides feedback that causes the user to believe that the feature is in a secure state.
CWE-448Obsolete Feature in UIA UI function is obsolete and the product does not warn the user.
CWE-449The UI Performs the Wrong ActionThe UI performs the wrong action with respect to the user's request.
CWE-451User Interface (UI) Misrepresentation of Critical InformationThe user interface (UI) does not properly represent critical information to the user, allowing the information - or its source - to be obscured or spoofed. This is often a component in phishing attacks.
CWE-462Duplicate Key in Associative List (Alist)Duplicate keys in associative lists can lead to non-unique keys being mistaken for an error.
CWE-474Use of Function with Inconsistent ImplementationsThe code uses a function that has inconsistent implementations across operating systems and versions.
CWE-475Undefined Behavior for Input to APIThe behavior of this function is undefined unless its control parameter is set to a specific value.
CWE-476NULL Pointer DereferenceThe product dereferences a pointer that it expects to be valid but is NULL.
CWE-477Use of Obsolete FunctionThe code uses deprecated or obsolete functions, which suggests that the code has not been actively reviewed or maintained.
CWE-484Omitted Break Statement in SwitchThe 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.
CWE-489Active Debug CodeThe product is released with debugging code still enabled or active.
CWE-506Embedded Malicious CodeThe product contains code that appears to be malicious in nature.
CWE-507Trojan HorseThe product appears to contain benign or useful functionality, but it also contains code that is hidden from normal operation that violates the intended security policy of the user or the system administrator.
CWE-508Non-Replicating Malicious CodeNon-replicating malicious code only resides on the target system or product that is attacked; it does not attempt to spread to other systems.
CWE-509Replicating Malicious Code (Virus or Worm)Replicating malicious code, including viruses and worms, will attempt to attack other systems once it has successfully compromised the target system or the product.
CWE-510TrapdoorA trapdoor is a hidden piece of code that responds to a special input, allowing its user access to resources without passing through the normal security enforcement mechanism.
CWE-511Logic/Time BombThe product contains code that is designed to disrupt the legitimate operation of the product (or its environment) when a certain time passes, or when a certain logical condition is met.
CWE-512SpywareThe product collects personally identifiable information about a human user or the user's activities, but the product accesses this information using other resources besides itself, and it does not require that user's explicit approval or direct input into the product.
CWE-546Suspicious CommentThe code contains comments that suggest the presence of bugs, incomplete functionality, or weaknesses.
CWE-547Use of Hard-coded, Security-relevant ConstantsThe product uses hard-coded constants instead of symbolic names for security-critical values, which increases the likelihood of mistakes during code maintenance or security policy change.
CWE-560Use of umask() with chmod-style ArgumentThe product calls umask() with an incorrect argument that is specified as if it is an argument to chmod().
CWE-561Dead CodeThe product contains dead code, which can never be executed.
CWE-563Assignment to Variable without UseThe variable's value is assigned but never used, making it a dead store.
CWE-570Expression is Always FalseThe product contains an expression that will always evaluate to false.
CWE-571Expression is Always TrueThe product contains an expression that will always evaluate to true.
CWE-573Improper Following of Specification by CallerThe product does not follow or incorrectly follows the specifications as required by the implementation language, environment, framework, protocol, or platform.
CWE-575EJB Bad Practices: Use of AWT SwingThe product violates the Enterprise JavaBeans (EJB) specification by using AWT/Swing.
CWE-576EJB Bad Practices: Use of Java I/OThe product violates the Enterprise JavaBeans (EJB) specification by using the java.io package.
CWE-577EJB Bad Practices: Use of SocketsThe product violates the Enterprise JavaBeans (EJB) specification by using sockets.
CWE-578EJB Bad Practices: Use of Class LoaderThe product violates the Enterprise JavaBeans (EJB) specification by using the class loader.
CWE-579J2EE Bad Practices: Non-serializable Object Stored in SessionThe product stores a non-serializable object as an HttpSession attribute, which can hurt reliability.
CWE-581Object Model Violation: Just One of Equals and Hashcode DefinedThe product does not maintain equal hashcodes for equal objects.
CWE-585Empty Synchronized BlockThe product contains an empty synchronized block.
CWE-586Explicit Call to Finalize()The product makes an explicit call to the finalize() method from outside the finalizer.
CWE-589Call to Non-ubiquitous APIThe product uses an API function that does not exist on all versions of the target platform. This could cause portability problems or inconsistencies that allow denial of service or other consequences.
CWE-594J2EE Framework: Saving Unserializable Objects to DiskWhen the J2EE container attempts to write unserializable objects to disk there is no guarantee that the process will complete successfully.
CWE-605Multiple Binds to the Same PortWhen multiple sockets are allowed to bind to the same port, other services on that port may be stolen or spoofed.
CWE-628Function Call with Incorrectly Specified ArgumentsThe product calls a function, procedure, or routine with arguments that are not correctly specified, leading to always-incorrect behavior and resultant weaknesses.
CWE-675Multiple Operations on Resource in Single-Operation ContextThe product performs the same operation on a resource two or more times, when the operation should only be applied once.
CWE-676Use of Potentially Dangerous FunctionThe product invokes a potentially dangerous function that could introduce a vulnerability if it is used incorrectly, but the function can also be used safely.
CWE-683Function Call With Incorrect Order of ArgumentsThe product calls a function, procedure, or routine, but the caller specifies the arguments in an incorrect order, leading to resultant weaknesses.
CWE-684Incorrect Provision of Specified FunctionalityThe code does not function according to its published specifications, potentially leading to incorrect usage.
CWE-685Function Call With Incorrect Number of ArgumentsThe product calls a function, procedure, or routine, but the caller specifies too many arguments, or too few arguments, which may lead to undefined behavior and resultant weaknesses.
CWE-686Function Call With Incorrect Argument TypeThe product calls a function, procedure, or routine, but the caller specifies an argument that is the wrong data type, which may lead to resultant weaknesses.
CWE-687Function Call With Incorrectly Specified Argument ValueThe product calls a function, procedure, or routine, but the caller specifies an argument that contains the wrong value, which may lead to resultant weaknesses.
CWE-688Function Call With Incorrect Variable or Reference as ArgumentThe product calls a function, procedure, or routine, but the caller specifies the wrong variable or reference as one of the arguments, which may lead to undefined behavior and resultant weaknesses.
CWE-695Use of Low-Level FunctionalityThe product uses low-level functionality that is explicitly prohibited by the framework or specification under which the product is supposed to operate.
CWE-710Improper Adherence to Coding StandardsThe product does not follow certain coding rules for development, which can lead to resultant weaknesses or increase the severity of the associated vulnerabilities.
CWE-758Reliance on Undefined, Unspecified, or Implementation-Defined BehaviorThe 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.
CWE-766Critical Data Element Declared PublicThe product declares a critical variable, field, or member to be public when intended security policy requires it to be private.
CWE-785Use of Path Manipulation Function without Maximum-sized BufferThe product invokes a function for normalizing paths or file names, but it provides an output buffer that is smaller than the maximum possible size, such as PATH_MAX.
CWE-912Hidden FunctionalityThe product contains functionality that is not documented, not part of the specification, and not accessible through an interface or command sequence that is obvious to the product's users or administrators.
CWE-1400Comprehensive Categorization for Software Assurance Trends
Vulnerability Mapping Notes
Usage: Prohibited
Reasons: Category
Rationale:
This entry is a Category. Using categories for mapping has been discouraged since 2019. Categories are informal organizational groupings of weaknesses that can help CWE users with data aggregation, navigation, and browsing. However, they are not weaknesses in themselves [REF-1330].
Comment:
See member weaknesses of this category.