Reino: Security Features
La seguridad de un software no es un software de seguridad. Nos preocupamos de cuestiones como la autenticación, el control de acceso, la confidencialidad, la criptografía y la gestión de privilegios.
Weak Cryptographic Hash: User-Controlled Minimum Bits
Abstract
Un método que genera hashes criptográficos recibe un valor de bits mínimo a partir de la entrada del usuario.
Explanation
Esto podría permitir al atacante especificar un mínimo de bits vacíos, lo que hace posible una determinación más fácil de los valores de hash y una filtración de información sobre cómo el programa realiza su hash criptográfico. Los problemas de Hash criptográfico débil: Los problemas de bits mínimos controlados por el usuario se producen cuando:
1. Los datos entran en un programa a través de un origen que no es de confianza.
2. Los datos controlados por el usuario se incluyen en los bits mínimos o se utilizan completamente como bits mínimos en una función de hash criptográfico.
Al igual que muchas vulnerabilidades de seguridad de software, Hash criptográfico débil: Los bits mínimos controlados por el usuario son un medio para lograr un fin, no un fin en sí mismos. Desde su raíz, la vulnerabilidad es sencilla: un atacante pasa datos malintencionados a una aplicación, que, a continuación, se utilizan como bits mínimos, totales o parciales, de una función de hash criptográfico.
Unos bits mínimos controlados por el usuario pueden permitir varios ataques:
1. Un atacante podría usar esta vulnerabilidad para especificar unos bits mínimos vacíos para los datos que se están procesando. Un atacante puede procesar rápidamente los datos que se están procesando mediante una serie de algoritmos de hash diferentes para filtrar información sobre la implementación de hash utilizada en su aplicación. Esto podría facilitar el "descifrado" de otros valores de datos limitando la variante específica de hash utilizada.
2. 2. Si un atacante puede manipular los bits mínimos de otros usuarios, o engañar a otros usuarios para que utilicen bits mínimos vacíos, esto le permite calcular "tablas arcoíris" para la aplicación y determinar fácilmente los valores con hash.
Ejemplo 1: El código siguiente utiliza bits mínimos controlados por el usuario para ejecutar un algoritmo hash en una contraseña:
El código en
1. Los datos entran en un programa a través de un origen que no es de confianza.
2. Los datos controlados por el usuario se incluyen en los bits mínimos o se utilizan completamente como bits mínimos en una función de hash criptográfico.
Al igual que muchas vulnerabilidades de seguridad de software, Hash criptográfico débil: Los bits mínimos controlados por el usuario son un medio para lograr un fin, no un fin en sí mismos. Desde su raíz, la vulnerabilidad es sencilla: un atacante pasa datos malintencionados a una aplicación, que, a continuación, se utilizan como bits mínimos, totales o parciales, de una función de hash criptográfico.
Unos bits mínimos controlados por el usuario pueden permitir varios ataques:
1. Un atacante podría usar esta vulnerabilidad para especificar unos bits mínimos vacíos para los datos que se están procesando. Un atacante puede procesar rápidamente los datos que se están procesando mediante una serie de algoritmos de hash diferentes para filtrar información sobre la implementación de hash utilizada en su aplicación. Esto podría facilitar el "descifrado" de otros valores de datos limitando la variante específica de hash utilizada.
2. 2. Si un atacante puede manipular los bits mínimos de otros usuarios, o engañar a otros usuarios para que utilicen bits mínimos vacíos, esto le permite calcular "tablas arcoíris" para la aplicación y determinar fácilmente los valores con hash.
Ejemplo 1: El código siguiente utiliza bits mínimos controlados por el usuario para ejecutar un algoritmo hash en una contraseña:
...
String minimumBits = prop.getProperty("minimumbits");
Hashing.goodFastHash(minimumBits).hashString("foo", StandardCharsets.UTF_8);
...
El código en
Example 1
se ejecuta correctamente, pero cualquier persona con acceso a esta funcionalidad puede manipular los bits mínimos utilizados para aplicar hash a la contraseña modificando la propiedad minimumBits
. Una vez que se haya distribuido el programa, puede resultar difícil deshacer un problema relacionado con bits mínimos controlados por el usuario, dado que no puede saber si un usuario malintencionado ha configurado los bits mínimos del hash de la contraseña.References
[1] Standards Mapping - Common Weakness Enumeration CWE ID 328, CWE ID 760
[2] Standards Mapping - DISA Control Correlation Identifier Version 2 CCI-002450
[3] Standards Mapping - FIPS200 MP
[4] Standards Mapping - General Data Protection Regulation (GDPR) Insufficient Data Protection
[5] Standards Mapping - NIST Special Publication 800-53 Revision 4 AU-10 Non-Repudiation (P2), SC-13 Cryptographic Protection (P1)
[6] Standards Mapping - NIST Special Publication 800-53 Revision 5 AU-10 Non-Repudiation, SC-13 Cryptographic Protection
[7] Standards Mapping - OWASP Application Security Verification Standard 4.0 2.4.1 Credential Storage Requirements (L2 L3), 2.4.2 Credential Storage Requirements (L2 L3), 2.4.5 Credential Storage Requirements (L2 L3), 2.6.3 Look-up Secret Verifier Requirements (L2 L3), 2.8.3 Single or Multi Factor One Time Verifier Requirements (L2 L3), 2.9.3 Cryptographic Software and Devices Verifier Requirements (L2 L3), 6.2.1 Algorithms (L1 L2 L3), 6.2.2 Algorithms (L2 L3), 6.2.3 Algorithms (L2 L3), 6.2.4 Algorithms (L2 L3), 6.2.5 Algorithms (L2 L3), 6.2.6 Algorithms (L2 L3), 6.2.7 Algorithms (L3), 8.3.7 Sensitive Private Data (L2 L3), 9.1.2 Communications Security Requirements (L1 L2 L3), 9.1.3 Communications Security Requirements (L1 L2 L3)
[8] Standards Mapping - OWASP Mobile 2014 M6 Broken Cryptography
[9] Standards Mapping - OWASP Mobile 2024 M10 Insufficient Cryptography
[10] Standards Mapping - OWASP Mobile Application Security Verification Standard 2.0 MASVS-CRYPTO-1
[11] Standards Mapping - OWASP Top 10 2004 A8 Insecure Storage
[12] Standards Mapping - OWASP Top 10 2007 A8 Insecure Cryptographic Storage
[13] Standards Mapping - OWASP Top 10 2010 A7 Insecure Cryptographic Storage
[14] Standards Mapping - OWASP Top 10 2013 A6 Sensitive Data Exposure
[15] Standards Mapping - OWASP Top 10 2017 A3 Sensitive Data Exposure
[16] Standards Mapping - OWASP Top 10 2021 A02 Cryptographic Failures
[17] Standards Mapping - Payment Card Industry Data Security Standard Version 1.1 Requirement 6.5.8
[18] Standards Mapping - Payment Card Industry Data Security Standard Version 1.2 Requirement 6.3.1.3, Requirement 6.5.8
[19] Standards Mapping - Payment Card Industry Data Security Standard Version 2.0 Requirement 6.5.3
[20] Standards Mapping - Payment Card Industry Data Security Standard Version 3.0 Requirement 6.5.3
[21] Standards Mapping - Payment Card Industry Data Security Standard Version 3.1 Requirement 6.5.3
[22] Standards Mapping - Payment Card Industry Data Security Standard Version 3.2 Requirement 6.5.3
[23] Standards Mapping - Payment Card Industry Data Security Standard Version 3.2.1 Requirement 6.5.3
[24] Standards Mapping - Payment Card Industry Data Security Standard Version 4.0 Requirement 6.2.4
[25] Standards Mapping - Payment Card Industry Data Security Standard Version 4.0.1 Requirement 3.3.2, Requirement 3.3.3, Requirement 3.5.1, Requirement 6.2.4
[26] Standards Mapping - Payment Card Industry Software Security Framework 1.0 Control Objective 7.1 - Use of Cryptography, Control Objective 7.4 - Use of Cryptography
[27] Standards Mapping - Payment Card Industry Software Security Framework 1.1 Control Objective 7.1 - Use of Cryptography, Control Objective 7.4 - Use of Cryptography, Control Objective B.2.3 - Terminal Software Design
[28] Standards Mapping - Payment Card Industry Software Security Framework 1.2 Control Objective 7.1 - Use of Cryptography, Control Objective 7.4 - Use of Cryptography, Control Objective B.2.3 - Terminal Software Design
[29] Standards Mapping - Security Technical Implementation Guide Version 3.1 APP3150.1 CAT II
[30] Standards Mapping - Security Technical Implementation Guide Version 3.4 APP3150.1 CAT II
[31] Standards Mapping - Security Technical Implementation Guide Version 3.5 APP3150.1 CAT II
[32] Standards Mapping - Security Technical Implementation Guide Version 3.6 APP3150.1 CAT II
[33] Standards Mapping - Security Technical Implementation Guide Version 3.7 APP3150.1 CAT II
[34] Standards Mapping - Security Technical Implementation Guide Version 3.9 APP3150.1 CAT II
[35] Standards Mapping - Security Technical Implementation Guide Version 3.10 APP3150.1 CAT II
[36] Standards Mapping - Security Technical Implementation Guide Version 4.2 APSC-DV-002010 CAT II, APSC-DV-002020 CAT II, APSC-DV-002030 CAT II
[37] Standards Mapping - Security Technical Implementation Guide Version 4.3 APSC-DV-002010 CAT II, APSC-DV-002020 CAT II, APSC-DV-002030 CAT II
[38] Standards Mapping - Security Technical Implementation Guide Version 4.4 APSC-DV-002010 CAT II, APSC-DV-002020 CAT II, APSC-DV-002030 CAT II
[39] Standards Mapping - Security Technical Implementation Guide Version 4.5 APSC-DV-002010 CAT II, APSC-DV-002020 CAT II, APSC-DV-002030 CAT II
[40] Standards Mapping - Security Technical Implementation Guide Version 4.6 APSC-DV-002010 CAT II, APSC-DV-002020 CAT II, APSC-DV-002030 CAT II
[41] Standards Mapping - Security Technical Implementation Guide Version 4.7 APSC-DV-002010 CAT II, APSC-DV-002020 CAT II, APSC-DV-002030 CAT II
[42] Standards Mapping - Security Technical Implementation Guide Version 4.8 APSC-DV-002010 CAT II, APSC-DV-002020 CAT II, APSC-DV-002030 CAT II
[43] Standards Mapping - Security Technical Implementation Guide Version 4.9 APSC-DV-002010 CAT II, APSC-DV-002020 CAT II, APSC-DV-002030 CAT II
[44] Standards Mapping - Security Technical Implementation Guide Version 4.10 APSC-DV-002010 CAT II, APSC-DV-002020 CAT II, APSC-DV-002030 CAT II
[45] Standards Mapping - Security Technical Implementation Guide Version 4.11 APSC-DV-002010 CAT II, APSC-DV-002020 CAT II, APSC-DV-002030 CAT II
[46] Standards Mapping - Security Technical Implementation Guide Version 4.1 APSC-DV-002010 CAT II, APSC-DV-002020 CAT II, APSC-DV-002030 CAT II
[47] Standards Mapping - Security Technical Implementation Guide Version 5.1 APSC-DV-002010 CAT II, APSC-DV-002020 CAT II, APSC-DV-002030 CAT II
[48] Standards Mapping - Security Technical Implementation Guide Version 5.2 APSC-DV-002010 CAT II, APSC-DV-002020 CAT II, APSC-DV-002030 CAT II
[49] Standards Mapping - Security Technical Implementation Guide Version 5.3 APSC-DV-000590 CAT II, APSC-DV-002010 CAT II, APSC-DV-002020 CAT II, APSC-DV-002030 CAT II
[50] Standards Mapping - Security Technical Implementation Guide Version 6.1 APSC-DV-000590 CAT II, APSC-DV-002010 CAT II, APSC-DV-002020 CAT II, APSC-DV-002030 CAT II
desc.dataflow.java.weak_cryptographic.guava.user.controlled.minimumbit