CWE-327: Use of a Broken or Risky Cryptographic Algorithm
Weakness ID: 327
Vulnerability Mapping:
ALLOWED
This CWE ID could be used to map to real-world vulnerabilities in limited situations requiring careful review
(with careful review of mapping notes)
Abstraction:
Class
Class - a weakness that is described in a very abstract fashion, typically independent of any specific language or technology. More specific than a Pillar Weakness, but more general than a Base Weakness. Class level weaknesses typically describe issues in terms of 1 or 2 of the following dimensions: behavior, property, and resource.
|
Description
The product uses a broken or risky cryptographic algorithm or protocol.
Extended Description
Cryptographic algorithms are the methods by which data is scrambled to prevent observation or influence by unauthorized actors. Insecure cryptography can be exploited to expose sensitive information, modify data in unexpected ways, spoof identities of other users or devices, or other impacts.
It is very difficult to produce a secure algorithm, and even high-profile algorithms by accomplished cryptographic experts have been broken. Well-known techniques exist to break or weaken various kinds of cryptography. Accordingly, there are a small number of well-understood and heavily studied algorithms that should be used by most products. Using a non-standard or known-insecure algorithm is dangerous because a determined adversary may be able to break the algorithm and compromise whatever data has been protected.
Since the state of cryptography advances so rapidly, it is common for an algorithm to be considered "unsafe" even if it was once thought to be strong. This can happen when new attacks are discovered, or if computing power increases so much that the cryptographic algorithm no longer provides the amount of protection that was originally thought.
For a number of reasons, this weakness is even more challenging to manage with hardware deployment of cryptographic algorithms as opposed to software implementation. First, if a flaw is discovered with hardware-implemented cryptography, the flaw cannot be fixed in most cases without a recall of the product, because hardware is not easily replaceable like software. Second, because the hardware product is expected to work for years, the adversary's computing power will only increase over time.
Common Consequences
This table specifies different individual consequences
associated with the weakness. The Scope identifies the application security area that is
violated, while the Impact describes the negative technical impact that arises if an
adversary succeeds in exploiting this weakness. The Likelihood provides information about
how likely the specific consequence is expected to be seen relative to the other
consequences in the list. For example, there may be high likelihood that a weakness will be
exploited to achieve a certain impact, but a low likelihood that it will be exploited to
achieve a different impact.
Scope |
Impact |
Likelihood |
Confidentiality |
Technical Impact: Read Application Data
The confidentiality of sensitive data may be compromised by the use of a broken or risky cryptographic algorithm.
|
|
Integrity |
Technical Impact: Modify Application Data
The integrity of sensitive data may be compromised by the use of a broken or risky cryptographic algorithm.
|
|
Accountability Non-Repudiation |
Technical Impact: Hide Activities
If the cryptographic algorithm is used to ensure the identity of the source of the data (such as digital signatures), then a broken algorithm will compromise this scheme and the source of the data cannot be proven.
|
|
Potential Mitigations
Phase: Architecture and Design
Strategy: Libraries or Frameworks
When there is a need to store or transmit sensitive data, use strong, up-to-date cryptographic algorithms to encrypt that data. Select a well-vetted algorithm that is currently considered to be strong by experts in the field, and use well-tested implementations. As with all cryptographic mechanisms, the source code should be available for analysis.
For example, US government systems require FIPS 140-2 certification [REF-1192].
Do not develop custom or private cryptographic algorithms. They will likely be exposed to attacks that are well-understood by cryptographers. Reverse engineering techniques are mature. If the algorithm can be compromised if attackers find out how it works, then it is especially weak.
Periodically ensure that the cryptography has not become obsolete. Some older algorithms, once thought to require a billion years of computing time, can now be broken in days or hours. This includes MD4, MD5, SHA1, DES, and other algorithms that were once regarded as strong. [REF-267]
|
Phase: Architecture and Design
Ensure that the design allows one cryptographic algorithm to be replaced with another in the next generation or version. Where possible, use wrappers to make the interfaces uniform. This will make it easier to upgrade to stronger algorithms. With hardware, design the product at the Intellectual Property (IP) level so that one cryptographic algorithm can be replaced with another in the next generation of the hardware product.
Effectiveness: Defense in Depth
|
Phase: Architecture and Design
Carefully manage and protect cryptographic keys (see CWE-320). If the keys can be guessed or stolen, then the strength of the cryptography itself is irrelevant.
|
Phase: Architecture and Design
Strategy: Libraries or Frameworks
Use a vetted library or framework that does not allow this weakness to occur or provides constructs that make this weakness easier to avoid.
Industry-standard implementations will save development time and may be more likely to avoid errors that can occur during implementation of cryptographic algorithms. Consider the ESAPI Encryption feature.
|
Phases: Implementation; Architecture and Design
When using industry-approved techniques, use them correctly. Don't cut corners by skipping resource-intensive steps ( CWE-325). These steps are often essential for preventing common attacks.
|
Relationships
This table shows the weaknesses and high level categories that are related to this
weakness. These relationships are defined as ChildOf, ParentOf, MemberOf and give insight to
similar items that may exist at higher and lower levels of abstraction. In addition,
relationships such as PeerOf and CanAlsoBe are defined to show similar weaknesses that the user
may want to explore.
Relevant to the view "Research Concepts" (CWE-1000)
Nature |
Type |
ID |
Name |
ChildOf |
Pillar - a weakness that is the most abstract type of weakness and represents a theme for all class/base/variant weaknesses related to it. A Pillar is different from a Category as a Pillar is still technically a type of weakness that describes a mistake, while a Category represents a common characteristic used to group related things.
|
693
|
Protection Mechanism Failure
|
ParentOf |
Base - a weakness that is still mostly independent of a resource or technology, but with sufficient details to provide specific methods for detection and prevention. Base level weaknesses typically describe issues in terms of 2 or 3 of the following dimensions: behavior, property, technology, language, and resource.
|
328
|
Use of Weak Hash
|
ParentOf |
Variant - a weakness that is linked to a certain type of product, typically involving a specific language or technology. More specific than a Base weakness. Variant level weaknesses typically describe issues in terms of 3 to 5 of the following dimensions: behavior, property, technology, language, and resource.
|
780
|
Use of RSA Algorithm without OAEP
|
ParentOf |
Base - a weakness that is still mostly independent of a resource or technology, but with sufficient details to provide specific methods for detection and prevention. Base level weaknesses typically describe issues in terms of 2 or 3 of the following dimensions: behavior, property, technology, language, and resource.
|
1240
|
Use of a Cryptographic Primitive with a Risky Implementation
|
PeerOf |
Base - a weakness that is still mostly independent of a resource or technology, but with sufficient details to provide specific methods for detection and prevention. Base level weaknesses typically describe issues in terms of 2 or 3 of the following dimensions: behavior, property, technology, language, and resource.
|
301
|
Reflection Attack in an Authentication Protocol
|
PeerOf |
Class - a weakness that is described in a very abstract fashion, typically independent of any specific language or technology. More specific than a Pillar Weakness, but more general than a Base Weakness. Class level weaknesses typically describe issues in terms of 1 or 2 of the following dimensions: behavior, property, and resource.
|
311
|
Missing Encryption of Sensitive Data
|
CanFollow |
Base - a weakness that is still mostly independent of a resource or technology, but with sufficient details to provide specific methods for detection and prevention. Base level weaknesses typically describe issues in terms of 2 or 3 of the following dimensions: behavior, property, technology, language, and resource.
|
208
|
Observable Timing Discrepancy
|
This table shows the weaknesses and high level categories that are related to this
weakness. These relationships are defined as ChildOf, ParentOf, MemberOf and give insight to
similar items that may exist at higher and lower levels of abstraction. In addition,
relationships such as PeerOf and CanAlsoBe are defined to show similar weaknesses that the user
may want to explore.
This table shows the weaknesses and high level categories that are related to this
weakness. These relationships are defined as ChildOf, ParentOf, MemberOf and give insight to
similar items that may exist at higher and lower levels of abstraction. In addition,
relationships such as PeerOf and CanAlsoBe are defined to show similar weaknesses that the user
may want to explore.
Relevant to the view "Architectural Concepts" (CWE-1008)
Nature |
Type |
ID |
Name |
MemberOf |
Category - a CWE entry that contains a set of other entries that share a common characteristic.
|
1013
|
Encrypt Data
|
Modes
Of Introduction
The different Modes of Introduction provide information
about how and when this
weakness may be introduced. The Phase identifies a point in the life cycle at which
introduction
may occur, while the Note provides a typical scenario related to introduction during the
given
phase.
Phase |
Note |
Architecture and Design |
COMMISSION: This weakness refers to an incorrect design related to an architectural security tactic. |
Implementation |
With hardware, the Architecture or Design Phase might start with compliant cryptography, but it is replaced with a non-compliant crypto during the later Implementation phase due to implementation constraints (e.g., not enough entropy to make it function properly, or not enough silicon real estate available to implement). Or, in rare cases (especially for long projects that span over years), the Architecture specifications might start with cryptography that was originally compliant at the time the Architectural specs were written, but over the time it became non-compliant due to progress made in attacking the crypto. |
Likelihood Of Exploit
Demonstrative Examples
Example 1
These code examples use the Data Encryption Standard (DES).
(bad code)
Example Language: C
(bad code)
Example Language: Java
Cipher des=Cipher.getInstance("DES..."); des.initEncrypt(key2);
(bad code)
Example Language: PHP
function encryptPassword($password){ $iv_size = mcrypt_get_iv_size(MCRYPT_DES, MCRYPT_MODE_ECB); $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); $key = "This is a password encryption key"; $encryptedPassword = mcrypt_encrypt(MCRYPT_DES, $key, $password, MCRYPT_MODE_ECB, $iv); return $encryptedPassword; }
Once considered a strong algorithm, DES now regarded as insufficient for many applications. It has been replaced by Advanced Encryption Standard (AES).
Example 2
Suppose a chip manufacturer decides to implement a hashing scheme for verifying integrity property of certain bitstream, and it chooses to implement a SHA1 hardware accelerator for to implement the scheme.
(bad code)
Example Language: Other
The manufacturer chooses a SHA1 hardware accelerator for to implement the scheme because it already has a working SHA1 Intellectual Property (IP) that the manufacturer had created and used earlier, so this reuse of IP saves design cost.
However, SHA1 was theoretically broken in 2005 and practically broken in 2017 at a cost of $110K. This means an attacker with access to cloud-rented computing power will now be able to provide a malicious bitstream with the same hash value, thereby defeating the purpose for which the hash was used.
This issue could have been avoided with better design.
(good code)
Example Language: Other
The manufacturer could have chosen a cryptographic solution that is recommended by the wide security community (including standard-setting bodies like NIST) and is not expected to be broken (or even better, weakened) within the reasonable life expectancy of the hardware product. In this case, the architects could have used SHA-2 or SHA-3, even if it meant that such choice would cost extra.
Example 3
In 2022, the OT:ICEFALL study examined products by 10 different Operational Technology (OT) vendors. The researchers reported 56 vulnerabilities and said that the products were "insecure by design" [REF-1283]. If exploited, these vulnerabilities often allowed adversaries to change how the products operated, ranging from denial of service to changing the code that the products executed. Since these products were often used in industries such as power, electrical, water, and others, there could even be safety implications.
Multiple OT products used weak cryptography.
Observed
Examples
Reference |
Description |
|
SCADA-based protocol supports a legacy encryption mode that uses Tiny Encryption Algorithm (TEA) in ECB mode, which leaks patterns in messages and cannot protect integrity
|
|
Programmable Logic Controller (PLC) uses a protocol with a cryptographically insecure hashing algorithm for passwords.
|
|
Product uses "ROT-25" to obfuscate the password in the registry.
|
|
product only uses "XOR" to obfuscate sensitive data
|
|
product only uses "XOR" and a fixed key to obfuscate sensitive data
|
|
Product substitutes characters with other characters in a fixed way, and also leaves certain input characters unchanged.
|
|
Attackers can infer private IP addresses by dividing each octet by the MD5 hash of '20'.
|
|
Product uses DES when MD5 has been specified in the configuration, resulting in weaker-than-expected password hashes.
|
|
Default configuration of product uses MD5 instead of stronger algorithms that are available, simplifying forgery of certificates.
|
|
Product uses the hash of a hash for authentication, allowing attackers to gain privileges if they can obtain the original hash.
|
Detection
Methods
Automated Analysis
Automated methods may be useful for recognizing commonly-used libraries or features that have become obsolete.
Note: False negatives may occur if the tool is not aware of the cryptographic libraries in use, or if custom cryptography is being used.
|
Manual Analysis
This weakness can be detected using tools and techniques that require manual (human) analysis, such as penetration testing, threat modeling, and interactive tools that allow the tester to record and modify an active session.
Note: These may be more effective than strictly automated techniques. This is especially the case with weaknesses that are related to design and business rules.
|
Automated Static Analysis - Binary or Bytecode
According to SOAR, the following detection techniques may be useful:
Cost effective for partial coverage:
- Bytecode Weakness Analysis - including disassembler + source code weakness analysis
- Binary Weakness Analysis - including disassembler + source code weakness analysis
- Binary / Bytecode simple extractor - strings, ELF readers, etc.
Effectiveness: SOAR Partial
|
Manual Static Analysis - Binary or Bytecode
According to SOAR, the following detection techniques may be useful:
Cost effective for partial coverage:
- Binary / Bytecode disassembler - then use manual analysis for vulnerabilities & anomalies
Effectiveness: SOAR Partial
|
Dynamic Analysis with Automated Results Interpretation
According to SOAR, the following detection techniques may be useful:
Cost effective for partial coverage:
- Web Application Scanner
- Web Services Scanner
- Database Scanners
Effectiveness: SOAR Partial
|
Dynamic Analysis with Manual Results Interpretation
According to SOAR, the following detection techniques may be useful:
Highly cost effective:
- Man-in-the-middle attack tool
Cost effective for partial coverage:
- Framework-based Fuzzer
- Automated Monitored Execution
- Monitored Virtual Environment - run potentially malicious code in sandbox / wrapper / virtual machine, see if it does anything suspicious
|
Manual Static Analysis - Source Code
According to SOAR, the following detection techniques may be useful:
Highly cost effective:
- Manual Source Code Review (not inspections)
Cost effective for partial coverage:
- Focused Manual Spotcheck - Focused manual analysis of source
|
Automated Static Analysis - Source Code
According to SOAR, the following detection techniques may be useful:
Highly cost effective:
- Source code Weakness Analyzer
- Context-configured Source Code Weakness Analyzer
|
Automated Static Analysis
According to SOAR, the following detection techniques may be useful:
Cost effective for partial coverage:
Effectiveness: SOAR Partial
|
Architecture or Design Review
According to SOAR, the following detection techniques may be useful:
Highly cost effective:
- Formal Methods / Correct-By-Construction
Cost effective for partial coverage:
- Inspection (IEEE 1028 standard) (can apply to requirements, design, source code, etc.)
|
Memberships
This MemberOf Relationships table shows additional CWE Categories and Views that
reference this weakness as a member. This information is often useful in understanding where a
weakness fits within the context of external information sources.
Vulnerability Mapping Notes
Usage:
ALLOWED-WITH-REVIEW
(this CWE ID could be used to map to real-world vulnerabilities in limited situations requiring careful review)
|
Reason:
Abstraction
|
Rationale:
This CWE entry is a Class and might have Base-level children that would be more appropriate
|
Comments: Examine children of this entry to see if there is a better fit
|
Notes
Maintenance
Since CWE 4.4, various cryptography-related entries, including CWE-327 and CWE-1240, have been slated for extensive research, analysis, and community consultation to define consistent terminology, improve relationships, and reduce overlap or duplication. As of CWE 4.6, this work is still ongoing.
Maintenance
The Taxonomy_Mappings to ISA/IEC 62443 were added in CWE 4.10, but they are still under review and might change in future CWE versions. These draft mappings were performed by members of the "Mapping CWE to 62443" subgroup of the CWE-CAPEC ICS/OT Special Interest Group (SIG), and their work is incomplete as of CWE 4.10. The mappings are included to facilitate discussion and review by the broader ICS/OT community, and they are likely to change in future CWE versions.
Taxonomy
Mappings
Mapped Taxonomy Name |
Node ID |
Fit |
Mapped Node Name |
CLASP |
|
|
Using a broken or risky cryptographic algorithm |
OWASP Top Ten 2004 |
A8 |
CWE More Specific |
Insecure Storage |
CERT C Secure Coding |
MSC30-C |
CWE More Abstract |
Do not use the rand() function for generating pseudorandom numbers |
CERT C Secure Coding |
MSC32-C |
CWE More Abstract |
Properly seed pseudorandom number generators |
The CERT Oracle Secure Coding Standard for Java (2011) |
MSC02-J |
|
Generate strong random numbers |
OMG ASCSM |
ASCSM-CWE-327 |
|
|
ISA/IEC 62443 |
Part 3-3 |
|
Req SR 4.3 |
ISA/IEC 62443 |
Part 4-2 |
|
Req CR 4.3 |
References
|
[REF-281] Alfred J. Menezes, Paul C. van Oorschot and Scott A. Vanstone. "Handbook of Applied Cryptography". 1996-10.
< https://cacr.uwaterloo.ca/hac/>.
URL validated: 2023-04-07.
|
|
|
|
|
[REF-44] Michael Howard, David LeBlanc and John Viega. "24 Deadly Sins of Software Security". "Sin 21: Using the Wrong Cryptography." Page 315. McGraw-Hill. 2010.
|
|
[REF-62] Mark Dowd, John McDonald and Justin Schuh. "The Art of Software Security Assessment". Chapter 2, "Insufficient or Obsolete Encryption", Page 44. 1st Edition. Addison Wesley. 2006.
|
|
|
|
|
Content
History
Submissions |
Submission Date |
Submitter |
Organization |
2006-07-19
(CWE Draft 3, 2006-07-19)
|
CLASP |
|
|
Contributions |
Contribution Date |
Contributor |
Organization |
2019-12-10
|
Parbati K. Manna |
Intel Corporation |
Provide a hardware-specific submission whose contents were integrated into this entry, affecting extended description, applicable platforms, demonstrative examples, and mitigations
|
Modifications |
Modification Date |
Modifier |
Organization |
2008-08-15
|
|
Veracode |
Suggested OWASP Top Ten 2004 mapping
|
2008-09-08
|
CWE Content Team |
MITRE |
updated Background_Details, Common_Consequences, Description, Relationships, Taxonomy_Mappings
|
2009-01-12
|
CWE Content Team |
MITRE |
updated Demonstrative_Examples, Description, Observed_Examples, Potential_Mitigations, References, Relationships
|
2009-03-10
|
CWE Content Team |
MITRE |
updated Potential_Mitigations
|
2009-07-27
|
CWE Content Team |
MITRE |
updated Maintenance_Notes, Relationships
|
2009-10-29
|
CWE Content Team |
MITRE |
updated Relationships
|
2009-12-28
|
CWE Content Team |
MITRE |
updated References
|
2010-02-16
|
CWE Content Team |
MITRE |
updated Detection_Factors, References, Relationships
|
2010-04-05
|
CWE Content Team |
MITRE |
updated Applicable_Platforms, Potential_Mitigations, Related_Attack_Patterns
|
2010-06-21
|
CWE Content Team |
MITRE |
updated Common_Consequences, Detection_Factors, Potential_Mitigations, References, Relationships
|
2010-09-27
|
CWE Content Team |
MITRE |
updated Potential_Mitigations, Relationships
|
2011-03-29
|
CWE Content Team |
MITRE |
updated Demonstrative_Examples, Description
|
2011-06-01
|
CWE Content Team |
MITRE |
updated Relationships, Taxonomy_Mappings
|
2011-06-27
|
CWE Content Team |
MITRE |
updated Relationships
|
2011-09-13
|
CWE Content Team |
MITRE |
updated Potential_Mitigations, Relationships, Taxonomy_Mappings
|
2012-05-11
|
CWE Content Team |
MITRE |
updated References, Related_Attack_Patterns, Relationships, Taxonomy_Mappings
|
2012-10-30
|
CWE Content Team |
MITRE |
updated Potential_Mitigations
|
2013-02-21
|
CWE Content Team |
MITRE |
updated Relationships
|
2014-02-18
|
CWE Content Team |
MITRE |
updated Related_Attack_Patterns
|
2014-06-23
|
CWE Content Team |
MITRE |
updated Relationships
|
2014-07-30
|
CWE Content Team |
MITRE |
updated Demonstrative_Examples, Detection_Factors, Relationships
|
2015-12-07
|
CWE Content Team |
MITRE |
updated Relationships
|
2017-01-19
|
CWE Content Team |
MITRE |
updated Related_Attack_Patterns
|
2017-11-08
|
CWE Content Team |
MITRE |
updated Demonstrative_Examples, Likelihood_of_Exploit, Modes_of_Introduction, References, Relationships, Taxonomy_Mappings
|
2018-03-27
|
CWE Content Team |
MITRE |
updated References, Relationships
|
2019-01-03
|
CWE Content Team |
MITRE |
updated References, Relationships, Taxonomy_Mappings
|
2019-06-20
|
CWE Content Team |
MITRE |
updated Related_Attack_Patterns, Relationships, Type
|
2020-02-24
|
CWE Content Team |
MITRE |
updated Applicable_Platforms, Detection_Factors, Maintenance_Notes, Relationships
|
2021-03-15
|
CWE Content Team |
MITRE |
updated References
|
2021-10-28
|
CWE Content Team |
MITRE |
updated Maintenance_Notes, Potential_Mitigations, Relationships
|
2022-04-28
|
CWE Content Team |
MITRE |
updated Relationships
|
2022-10-13
|
CWE Content Team |
MITRE |
updated Demonstrative_Examples, Observed_Examples, References
|
2023-01-31
|
CWE Content Team |
MITRE |
updated Applicable_Platforms, Background_Details, Demonstrative_Examples, Description, Maintenance_Notes, Modes_of_Introduction, Observed_Examples, Potential_Mitigations, References, Taxonomy_Mappings, Time_of_Introduction
|
2023-04-27
|
CWE Content Team |
MITRE |
updated References, Relationships
|
2023-06-29
|
CWE Content Team |
MITRE |
updated Mapping_Notes, Relationships
|
Previous Entry Names |
Change Date |
Previous Entry Name |
2008-04-11
|
Using a Broken or Risky Cryptographic Algorithm |
More information is available — Please edit the custom filter or select a different filter.
|