계: Security Features
소프트웨어 보안은 보안 소프트웨어가 아닙니다. 여기서는 인증, 액세스 제어, 기밀성, 암호화, 권한 관리 등의 항목에 대해 설명합니다.
Weak Encryption: User-Controlled Key Size
Abstract
키 크기 매개 변수를 사용하는 암호화 함수에는 감염된 키 크기 값을 전달해서는 안 됩니다.
Explanation
사용자가 제어하는 값을 통해 키 크기를 결정할 수 있도록 허용하면 공격자가 빈 키를 지정하여 빈 키로 암호화된 데이터를 비교적 손쉽게 해독할 수 있게 됩니다. 0이 아닌 값을 지정해야 하더라도 공격자는 여전히 최대한 낮은 값을 지정하여 암호화의 보안 수준을 떨어뜨릴 수 있습니다.
약한 암호화: 사용자 제어 키 크기 문제는 다음과 같은 경우에 발생합니다.
1. 신뢰할 수 없는 소스를 통해 데이터가 프로그램에 입력됩니다.
2. 암호화 함수 내에서 사용자 제어 데이터가 키 크기 매개 변수 내에 포함되거나 전체 키 크기 매개 변수로 사용됩니다.
여러 소프트웨어 보안 취약점과 마찬가지로 약한 암호화: 사용자 제어 키 크기는 목적의 수단일 뿐 목적 자체는 아닙니다. 이 취약점은 본질적으로 간단 명료합니다. 즉, 공격자가 응용 프로그램에 악성 데이터를 전달하며 이 데이터가 암호화를 수행하는 동안 키 크기 값의 전체 또는 일부로 사용됩니다.
사용자 제어 키 크기가 있을 때의 문제는 다양한 공격이 가능해질 수 있다는 점입니다.
1. 공격자는 이 취약점을 이용하여 자신이 접근할 수 있는 데이터와 관련된 암호화 작업에 대해 키 크기를 0으로 지정할 수 있습니다. 이렇게 되면 여러 알고리즘을 빈 키와 함께 사용하여 자신의 데이터를 해독할 수 있기 때문에 응용 프로그램 내에서 사용되는 암호화 구현에 대한 정보가 누출될 수 있습니다. 이에 따라 공격자가 크랙하는 동안 특정 알고리즘에 집중할 수 있도록 하여 다른 사용자의 암호화된 데이터를 보다 쉽게 해독하게 될 수 있습니다.
2. 공격자가 다른 사용자의 암호화 키 크기를 조작할 수 있거나 다른 사용자가 0(또는 최대한 낮은 값)인 암호화 키 크기를 사용하도록 속일 수 있다면, 공격자가 사용된 암호화 알고리즘을 파악한 후 다른 사용자의 암호화된 데이터를 판독할 수 있게 됩니다.
예제 1: 다음 코드에서는 사용자 제어 키 크기 매개 변수를 사용하여 RSA 암호화를 수행합니다.
약한 암호화: 사용자 제어 키 크기 문제는 다음과 같은 경우에 발생합니다.
1. 신뢰할 수 없는 소스를 통해 데이터가 프로그램에 입력됩니다.
2. 암호화 함수 내에서 사용자 제어 데이터가 키 크기 매개 변수 내에 포함되거나 전체 키 크기 매개 변수로 사용됩니다.
여러 소프트웨어 보안 취약점과 마찬가지로 약한 암호화: 사용자 제어 키 크기는 목적의 수단일 뿐 목적 자체는 아닙니다. 이 취약점은 본질적으로 간단 명료합니다. 즉, 공격자가 응용 프로그램에 악성 데이터를 전달하며 이 데이터가 암호화를 수행하는 동안 키 크기 값의 전체 또는 일부로 사용됩니다.
사용자 제어 키 크기가 있을 때의 문제는 다양한 공격이 가능해질 수 있다는 점입니다.
1. 공격자는 이 취약점을 이용하여 자신이 접근할 수 있는 데이터와 관련된 암호화 작업에 대해 키 크기를 0으로 지정할 수 있습니다. 이렇게 되면 여러 알고리즘을 빈 키와 함께 사용하여 자신의 데이터를 해독할 수 있기 때문에 응용 프로그램 내에서 사용되는 암호화 구현에 대한 정보가 누출될 수 있습니다. 이에 따라 공격자가 크랙하는 동안 특정 알고리즘에 집중할 수 있도록 하여 다른 사용자의 암호화된 데이터를 보다 쉽게 해독하게 될 수 있습니다.
2. 공격자가 다른 사용자의 암호화 키 크기를 조작할 수 있거나 다른 사용자가 0(또는 최대한 낮은 값)인 암호화 키 크기를 사용하도록 속일 수 있다면, 공격자가 사용된 암호화 알고리즘을 파악한 후 다른 사용자의 암호화된 데이터를 판독할 수 있게 됩니다.
예제 1: 다음 코드에서는 사용자 제어 키 크기 매개 변수를 사용하여 RSA 암호화를 수행합니다.
...
RSACryptoServiceProvider rsa1 = new RSACryptoServiceProvider(Convert.ToInt32(tx.Text));
...
Example 1
의 코드는 성공적으로 실행되지만 이 기능을 사용할 수 있는 사용자라면 누구나 tx.Text
텍스트 상자 값을 수정하여 암호화 알고리즘에 대한 키 크기 매개 변수를 조작할 수 있습니다. 프로그램을 공개한 후에는 악의적인 사용자가 지정된 암호화 작업의 키 크기를 알아내었는지 여부를 파악하기가 상당히 어렵기 때문에 사용자 제어 키 크기와 관련된 문제를 되돌리기가 힘들 수 있습니다.References
[1] Standards Mapping - Common Weakness Enumeration CWE ID 326
[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-12 Cryptographic Key Establishment and Management (P1), SC-13 Cryptographic Protection (P1)
[6] Standards Mapping - NIST Special Publication 800-53 Revision 5 AU-10 Non-Repudiation, SC-12 Cryptographic Key Establishment and Management, SC-13 Cryptographic Protection
[7] Standards Mapping - OWASP Application Security Verification Standard 4.0 2.6.3 Look-up Secret Verifier Requirements (L2 L3), 2.8.3 Single or Multi Factor One Time Verifier Requirements (L2 L3), 6.2.1 Algorithms (L1 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), 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 3.6.1, Requirement 6.5.8
[18] Standards Mapping - Payment Card Industry Data Security Standard Version 1.2 Requirement 3.6.1, Requirement 6.3.1.3, Requirement 6.5.8
[19] Standards Mapping - Payment Card Industry Data Security Standard Version 2.0 Requirement 3.6.1, Requirement 6.5.3
[20] Standards Mapping - Payment Card Industry Data Security Standard Version 3.0 Requirement 3.6.1, Requirement 6.5.3
[21] Standards Mapping - Payment Card Industry Data Security Standard Version 3.1 Requirement 3.6.1, Requirement 6.5.3
[22] Standards Mapping - Payment Card Industry Data Security Standard Version 3.2 Requirement 3.6.1, Requirement 6.5.3
[23] Standards Mapping - Payment Card Industry Data Security Standard Version 3.2.1 Requirement 3.6.1, Requirement 6.5.3
[24] Standards Mapping - Payment Card Industry Data Security Standard Version 4.0 Requirement 3.6.1, Requirement 6.2.4
[25] Standards Mapping - Payment Card Industry Data Security Standard Version 4.0.1 Requirement 3.6.1, Requirement 6.2.4
[26] Standards Mapping - Payment Card Industry Software Security Framework 1.0 Control Objective 7.2 - Use of Cryptography
[27] Standards Mapping - Payment Card Industry Software Security Framework 1.1 Control Objective 7.1 - 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 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-002040 CAT II
[37] Standards Mapping - Security Technical Implementation Guide Version 4.3 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[38] Standards Mapping - Security Technical Implementation Guide Version 4.4 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[39] Standards Mapping - Security Technical Implementation Guide Version 4.5 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[40] Standards Mapping - Security Technical Implementation Guide Version 4.6 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[41] Standards Mapping - Security Technical Implementation Guide Version 4.7 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[42] Standards Mapping - Security Technical Implementation Guide Version 4.8 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[43] Standards Mapping - Security Technical Implementation Guide Version 4.9 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[44] Standards Mapping - Security Technical Implementation Guide Version 4.10 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[45] Standards Mapping - Security Technical Implementation Guide Version 4.11 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[46] Standards Mapping - Security Technical Implementation Guide Version 4.1 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[47] Standards Mapping - Security Technical Implementation Guide Version 5.1 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[48] Standards Mapping - Security Technical Implementation Guide Version 5.2 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[49] Standards Mapping - Security Technical Implementation Guide Version 5.3 APSC-DV-000590 CAT II, APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[50] Standards Mapping - Security Technical Implementation Guide Version 6.1 APSC-DV-000590 CAT II, APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
desc.dataflow.dotnet.weak_encryption_user_controlled_key_size
Abstract
키 크기를 사용하는 암호화 함수는 감염된 키 크기 값을 수신할 수 있습니다.
Explanation
사용자가 제어하는 값을 통해 키 크기를 결정할 수 있도록 허용하면 공격자가 빈 키를 지정하여 빈 키로 암호화된 데이터를 비교적 손쉽게 해독할 수 있게 됩니다. 0이 아닌 값을 지정해야 하더라도 공격자는 여전히 최대한 낮은 값을 지정하여 암호화의 보안 수준을 떨어뜨릴 수 있습니다.
약한 암호화: 사용자 제어 키 크기 이슈는 다음과 같은 경우에 발생합니다.
1. 신뢰할 수 없는 소스를 통해 데이터가 프로그램에 입력됩니다.
2. 암호화 함수 내에서 사용자 제어 데이터가 키 크기 매개 변수 내에 포함되거나 전체 키 크기 매개 변수로 사용됩니다.
다수의 소프트웨어 보안 취약점과 마찬가지로 약한 암호화: 사용자 제어 키 크기는 목적 달성을 위한 수단이며 그 자체가 목적은 아닙니다. 이 취약점은 본질적으로 간단 명료합니다. 즉, 공격자가 응용 프로그램에 악성 데이터를 전달하며 데이터가 키 크기 값의 전체 또는 일부로 사용되어 암호화가 수행됩니다.
사용자 제어 키 크기가 있을 때의 문제는 다양한 공격이 가능해질 수 있다는 점입니다.
1. 공격자는 이 취약점을 이용하여 자신이 접근할 수 있는 데이터와 관련된 암호화 작업에 대해 키 크기를 0으로 지정할 수 있습니다. 이렇게 되면 여러 알고리즘을 빈 키와 함께 사용하여 자신의 데이터를 해독할 수 있기 때문에 응용 프로그램 내에서 사용되는 암호화 구현 정보가 누출될 수 있습니다. 이에 따라 공격자가 크랙하는 동안 특정 알고리즘에만 집중할 수 있도록 하여 다른 사용자의 암호화된 데이터를 보다 쉽게 해독하게 될 수 있습니다.
2. 공격자가 다른 사용자의 암호화 키 크기를 조작할 수 있거나 다른 사용자가 0이나 다른 낮은 숫자인 암호화 키 크기를 사용하도록 속일 수 있다면, 공격자가 사용된 암호화 알고리즘을 파악한 후 다른 사용자의 암호화된 데이터를 판독할 수 있게 됩니다.
예제 1: 다음 코드에서는 사용자가 제어하는 파생된 키 길이를 사용하여 RSA 키를 생성합니다.
약한 암호화: 사용자 제어 키 크기 이슈는 다음과 같은 경우에 발생합니다.
1. 신뢰할 수 없는 소스를 통해 데이터가 프로그램에 입력됩니다.
2. 암호화 함수 내에서 사용자 제어 데이터가 키 크기 매개 변수 내에 포함되거나 전체 키 크기 매개 변수로 사용됩니다.
다수의 소프트웨어 보안 취약점과 마찬가지로 약한 암호화: 사용자 제어 키 크기는 목적 달성을 위한 수단이며 그 자체가 목적은 아닙니다. 이 취약점은 본질적으로 간단 명료합니다. 즉, 공격자가 응용 프로그램에 악성 데이터를 전달하며 데이터가 키 크기 값의 전체 또는 일부로 사용되어 암호화가 수행됩니다.
사용자 제어 키 크기가 있을 때의 문제는 다양한 공격이 가능해질 수 있다는 점입니다.
1. 공격자는 이 취약점을 이용하여 자신이 접근할 수 있는 데이터와 관련된 암호화 작업에 대해 키 크기를 0으로 지정할 수 있습니다. 이렇게 되면 여러 알고리즘을 빈 키와 함께 사용하여 자신의 데이터를 해독할 수 있기 때문에 응용 프로그램 내에서 사용되는 암호화 구현 정보가 누출될 수 있습니다. 이에 따라 공격자가 크랙하는 동안 특정 알고리즘에만 집중할 수 있도록 하여 다른 사용자의 암호화된 데이터를 보다 쉽게 해독하게 될 수 있습니다.
2. 공격자가 다른 사용자의 암호화 키 크기를 조작할 수 있거나 다른 사용자가 0이나 다른 낮은 숫자인 암호화 키 크기를 사용하도록 속일 수 있다면, 공격자가 사용된 암호화 알고리즘을 파악한 후 다른 사용자의 암호화된 데이터를 판독할 수 있게 됩니다.
예제 1: 다음 코드에서는 사용자가 제어하는 파생된 키 길이를 사용하여 RSA 키를 생성합니다.
...
rsa.GenerateKey(random, user_input)
...
Example 1
의 코드는 성공적으로 실행되지만 user_input
변수는 사용자가 제어할 수 있으므로 이 기능을 사용할 수 있는 사용자는 누구든지 암호화 알고리즘에 대해 키 크기 매개 변수를 조작할 수 있습니다. 소프트웨어 릴리스 후에는 사용자 제어 키 크기와 관련된 이슈를 해결하기가 힘들 수 있습니다. 악의적인 사용자가 지정된 암호화 작업의 키 크기를 알아내었는지 여부를 파악하기가 상당히 어렵기 때문입니다.References
[1] Standards Mapping - Common Weakness Enumeration CWE ID 326
[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-12 Cryptographic Key Establishment and Management (P1), SC-13 Cryptographic Protection (P1)
[6] Standards Mapping - NIST Special Publication 800-53 Revision 5 AU-10 Non-Repudiation, SC-12 Cryptographic Key Establishment and Management, SC-13 Cryptographic Protection
[7] Standards Mapping - OWASP Application Security Verification Standard 4.0 2.6.3 Look-up Secret Verifier Requirements (L2 L3), 2.8.3 Single or Multi Factor One Time Verifier Requirements (L2 L3), 6.2.1 Algorithms (L1 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), 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 3.6.1, Requirement 6.5.8
[18] Standards Mapping - Payment Card Industry Data Security Standard Version 1.2 Requirement 3.6.1, Requirement 6.3.1.3, Requirement 6.5.8
[19] Standards Mapping - Payment Card Industry Data Security Standard Version 2.0 Requirement 3.6.1, Requirement 6.5.3
[20] Standards Mapping - Payment Card Industry Data Security Standard Version 3.0 Requirement 3.6.1, Requirement 6.5.3
[21] Standards Mapping - Payment Card Industry Data Security Standard Version 3.1 Requirement 3.6.1, Requirement 6.5.3
[22] Standards Mapping - Payment Card Industry Data Security Standard Version 3.2 Requirement 3.6.1, Requirement 6.5.3
[23] Standards Mapping - Payment Card Industry Data Security Standard Version 3.2.1 Requirement 3.6.1, Requirement 6.5.3
[24] Standards Mapping - Payment Card Industry Data Security Standard Version 4.0 Requirement 3.6.1, Requirement 6.2.4
[25] Standards Mapping - Payment Card Industry Data Security Standard Version 4.0.1 Requirement 3.6.1, Requirement 6.2.4
[26] Standards Mapping - Payment Card Industry Software Security Framework 1.0 Control Objective 7.2 - Use of Cryptography
[27] Standards Mapping - Payment Card Industry Software Security Framework 1.1 Control Objective 7.1 - 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 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-002040 CAT II
[37] Standards Mapping - Security Technical Implementation Guide Version 4.3 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[38] Standards Mapping - Security Technical Implementation Guide Version 4.4 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[39] Standards Mapping - Security Technical Implementation Guide Version 4.5 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[40] Standards Mapping - Security Technical Implementation Guide Version 4.6 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[41] Standards Mapping - Security Technical Implementation Guide Version 4.7 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[42] Standards Mapping - Security Technical Implementation Guide Version 4.8 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[43] Standards Mapping - Security Technical Implementation Guide Version 4.9 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[44] Standards Mapping - Security Technical Implementation Guide Version 4.10 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[45] Standards Mapping - Security Technical Implementation Guide Version 4.11 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[46] Standards Mapping - Security Technical Implementation Guide Version 4.1 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[47] Standards Mapping - Security Technical Implementation Guide Version 5.1 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[48] Standards Mapping - Security Technical Implementation Guide Version 5.2 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[49] Standards Mapping - Security Technical Implementation Guide Version 5.3 APSC-DV-000590 CAT II, APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[50] Standards Mapping - Security Technical Implementation Guide Version 6.1 APSC-DV-000590 CAT II, APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
desc.dataflow.golang.weak_encryption_user_controlled_key_size
Abstract
키 크기 매개 변수를 사용하는 암호화 함수에는 감염된 키 크기 값을 전달해서는 안 됩니다.
Explanation
사용자가 제어하는 값을 통해 키 크기를 결정할 수 있도록 허용하면 공격자가 빈 키를 지정하여 빈 키로 암호화된 데이터를 비교적 손쉽게 해독할 수 있게 됩니다. 0이 아닌 값을 지정해야 하더라도 공격자는 여전히 최대한 낮은 값을 지정하여 암호화의 보안 수준을 떨어뜨릴 수 있습니다.
약한 암호화: 사용자 제어 키 크기 이슈는 다음과 같은 경우에 발생합니다.
1. 신뢰할 수 없는 소스를 통해 데이터가 프로그램에 입력됩니다.
2. 암호화 함수 내에서 사용자 제어 데이터가 키 크기 매개 변수 내에 포함되거나 전체 키 크기 매개 변수로 사용됩니다.
다수의 소프트웨어 보안 취약점과 마찬가지로 약한 암호화: 사용자 제어 키 크기는 목적 달성을 위한 수단이며 그 자체가 목적은 아닙니다. 이 취약점은 본질적으로 간단 명료합니다. 즉, 공격자가 응용 프로그램에 악성 데이터를 전달하며 이 데이터가 암호화를 수행하는 동안 키 크기 값의 전체 또는 일부로 사용됩니다.
사용자 제어 키 크기가 있을 때의 문제는 다양한 공격이 가능해질 수 있다는 점입니다.
1. 공격자는 이 취약점을 이용하여 자신이 접근할 수 있는 데이터와 관련된 암호화 작업에 대해 키 크기를 0으로 지정할 수 있습니다. 이렇게 되면 여러 알고리즘을 빈 키와 함께 사용하여 자신의 데이터를 해독할 수 있기 때문에 응용 프로그램 내에서 사용되는 암호화 구현에 대한 정보가 누출될 수 있습니다. 이에 따라 공격자가 크랙하는 동안 특정 알고리즘에 집중할 수 있도록 하여 다른 사용자의 암호화된 데이터를 보다 쉽게 해독하게 될 수 있습니다.
2. 공격자가 다른 사용자의 암호화 키 크기를 조작할 수 있거나 다른 사용자가 0(또는 최대한 낮은 값)인 암호화 키 크기를 사용하도록 속일 수 있다면, 공격자가 사용된 암호화 알고리즘을 파악한 후 다른 사용자의 암호화된 데이터를 판독할 수 있게 됩니다.
예제 1: 다음 코드에서는 사용자가 제어하는 키 크기 매개 변수를 사용하여 AES 암호화를 수행합니다.
약한 암호화: 사용자 제어 키 크기 이슈는 다음과 같은 경우에 발생합니다.
1. 신뢰할 수 없는 소스를 통해 데이터가 프로그램에 입력됩니다.
2. 암호화 함수 내에서 사용자 제어 데이터가 키 크기 매개 변수 내에 포함되거나 전체 키 크기 매개 변수로 사용됩니다.
다수의 소프트웨어 보안 취약점과 마찬가지로 약한 암호화: 사용자 제어 키 크기는 목적 달성을 위한 수단이며 그 자체가 목적은 아닙니다. 이 취약점은 본질적으로 간단 명료합니다. 즉, 공격자가 응용 프로그램에 악성 데이터를 전달하며 이 데이터가 암호화를 수행하는 동안 키 크기 값의 전체 또는 일부로 사용됩니다.
사용자 제어 키 크기가 있을 때의 문제는 다양한 공격이 가능해질 수 있다는 점입니다.
1. 공격자는 이 취약점을 이용하여 자신이 접근할 수 있는 데이터와 관련된 암호화 작업에 대해 키 크기를 0으로 지정할 수 있습니다. 이렇게 되면 여러 알고리즘을 빈 키와 함께 사용하여 자신의 데이터를 해독할 수 있기 때문에 응용 프로그램 내에서 사용되는 암호화 구현에 대한 정보가 누출될 수 있습니다. 이에 따라 공격자가 크랙하는 동안 특정 알고리즘에 집중할 수 있도록 하여 다른 사용자의 암호화된 데이터를 보다 쉽게 해독하게 될 수 있습니다.
2. 공격자가 다른 사용자의 암호화 키 크기를 조작할 수 있거나 다른 사용자가 0(또는 최대한 낮은 값)인 암호화 키 크기를 사용하도록 속일 수 있다면, 공격자가 사용된 암호화 알고리즘을 파악한 후 다른 사용자의 암호화된 데이터를 판독할 수 있게 됩니다.
예제 1: 다음 코드에서는 사용자가 제어하는 키 크기 매개 변수를 사용하여 AES 암호화를 수행합니다.
...
Properties prop = new Properties();
prop.load(new FileInputStream("config.properties"));
String keySize = prop.getProperty("keySize");
...
PBEKeySpec spec = new PBEKeySpec(
password.toCharArray(),
saltBytes,
pswdIterations,
Integer.parseInt(keySize)
);
SecretKey secretKey = factory.generateSecret(spec);
SecretKeySpec secret = new SecretKeySpec(secretKey.getEncoded(), "AES");
...
Example 1
의 코드는 성공적으로 실행되지만 이 기능을 사용할 수 있는 사용자는 누구든지 keySize
속성을 수정하여 암호화 알고리즘에 대한 키 크기 매개 변수를 조작할 수 있습니다. 프로그램을 공개한 후에는 악의적인 사용자가 지정된 암호화 작업의 키 크기를 알아내었는지 여부를 파악하기가 상당히 어렵기 때문에 사용자 제어 키 크기와 관련된 문제를 되돌리기가 힘들 수 있습니다.References
[1] Standards Mapping - Common Weakness Enumeration CWE ID 326
[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-12 Cryptographic Key Establishment and Management (P1), SC-13 Cryptographic Protection (P1)
[6] Standards Mapping - NIST Special Publication 800-53 Revision 5 AU-10 Non-Repudiation, SC-12 Cryptographic Key Establishment and Management, SC-13 Cryptographic Protection
[7] Standards Mapping - OWASP Application Security Verification Standard 4.0 2.6.3 Look-up Secret Verifier Requirements (L2 L3), 2.8.3 Single or Multi Factor One Time Verifier Requirements (L2 L3), 6.2.1 Algorithms (L1 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), 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 3.6.1, Requirement 6.5.8
[18] Standards Mapping - Payment Card Industry Data Security Standard Version 1.2 Requirement 3.6.1, Requirement 6.3.1.3, Requirement 6.5.8
[19] Standards Mapping - Payment Card Industry Data Security Standard Version 2.0 Requirement 3.6.1, Requirement 6.5.3
[20] Standards Mapping - Payment Card Industry Data Security Standard Version 3.0 Requirement 3.6.1, Requirement 6.5.3
[21] Standards Mapping - Payment Card Industry Data Security Standard Version 3.1 Requirement 3.6.1, Requirement 6.5.3
[22] Standards Mapping - Payment Card Industry Data Security Standard Version 3.2 Requirement 3.6.1, Requirement 6.5.3
[23] Standards Mapping - Payment Card Industry Data Security Standard Version 3.2.1 Requirement 3.6.1, Requirement 6.5.3
[24] Standards Mapping - Payment Card Industry Data Security Standard Version 4.0 Requirement 3.6.1, Requirement 6.2.4
[25] Standards Mapping - Payment Card Industry Data Security Standard Version 4.0.1 Requirement 3.6.1, Requirement 6.2.4
[26] Standards Mapping - Payment Card Industry Software Security Framework 1.0 Control Objective 7.2 - Use of Cryptography
[27] Standards Mapping - Payment Card Industry Software Security Framework 1.1 Control Objective 7.1 - 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 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-002040 CAT II
[37] Standards Mapping - Security Technical Implementation Guide Version 4.3 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[38] Standards Mapping - Security Technical Implementation Guide Version 4.4 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[39] Standards Mapping - Security Technical Implementation Guide Version 4.5 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[40] Standards Mapping - Security Technical Implementation Guide Version 4.6 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[41] Standards Mapping - Security Technical Implementation Guide Version 4.7 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[42] Standards Mapping - Security Technical Implementation Guide Version 4.8 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[43] Standards Mapping - Security Technical Implementation Guide Version 4.9 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[44] Standards Mapping - Security Technical Implementation Guide Version 4.10 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[45] Standards Mapping - Security Technical Implementation Guide Version 4.11 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[46] Standards Mapping - Security Technical Implementation Guide Version 4.1 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[47] Standards Mapping - Security Technical Implementation Guide Version 5.1 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[48] Standards Mapping - Security Technical Implementation Guide Version 5.2 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[49] Standards Mapping - Security Technical Implementation Guide Version 5.3 APSC-DV-000590 CAT II, APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[50] Standards Mapping - Security Technical Implementation Guide Version 6.1 APSC-DV-000590 CAT II, APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
desc.dataflow.java.weak_encryption_user_controlled_key_size
Abstract
키 크기 매개 변수를 사용하는 암호화 함수에는 감염된 키 크기 값을 전달해서는 안 됩니다.
Explanation
사용자가 제어하는 값을 통해 키 크기를 결정할 수 있도록 허용하면 공격자가 빈 키를 지정하여 빈 키로 암호화된 데이터를 비교적 손쉽게 해독할 수 있게 됩니다. 0이 아닌 값을 지정해야 하더라도 공격자는 여전히 최대한 낮은 값을 지정하여 암호화의 보안 수준을 떨어뜨릴 수 있습니다.
약한 암호화: 사용자 제어 키 크기 이슈는 다음과 같은 경우에 발생합니다.
1. 신뢰할 수 없는 소스를 통해 데이터가 프로그램에 입력됩니다.
2. 암호화 함수 내에서 사용자 제어 데이터가 키 크기 매개 변수 내에 포함되거나 전체 키 크기 매개 변수로 사용됩니다.
다수의 소프트웨어 보안 취약점과 마찬가지로 약한 암호화: 사용자 제어 키 크기는 목적 달성을 위한 수단이며 그 자체가 목적은 아닙니다. 이 취약점은 본질적으로 간단 명료합니다. 즉, 공격자가 응용 프로그램에 악성 데이터를 전달하며 이 데이터가 암호화를 수행하는 동안 키 크기 값의 전체 또는 일부로 사용됩니다.
사용자 제어 키 크기가 있을 때의 문제는 다양한 공격이 가능해질 수 있다는 점입니다.
1. 공격자는 이 취약점을 이용하여 자신이 접근할 수 있는 데이터와 관련된 암호화 작업에 대해 키 크기를 0으로 지정할 수 있습니다. 이렇게 되면 여러 알고리즘을 빈 키와 함께 사용하여 자신의 데이터를 해독할 수 있기 때문에 응용 프로그램 내에서 사용되는 암호화 구현에 대한 정보가 누출될 수 있습니다. 이에 따라 공격자가 크랙하는 동안 특정 알고리즘에 집중할 수 있도록 하여 다른 사용자의 암호화된 데이터를 보다 쉽게 해독하게 될 수 있습니다.
2. 공격자가 다른 사용자의 암호화 키 크기를 조작할 수 있거나 다른 사용자가 0(또는 최대한 낮은 값)인 암호화 키 크기를 사용하도록 속일 수 있다면, 공격자가 사용된 암호화 알고리즘을 파악한 후 다른 사용자의 암호화된 데이터를 판독할 수 있게 됩니다.
예제 1: 다음 코드에서는 사용자가 제어하는 키 크기 매개 변수를 사용하여 AES 암호화를 수행합니다.
약한 암호화: 사용자 제어 키 크기 이슈는 다음과 같은 경우에 발생합니다.
1. 신뢰할 수 없는 소스를 통해 데이터가 프로그램에 입력됩니다.
2. 암호화 함수 내에서 사용자 제어 데이터가 키 크기 매개 변수 내에 포함되거나 전체 키 크기 매개 변수로 사용됩니다.
다수의 소프트웨어 보안 취약점과 마찬가지로 약한 암호화: 사용자 제어 키 크기는 목적 달성을 위한 수단이며 그 자체가 목적은 아닙니다. 이 취약점은 본질적으로 간단 명료합니다. 즉, 공격자가 응용 프로그램에 악성 데이터를 전달하며 이 데이터가 암호화를 수행하는 동안 키 크기 값의 전체 또는 일부로 사용됩니다.
사용자 제어 키 크기가 있을 때의 문제는 다양한 공격이 가능해질 수 있다는 점입니다.
1. 공격자는 이 취약점을 이용하여 자신이 접근할 수 있는 데이터와 관련된 암호화 작업에 대해 키 크기를 0으로 지정할 수 있습니다. 이렇게 되면 여러 알고리즘을 빈 키와 함께 사용하여 자신의 데이터를 해독할 수 있기 때문에 응용 프로그램 내에서 사용되는 암호화 구현에 대한 정보가 누출될 수 있습니다. 이에 따라 공격자가 크랙하는 동안 특정 알고리즘에 집중할 수 있도록 하여 다른 사용자의 암호화된 데이터를 보다 쉽게 해독하게 될 수 있습니다.
2. 공격자가 다른 사용자의 암호화 키 크기를 조작할 수 있거나 다른 사용자가 0(또는 최대한 낮은 값)인 암호화 키 크기를 사용하도록 속일 수 있다면, 공격자가 사용된 암호화 알고리즘을 파악한 후 다른 사용자의 암호화된 데이터를 판독할 수 있게 됩니다.
예제 1: 다음 코드에서는 사용자가 제어하는 키 크기 매개 변수를 사용하여 AES 암호화를 수행합니다.
...
@property (strong, nonatomic) IBOutlet UITextField *inputTextField;
...
CCCrypt(kCCEncrypt,
kCCAlgorithmAES,
kCCOptionPKCS7Padding,
key,
sizeof(_inputTextField.text),
iv,
plaintext,
sizeof(plaintext),
ciphertext,
sizeof(ciphertext),
&numBytesEncrypted);
...
Example 1
의 코드는 성공적으로 실행되지만 이 기능을 사용할 수 있는 사용자는 누구든지 UITextField inputTextField
의 텍스트를 수정하여 암호화 알고리즘에 대한 키 크기 매개 변수를 조작할 수 있습니다. 프로그램을 공개한 후에는 악의적인 사용자가 지정된 암호화 작업의 키 크기를 알아내었는지 여부를 파악하기가 상당히 어렵기 때문에 사용자 제어 키 크기와 관련된 문제를 되돌리기가 힘들 수 있습니다.References
[1] Standards Mapping - Common Weakness Enumeration CWE ID 326
[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-12 Cryptographic Key Establishment and Management (P1), SC-13 Cryptographic Protection (P1)
[6] Standards Mapping - NIST Special Publication 800-53 Revision 5 AU-10 Non-Repudiation, SC-12 Cryptographic Key Establishment and Management, SC-13 Cryptographic Protection
[7] Standards Mapping - OWASP Application Security Verification Standard 4.0 2.6.3 Look-up Secret Verifier Requirements (L2 L3), 2.8.3 Single or Multi Factor One Time Verifier Requirements (L2 L3), 6.2.1 Algorithms (L1 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), 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 3.6.1, Requirement 6.5.8
[18] Standards Mapping - Payment Card Industry Data Security Standard Version 1.2 Requirement 3.6.1, Requirement 6.3.1.3, Requirement 6.5.8
[19] Standards Mapping - Payment Card Industry Data Security Standard Version 2.0 Requirement 3.6.1, Requirement 6.5.3
[20] Standards Mapping - Payment Card Industry Data Security Standard Version 3.0 Requirement 3.6.1, Requirement 6.5.3
[21] Standards Mapping - Payment Card Industry Data Security Standard Version 3.1 Requirement 3.6.1, Requirement 6.5.3
[22] Standards Mapping - Payment Card Industry Data Security Standard Version 3.2 Requirement 3.6.1, Requirement 6.5.3
[23] Standards Mapping - Payment Card Industry Data Security Standard Version 3.2.1 Requirement 3.6.1, Requirement 6.5.3
[24] Standards Mapping - Payment Card Industry Data Security Standard Version 4.0 Requirement 3.6.1, Requirement 6.2.4
[25] Standards Mapping - Payment Card Industry Data Security Standard Version 4.0.1 Requirement 3.6.1, Requirement 6.2.4
[26] Standards Mapping - Payment Card Industry Software Security Framework 1.0 Control Objective 7.2 - Use of Cryptography
[27] Standards Mapping - Payment Card Industry Software Security Framework 1.1 Control Objective 7.1 - 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 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-002040 CAT II
[37] Standards Mapping - Security Technical Implementation Guide Version 4.3 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[38] Standards Mapping - Security Technical Implementation Guide Version 4.4 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[39] Standards Mapping - Security Technical Implementation Guide Version 4.5 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[40] Standards Mapping - Security Technical Implementation Guide Version 4.6 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[41] Standards Mapping - Security Technical Implementation Guide Version 4.7 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[42] Standards Mapping - Security Technical Implementation Guide Version 4.8 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[43] Standards Mapping - Security Technical Implementation Guide Version 4.9 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[44] Standards Mapping - Security Technical Implementation Guide Version 4.10 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[45] Standards Mapping - Security Technical Implementation Guide Version 4.11 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[46] Standards Mapping - Security Technical Implementation Guide Version 4.1 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[47] Standards Mapping - Security Technical Implementation Guide Version 5.1 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[48] Standards Mapping - Security Technical Implementation Guide Version 5.2 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[49] Standards Mapping - Security Technical Implementation Guide Version 5.3 APSC-DV-000590 CAT II, APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[50] Standards Mapping - Security Technical Implementation Guide Version 6.1 APSC-DV-000590 CAT II, APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
desc.dataflow.objc.weak_encryption_user_controlled_key_size
Abstract
키 크기 매개 변수를 사용하는 암호화 함수에는 감염된 키 크기 값을 전달해서는 안 됩니다.
Explanation
사용자가 제어하는 값을 통해 키 크기를 결정할 수 있도록 허용하면 공격자가 빈 키를 지정하여 빈 키로 암호화된 데이터를 비교적 손쉽게 해독할 수 있게 됩니다. 0이 아닌 값을 지정해야 하더라도 공격자는 여전히 최대한 낮은 값을 지정하여 암호화의 보안 수준을 떨어뜨릴 수 있습니다.
약한 암호화: 사용자 제어 키 크기 이슈는 다음과 같은 경우에 발생합니다.
1. 신뢰할 수 없는 소스를 통해 데이터가 프로그램에 입력됩니다.
2. 암호화 함수 내에서 사용자 제어 데이터가 키 크기 매개 변수 내에 포함되거나 전체 키 크기 매개 변수로 사용됩니다.
다수의 소프트웨어 보안 취약점과 마찬가지로 약한 암호화: 사용자 제어 키 크기는 목적 달성을 위한 수단이며 그 자체가 목적은 아닙니다. 이 취약점은 본질적으로 간단 명료합니다. 즉, 공격자가 응용 프로그램에 악성 데이터를 전달하며 이 데이터가 암호화를 수행하는 동안 키 크기 값의 전체 또는 일부로 사용됩니다.
사용자 제어 키 크기가 있을 때의 문제는 다양한 공격이 가능해질 수 있다는 점입니다.
1. 공격자는 이 취약점을 이용하여 자신이 접근할 수 있는 데이터와 관련된 암호화 작업에 대해 키 크기를 0으로 지정할 수 있습니다. 이렇게 되면 여러 알고리즘을 빈 키와 함께 사용하여 자신의 데이터를 해독할 수 있기 때문에 응용 프로그램 내에서 사용되는 암호화 구현에 대한 정보가 누출될 수 있습니다. 이에 따라 공격자가 크랙하는 동안 특정 알고리즘에만 집중할 수 있도록 하여 다른 사용자의 암호화된 데이터를 보다 쉽게 해독하게 될 수 있습니다.
2. 공격자가 다른 사용자의 암호화 키 크기를 조작할 수 있거나 다른 사용자가 0(또는 최대한 낮은 값)인 암호화 키 크기를 사용하도록 속일 수 있다면, 공격자가 사용된 암호화 알고리즘을 파악한 후 다른 사용자의 암호화된 데이터를 판독할 수 있게 됩니다.
예제 1: 다음 코드는 암호에서 키를 파생하지만 사용자가 제어하는 파생된 키 길이를 사용합니다.
약한 암호화: 사용자 제어 키 크기 이슈는 다음과 같은 경우에 발생합니다.
1. 신뢰할 수 없는 소스를 통해 데이터가 프로그램에 입력됩니다.
2. 암호화 함수 내에서 사용자 제어 데이터가 키 크기 매개 변수 내에 포함되거나 전체 키 크기 매개 변수로 사용됩니다.
다수의 소프트웨어 보안 취약점과 마찬가지로 약한 암호화: 사용자 제어 키 크기는 목적 달성을 위한 수단이며 그 자체가 목적은 아닙니다. 이 취약점은 본질적으로 간단 명료합니다. 즉, 공격자가 응용 프로그램에 악성 데이터를 전달하며 이 데이터가 암호화를 수행하는 동안 키 크기 값의 전체 또는 일부로 사용됩니다.
사용자 제어 키 크기가 있을 때의 문제는 다양한 공격이 가능해질 수 있다는 점입니다.
1. 공격자는 이 취약점을 이용하여 자신이 접근할 수 있는 데이터와 관련된 암호화 작업에 대해 키 크기를 0으로 지정할 수 있습니다. 이렇게 되면 여러 알고리즘을 빈 키와 함께 사용하여 자신의 데이터를 해독할 수 있기 때문에 응용 프로그램 내에서 사용되는 암호화 구현에 대한 정보가 누출될 수 있습니다. 이에 따라 공격자가 크랙하는 동안 특정 알고리즘에만 집중할 수 있도록 하여 다른 사용자의 암호화된 데이터를 보다 쉽게 해독하게 될 수 있습니다.
2. 공격자가 다른 사용자의 암호화 키 크기를 조작할 수 있거나 다른 사용자가 0(또는 최대한 낮은 값)인 암호화 키 크기를 사용하도록 속일 수 있다면, 공격자가 사용된 암호화 알고리즘을 파악한 후 다른 사용자의 암호화된 데이터를 판독할 수 있게 됩니다.
예제 1: 다음 코드는 암호에서 키를 파생하지만 사용자가 제어하는 파생된 키 길이를 사용합니다.
...
$hash = hash_pbkdf2('sha256', $password, $random_salt, 100000, strlen($password));
...
Example 1
의 코드는 성공적으로 실행되지만 user_input
변수는 사용자가 제어할 수 있으므로 이 기능을 사용할 수 있는 사용자는 누구든지 암호화 알고리즘에 대해 키 크기 매개 변수를 조작할 수 있습니다. 프로그램을 공개한 후에는 악의적인 사용자가 지정된 암호화 작업의 키 크기를 알아내었는지 여부를 파악하기가 상당히 어렵기 때문에 사용자 제어 키 크기와 관련된 문제를 되돌리기가 힘들 수 있습니다.References
[1] Standards Mapping - Common Weakness Enumeration CWE ID 326
[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-12 Cryptographic Key Establishment and Management (P1), SC-13 Cryptographic Protection (P1)
[6] Standards Mapping - NIST Special Publication 800-53 Revision 5 AU-10 Non-Repudiation, SC-12 Cryptographic Key Establishment and Management, SC-13 Cryptographic Protection
[7] Standards Mapping - OWASP Application Security Verification Standard 4.0 2.6.3 Look-up Secret Verifier Requirements (L2 L3), 2.8.3 Single or Multi Factor One Time Verifier Requirements (L2 L3), 6.2.1 Algorithms (L1 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), 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 3.6.1, Requirement 6.5.8
[18] Standards Mapping - Payment Card Industry Data Security Standard Version 1.2 Requirement 3.6.1, Requirement 6.3.1.3, Requirement 6.5.8
[19] Standards Mapping - Payment Card Industry Data Security Standard Version 2.0 Requirement 3.6.1, Requirement 6.5.3
[20] Standards Mapping - Payment Card Industry Data Security Standard Version 3.0 Requirement 3.6.1, Requirement 6.5.3
[21] Standards Mapping - Payment Card Industry Data Security Standard Version 3.1 Requirement 3.6.1, Requirement 6.5.3
[22] Standards Mapping - Payment Card Industry Data Security Standard Version 3.2 Requirement 3.6.1, Requirement 6.5.3
[23] Standards Mapping - Payment Card Industry Data Security Standard Version 3.2.1 Requirement 3.6.1, Requirement 6.5.3
[24] Standards Mapping - Payment Card Industry Data Security Standard Version 4.0 Requirement 3.6.1, Requirement 6.2.4
[25] Standards Mapping - Payment Card Industry Data Security Standard Version 4.0.1 Requirement 3.6.1, Requirement 6.2.4
[26] Standards Mapping - Payment Card Industry Software Security Framework 1.0 Control Objective 7.2 - Use of Cryptography
[27] Standards Mapping - Payment Card Industry Software Security Framework 1.1 Control Objective 7.1 - 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 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-002040 CAT II
[37] Standards Mapping - Security Technical Implementation Guide Version 4.3 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[38] Standards Mapping - Security Technical Implementation Guide Version 4.4 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[39] Standards Mapping - Security Technical Implementation Guide Version 4.5 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[40] Standards Mapping - Security Technical Implementation Guide Version 4.6 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[41] Standards Mapping - Security Technical Implementation Guide Version 4.7 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[42] Standards Mapping - Security Technical Implementation Guide Version 4.8 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[43] Standards Mapping - Security Technical Implementation Guide Version 4.9 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[44] Standards Mapping - Security Technical Implementation Guide Version 4.10 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[45] Standards Mapping - Security Technical Implementation Guide Version 4.11 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[46] Standards Mapping - Security Technical Implementation Guide Version 4.1 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[47] Standards Mapping - Security Technical Implementation Guide Version 5.1 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[48] Standards Mapping - Security Technical Implementation Guide Version 5.2 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[49] Standards Mapping - Security Technical Implementation Guide Version 5.3 APSC-DV-000590 CAT II, APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[50] Standards Mapping - Security Technical Implementation Guide Version 6.1 APSC-DV-000590 CAT II, APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
desc.dataflow.php.weak_encryption_user_controlled_key_size
Abstract
키 크기 매개 변수를 사용하는 암호화 함수에는 감염된 키 크기 값을 전달해서는 안 됩니다.
Explanation
사용자가 제어하는 값을 통해 키 크기를 결정할 수 있도록 허용하면 공격자가 빈 키를 지정하여 빈 키로 암호화된 데이터를 비교적 손쉽게 해독할 수 있게 됩니다. 0이 아닌 값을 지정해야 하더라도 공격자는 여전히 최대한 낮은 값을 지정하여 암호화의 보안 수준을 떨어뜨릴 수 있습니다.
약한 암호화: 사용자 제어 키 크기 이슈는 다음과 같은 경우에 발생합니다.
1. 신뢰할 수 없는 소스를 통해 데이터가 프로그램에 입력됩니다.
2. 암호화 함수 내에서 사용자 제어 데이터가 키 크기 매개 변수 내에 포함되거나 전체 키 크기 매개 변수로 사용됩니다.
다수의 소프트웨어 보안 취약점과 마찬가지로 약한 암호화: 사용자 제어 키 크기는 목적 달성을 위한 수단이며 그 자체가 목적은 아닙니다. 이 취약점은 본질적으로 간단 명료합니다. 즉, 공격자가 응용 프로그램에 악성 데이터를 전달하며 이 데이터가 암호화를 수행하는 동안 키 크기 값의 전체 또는 일부로 사용됩니다.
사용자 제어 키 크기가 있을 때의 문제는 다양한 공격이 가능해질 수 있다는 점입니다.
1. 공격자는 이 취약점을 이용하여 자신이 접근할 수 있는 데이터와 관련된 암호화 작업에 대해 키 크기를 0으로 지정할 수 있습니다. 이렇게 되면 여러 알고리즘을 빈 키와 함께 사용하여 자신의 데이터를 해독할 수 있기 때문에 응용 프로그램 내에서 사용되는 암호화 구현에 대한 정보가 누출될 수 있습니다. 이에 따라 공격자가 크랙하는 동안 특정 알고리즘에 집중할 수 있도록 하여 다른 사용자의 암호화된 데이터를 보다 쉽게 해독하게 될 수 있습니다.
2. 공격자가 다른 사용자의 암호화 키 크기를 조작할 수 있거나 다른 사용자가 0(또는 최대한 낮은 값)인 암호화 키 크기를 사용하도록 속일 수 있다면, 공격자가 사용된 암호화 알고리즘을 파악한 후 다른 사용자의 암호화된 데이터를 판독할 수 있게 됩니다.
예제 1: 다음 코드는 암호에서 키를 파생하지만 사용자가 제어하는 파생된 키 길이를 사용합니다.
약한 암호화: 사용자 제어 키 크기 이슈는 다음과 같은 경우에 발생합니다.
1. 신뢰할 수 없는 소스를 통해 데이터가 프로그램에 입력됩니다.
2. 암호화 함수 내에서 사용자 제어 데이터가 키 크기 매개 변수 내에 포함되거나 전체 키 크기 매개 변수로 사용됩니다.
다수의 소프트웨어 보안 취약점과 마찬가지로 약한 암호화: 사용자 제어 키 크기는 목적 달성을 위한 수단이며 그 자체가 목적은 아닙니다. 이 취약점은 본질적으로 간단 명료합니다. 즉, 공격자가 응용 프로그램에 악성 데이터를 전달하며 이 데이터가 암호화를 수행하는 동안 키 크기 값의 전체 또는 일부로 사용됩니다.
사용자 제어 키 크기가 있을 때의 문제는 다양한 공격이 가능해질 수 있다는 점입니다.
1. 공격자는 이 취약점을 이용하여 자신이 접근할 수 있는 데이터와 관련된 암호화 작업에 대해 키 크기를 0으로 지정할 수 있습니다. 이렇게 되면 여러 알고리즘을 빈 키와 함께 사용하여 자신의 데이터를 해독할 수 있기 때문에 응용 프로그램 내에서 사용되는 암호화 구현에 대한 정보가 누출될 수 있습니다. 이에 따라 공격자가 크랙하는 동안 특정 알고리즘에 집중할 수 있도록 하여 다른 사용자의 암호화된 데이터를 보다 쉽게 해독하게 될 수 있습니다.
2. 공격자가 다른 사용자의 암호화 키 크기를 조작할 수 있거나 다른 사용자가 0(또는 최대한 낮은 값)인 암호화 키 크기를 사용하도록 속일 수 있다면, 공격자가 사용된 암호화 알고리즘을 파악한 후 다른 사용자의 암호화된 데이터를 판독할 수 있게 됩니다.
예제 1: 다음 코드는 암호에서 키를 파생하지만 사용자가 제어하는 파생된 키 길이를 사용합니다.
...
dk = hashlib.pbkdf2_hmac('sha256', password, random_salt, 100000, dklen=user_input)
...
Example 1
의 코드는 성공적으로 실행되지만 user_input
변수는 사용자가 제어할 수 있으므로 이 기능을 사용할 수 있는 사용자는 누구든지 암호화 알고리즘에 대해 키 크기 매개 변수를 조작할 수 있습니다. 프로그램을 공개한 후에는 악의적인 사용자가 지정된 암호화 작업의 키 크기를 알아내었는지 여부를 파악하기가 상당히 어렵기 때문에 사용자 제어 키 크기와 관련된 문제를 되돌리기가 힘들 수 있습니다.References
[1] Standards Mapping - Common Weakness Enumeration CWE ID 326
[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-12 Cryptographic Key Establishment and Management (P1), SC-13 Cryptographic Protection (P1)
[6] Standards Mapping - NIST Special Publication 800-53 Revision 5 AU-10 Non-Repudiation, SC-12 Cryptographic Key Establishment and Management, SC-13 Cryptographic Protection
[7] Standards Mapping - OWASP Application Security Verification Standard 4.0 2.6.3 Look-up Secret Verifier Requirements (L2 L3), 2.8.3 Single or Multi Factor One Time Verifier Requirements (L2 L3), 6.2.1 Algorithms (L1 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), 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 3.6.1, Requirement 6.5.8
[18] Standards Mapping - Payment Card Industry Data Security Standard Version 1.2 Requirement 3.6.1, Requirement 6.3.1.3, Requirement 6.5.8
[19] Standards Mapping - Payment Card Industry Data Security Standard Version 2.0 Requirement 3.6.1, Requirement 6.5.3
[20] Standards Mapping - Payment Card Industry Data Security Standard Version 3.0 Requirement 3.6.1, Requirement 6.5.3
[21] Standards Mapping - Payment Card Industry Data Security Standard Version 3.1 Requirement 3.6.1, Requirement 6.5.3
[22] Standards Mapping - Payment Card Industry Data Security Standard Version 3.2 Requirement 3.6.1, Requirement 6.5.3
[23] Standards Mapping - Payment Card Industry Data Security Standard Version 3.2.1 Requirement 3.6.1, Requirement 6.5.3
[24] Standards Mapping - Payment Card Industry Data Security Standard Version 4.0 Requirement 3.6.1, Requirement 6.2.4
[25] Standards Mapping - Payment Card Industry Data Security Standard Version 4.0.1 Requirement 3.6.1, Requirement 6.2.4
[26] Standards Mapping - Payment Card Industry Software Security Framework 1.0 Control Objective 7.2 - Use of Cryptography
[27] Standards Mapping - Payment Card Industry Software Security Framework 1.1 Control Objective 7.1 - 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 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-002040 CAT II
[37] Standards Mapping - Security Technical Implementation Guide Version 4.3 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[38] Standards Mapping - Security Technical Implementation Guide Version 4.4 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[39] Standards Mapping - Security Technical Implementation Guide Version 4.5 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[40] Standards Mapping - Security Technical Implementation Guide Version 4.6 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[41] Standards Mapping - Security Technical Implementation Guide Version 4.7 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[42] Standards Mapping - Security Technical Implementation Guide Version 4.8 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[43] Standards Mapping - Security Technical Implementation Guide Version 4.9 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[44] Standards Mapping - Security Technical Implementation Guide Version 4.10 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[45] Standards Mapping - Security Technical Implementation Guide Version 4.11 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[46] Standards Mapping - Security Technical Implementation Guide Version 4.1 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[47] Standards Mapping - Security Technical Implementation Guide Version 5.1 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[48] Standards Mapping - Security Technical Implementation Guide Version 5.2 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[49] Standards Mapping - Security Technical Implementation Guide Version 5.3 APSC-DV-000590 CAT II, APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[50] Standards Mapping - Security Technical Implementation Guide Version 6.1 APSC-DV-000590 CAT II, APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
desc.dataflow.python.weak_encryption_user_controlled_key_size
Abstract
키 크기 매개 변수를 사용하는 암호화 함수에는 감염된 키 크기 값을 전달해서는 안 됩니다.
Explanation
사용자가 제어하는 값을 통해 키 크기를 결정할 수 있도록 허용하면 공격자가 빈 키를 지정하여 빈 키로 암호화된 데이터를 비교적 손쉽게 해독할 수 있게 됩니다. 0이 아닌 값을 지정해야 하더라도 공격자는 여전히 최대한 낮은 값을 지정하여 암호화의 보안 수준을 떨어뜨릴 수 있습니다.
약한 암호화: 사용자 제어 키 크기 이슈는 다음과 같은 경우에 발생합니다.
1. 신뢰할 수 없는 소스를 통해 데이터가 프로그램에 입력됩니다.
2. 암호화 함수 내에서 사용자 제어 데이터가 키 크기 매개 변수 내에 포함되거나 전체 키 크기 매개 변수로 사용됩니다.
다수의 소프트웨어 보안 취약점과 마찬가지로 약한 암호화: 사용자 제어 키 크기는 목적 달성을 위한 수단이며 그 자체가 목적은 아닙니다. 이 취약점은 본질적으로 간단 명료합니다. 즉, 공격자가 응용 프로그램에 악성 데이터를 전달하며 이 데이터가 암호화를 수행하는 동안 키 크기 값의 전체 또는 일부로 사용됩니다.
사용자 제어 키 크기가 있을 때의 문제는 다양한 공격이 가능해질 수 있다는 점입니다.
1. 공격자는 이 취약점을 이용하여 자신이 접근할 수 있는 데이터와 관련된 암호화 작업에 대해 키 크기를 0으로 지정할 수 있습니다. 이렇게 되면 여러 알고리즘을 빈 키와 함께 사용하여 자신의 데이터를 해독할 수 있기 때문에 응용 프로그램 내에서 사용되는 암호화 구현에 대한 정보가 누출될 수 있습니다. 이에 따라 공격자가 크랙하는 동안 특정 알고리즘에 집중할 수 있도록 하여 다른 사용자의 암호화된 데이터를 보다 쉽게 해독하게 될 수 있습니다.
2. 공격자가 다른 사용자의 암호화 키 크기를 조작할 수 있거나 다른 사용자가 0(또는 최대한 낮은 값)인 암호화 키 크기를 사용하도록 속일 수 있다면, 공격자가 사용된 암호화 알고리즘을 파악한 후 다른 사용자의 암호화된 데이터를 판독할 수 있게 됩니다.
예제 1: 다음 코드는 암호에서 키를 파생하지만 사용자가 제어하는 파생된 키 길이를 사용합니다.
약한 암호화: 사용자 제어 키 크기 이슈는 다음과 같은 경우에 발생합니다.
1. 신뢰할 수 없는 소스를 통해 데이터가 프로그램에 입력됩니다.
2. 암호화 함수 내에서 사용자 제어 데이터가 키 크기 매개 변수 내에 포함되거나 전체 키 크기 매개 변수로 사용됩니다.
다수의 소프트웨어 보안 취약점과 마찬가지로 약한 암호화: 사용자 제어 키 크기는 목적 달성을 위한 수단이며 그 자체가 목적은 아닙니다. 이 취약점은 본질적으로 간단 명료합니다. 즉, 공격자가 응용 프로그램에 악성 데이터를 전달하며 이 데이터가 암호화를 수행하는 동안 키 크기 값의 전체 또는 일부로 사용됩니다.
사용자 제어 키 크기가 있을 때의 문제는 다양한 공격이 가능해질 수 있다는 점입니다.
1. 공격자는 이 취약점을 이용하여 자신이 접근할 수 있는 데이터와 관련된 암호화 작업에 대해 키 크기를 0으로 지정할 수 있습니다. 이렇게 되면 여러 알고리즘을 빈 키와 함께 사용하여 자신의 데이터를 해독할 수 있기 때문에 응용 프로그램 내에서 사용되는 암호화 구현에 대한 정보가 누출될 수 있습니다. 이에 따라 공격자가 크랙하는 동안 특정 알고리즘에 집중할 수 있도록 하여 다른 사용자의 암호화된 데이터를 보다 쉽게 해독하게 될 수 있습니다.
2. 공격자가 다른 사용자의 암호화 키 크기를 조작할 수 있거나 다른 사용자가 0(또는 최대한 낮은 값)인 암호화 키 크기를 사용하도록 속일 수 있다면, 공격자가 사용된 암호화 알고리즘을 파악한 후 다른 사용자의 암호화된 데이터를 판독할 수 있게 됩니다.
예제 1: 다음 코드는 암호에서 키를 파생하지만 사용자가 제어하는 파생된 키 길이를 사용합니다.
...
dk = OpenSSL::PKCS5.pbkdf2_hmac(password, random_salt, 100000, user_input, digest)
...
Example 1
의 코드는 성공적으로 실행되지만 user_input
변수는 사용자가 제어할 수 있으므로 이 기능을 사용할 수 있는 사용자는 누구든지 암호화 알고리즘에 대해 키 크기 매개 변수를 조작할 수 있습니다. 프로그램을 공개한 후에는 악의적인 사용자가 지정된 암호화 작업의 키 크기를 알아내었는지 여부를 파악하기가 상당히 어렵기 때문에 사용자 제어 키 크기와 관련된 문제를 되돌리기가 힘들 수 있습니다.References
[1] Standards Mapping - Common Weakness Enumeration CWE ID 326
[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-12 Cryptographic Key Establishment and Management (P1), SC-13 Cryptographic Protection (P1)
[6] Standards Mapping - NIST Special Publication 800-53 Revision 5 AU-10 Non-Repudiation, SC-12 Cryptographic Key Establishment and Management, SC-13 Cryptographic Protection
[7] Standards Mapping - OWASP Application Security Verification Standard 4.0 2.6.3 Look-up Secret Verifier Requirements (L2 L3), 2.8.3 Single or Multi Factor One Time Verifier Requirements (L2 L3), 6.2.1 Algorithms (L1 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), 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 3.6.1, Requirement 6.5.8
[18] Standards Mapping - Payment Card Industry Data Security Standard Version 1.2 Requirement 3.6.1, Requirement 6.3.1.3, Requirement 6.5.8
[19] Standards Mapping - Payment Card Industry Data Security Standard Version 2.0 Requirement 3.6.1, Requirement 6.5.3
[20] Standards Mapping - Payment Card Industry Data Security Standard Version 3.0 Requirement 3.6.1, Requirement 6.5.3
[21] Standards Mapping - Payment Card Industry Data Security Standard Version 3.1 Requirement 3.6.1, Requirement 6.5.3
[22] Standards Mapping - Payment Card Industry Data Security Standard Version 3.2 Requirement 3.6.1, Requirement 6.5.3
[23] Standards Mapping - Payment Card Industry Data Security Standard Version 3.2.1 Requirement 3.6.1, Requirement 6.5.3
[24] Standards Mapping - Payment Card Industry Data Security Standard Version 4.0 Requirement 3.6.1, Requirement 6.2.4
[25] Standards Mapping - Payment Card Industry Data Security Standard Version 4.0.1 Requirement 3.6.1, Requirement 6.2.4
[26] Standards Mapping - Payment Card Industry Software Security Framework 1.0 Control Objective 7.2 - Use of Cryptography
[27] Standards Mapping - Payment Card Industry Software Security Framework 1.1 Control Objective 7.1 - 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 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-002040 CAT II
[37] Standards Mapping - Security Technical Implementation Guide Version 4.3 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[38] Standards Mapping - Security Technical Implementation Guide Version 4.4 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[39] Standards Mapping - Security Technical Implementation Guide Version 4.5 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[40] Standards Mapping - Security Technical Implementation Guide Version 4.6 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[41] Standards Mapping - Security Technical Implementation Guide Version 4.7 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[42] Standards Mapping - Security Technical Implementation Guide Version 4.8 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[43] Standards Mapping - Security Technical Implementation Guide Version 4.9 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[44] Standards Mapping - Security Technical Implementation Guide Version 4.10 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[45] Standards Mapping - Security Technical Implementation Guide Version 4.11 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[46] Standards Mapping - Security Technical Implementation Guide Version 4.1 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[47] Standards Mapping - Security Technical Implementation Guide Version 5.1 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[48] Standards Mapping - Security Technical Implementation Guide Version 5.2 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[49] Standards Mapping - Security Technical Implementation Guide Version 5.3 APSC-DV-000590 CAT II, APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[50] Standards Mapping - Security Technical Implementation Guide Version 6.1 APSC-DV-000590 CAT II, APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
desc.dataflow.ruby.weak_encryption_user_controlled_key_size
Abstract
키 크기 매개 변수를 사용하는 암호화 함수에는 감염된 키 크기 값을 전달해서는 안 됩니다.
Explanation
사용자가 제어하는 값을 통해 키 크기를 결정할 수 있도록 허용하면 공격자가 빈 키를 지정하여 빈 키로 암호화된 데이터를 비교적 손쉽게 해독할 수 있게 됩니다. 0이 아닌 값을 지정해야 하더라도 공격자는 여전히 최대한 낮은 값을 지정하여 암호화의 보안 수준을 떨어뜨릴 수 있습니다.
약한 암호화: 사용자 제어 키 크기 문제는 다음과 같은 경우에 발생합니다.
1. 신뢰할 수 없는 소스를 통해 데이터가 프로그램에 입력됩니다.
2. 암호화 함수 내에서 사용자 제어 데이터가 키 크기 매개 변수 내에 포함되거나 전체 키 크기 매개 변수로 사용됩니다.
여러 소프트웨어 보안 취약점과 마찬가지로 약한 암호화: 사용자 제어 키 크기는 목적의 수단일 뿐 목적 자체는 아닙니다. 이 취약점은 본질적으로 간단 명료합니다. 즉, 공격자가 응용 프로그램에 악성 데이터를 전달하며 이 데이터가 암호화를 수행하는 동안 키 크기 값의 전체 또는 일부로 사용됩니다.
사용자 제어 키 크기가 있을 때의 문제는 다양한 공격이 가능해질 수 있다는 점입니다.
1. 공격자는 이 취약점을 이용하여 자신이 접근할 수 있는 데이터와 관련된 암호화 작업에 대해 키 크기를 0으로 지정할 수 있습니다. 이렇게 되면 여러 알고리즘을 빈 키와 함께 사용하여 자신의 데이터를 해독할 수 있기 때문에 응용 프로그램 내에서 사용되는 암호화 구현에 대한 정보가 누출될 수 있습니다. 이에 따라 공격자가 크랙하는 동안 특정 알고리즘에 집중할 수 있도록 하여 다른 사용자의 암호화된 데이터를 보다 쉽게 해독하게 될 수 있습니다.
2. 공격자가 다른 사용자의 암호화 키 크기를 조작할 수 있거나 다른 사용자가 0(또는 최대한 낮은 값)인 암호화 키 크기를 사용하도록 속일 수 있다면, 공격자가 사용된 암호화 알고리즘을 파악한 후 다른 사용자의 암호화된 데이터를 판독할 수 있게 됩니다.
예제 1: 다음 코드는 사용자 제어 키 크기 매개 변수를 사용하여 AES 암호화를 수행합니다.
약한 암호화: 사용자 제어 키 크기 문제는 다음과 같은 경우에 발생합니다.
1. 신뢰할 수 없는 소스를 통해 데이터가 프로그램에 입력됩니다.
2. 암호화 함수 내에서 사용자 제어 데이터가 키 크기 매개 변수 내에 포함되거나 전체 키 크기 매개 변수로 사용됩니다.
여러 소프트웨어 보안 취약점과 마찬가지로 약한 암호화: 사용자 제어 키 크기는 목적의 수단일 뿐 목적 자체는 아닙니다. 이 취약점은 본질적으로 간단 명료합니다. 즉, 공격자가 응용 프로그램에 악성 데이터를 전달하며 이 데이터가 암호화를 수행하는 동안 키 크기 값의 전체 또는 일부로 사용됩니다.
사용자 제어 키 크기가 있을 때의 문제는 다양한 공격이 가능해질 수 있다는 점입니다.
1. 공격자는 이 취약점을 이용하여 자신이 접근할 수 있는 데이터와 관련된 암호화 작업에 대해 키 크기를 0으로 지정할 수 있습니다. 이렇게 되면 여러 알고리즘을 빈 키와 함께 사용하여 자신의 데이터를 해독할 수 있기 때문에 응용 프로그램 내에서 사용되는 암호화 구현에 대한 정보가 누출될 수 있습니다. 이에 따라 공격자가 크랙하는 동안 특정 알고리즘에 집중할 수 있도록 하여 다른 사용자의 암호화된 데이터를 보다 쉽게 해독하게 될 수 있습니다.
2. 공격자가 다른 사용자의 암호화 키 크기를 조작할 수 있거나 다른 사용자가 0(또는 최대한 낮은 값)인 암호화 키 크기를 사용하도록 속일 수 있다면, 공격자가 사용된 암호화 알고리즘을 파악한 후 다른 사용자의 암호화된 데이터를 판독할 수 있게 됩니다.
예제 1: 다음 코드는 사용자 제어 키 크기 매개 변수를 사용하여 AES 암호화를 수행합니다.
...
@IBOutlet weak var inputTextField : UITextField!
...
let key = (inputTextField.text as NSString).dataUsingEncoding(NSUTF8StringEncoding)
let keyPointer = UnsafePointer<UInt8>(key.bytes)
let keyLength = size_t(key.length)
...
let operation : CCOperation = UInt32(kCCEncrypt)
let algoritm : CCAlgorithm = UInt32(kCCAlgorithmAES128)
let options : CCOptions = UInt32(kCCOptionPKCS7Padding)
var numBytesEncrypted :size_t = 0
CCCrypt(operation,
algorithm,
options,
keyPointer,
keyLength,
iv,
plaintextPointer,
plaintextLength,
ciphertextPointer,
ciphertextLength,
&numBytesEncrypted)
...
Example 1
의 코드는 성공적으로 실행되지만 이 기능을 사용할 수 있는 사용자는 누구든지 UITextField inputTextField
의 텍스트를 수정하여 암호화 알고리즘에 대한 키 크기 매개 변수를 조작할 수 있습니다. 프로그램을 공개한 후에는 악의적인 사용자가 지정된 암호화 작업의 키 크기를 알아내었는지 여부를 파악하기가 상당히 어렵기 때문에 사용자 제어 키 크기와 관련된 문제를 되돌리기가 힘들 수 있습니다.References
[1] Standards Mapping - Common Weakness Enumeration CWE ID 326
[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-12 Cryptographic Key Establishment and Management (P1), SC-13 Cryptographic Protection (P1)
[6] Standards Mapping - NIST Special Publication 800-53 Revision 5 AU-10 Non-Repudiation, SC-12 Cryptographic Key Establishment and Management, SC-13 Cryptographic Protection
[7] Standards Mapping - OWASP Application Security Verification Standard 4.0 2.6.3 Look-up Secret Verifier Requirements (L2 L3), 2.8.3 Single or Multi Factor One Time Verifier Requirements (L2 L3), 6.2.1 Algorithms (L1 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), 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 3.6.1, Requirement 6.5.8
[18] Standards Mapping - Payment Card Industry Data Security Standard Version 1.2 Requirement 3.6.1, Requirement 6.3.1.3, Requirement 6.5.8
[19] Standards Mapping - Payment Card Industry Data Security Standard Version 2.0 Requirement 3.6.1, Requirement 6.5.3
[20] Standards Mapping - Payment Card Industry Data Security Standard Version 3.0 Requirement 3.6.1, Requirement 6.5.3
[21] Standards Mapping - Payment Card Industry Data Security Standard Version 3.1 Requirement 3.6.1, Requirement 6.5.3
[22] Standards Mapping - Payment Card Industry Data Security Standard Version 3.2 Requirement 3.6.1, Requirement 6.5.3
[23] Standards Mapping - Payment Card Industry Data Security Standard Version 3.2.1 Requirement 3.6.1, Requirement 6.5.3
[24] Standards Mapping - Payment Card Industry Data Security Standard Version 4.0 Requirement 3.6.1, Requirement 6.2.4
[25] Standards Mapping - Payment Card Industry Data Security Standard Version 4.0.1 Requirement 3.6.1, Requirement 6.2.4
[26] Standards Mapping - Payment Card Industry Software Security Framework 1.0 Control Objective 7.2 - Use of Cryptography
[27] Standards Mapping - Payment Card Industry Software Security Framework 1.1 Control Objective 7.1 - 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 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-002040 CAT II
[37] Standards Mapping - Security Technical Implementation Guide Version 4.3 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[38] Standards Mapping - Security Technical Implementation Guide Version 4.4 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[39] Standards Mapping - Security Technical Implementation Guide Version 4.5 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[40] Standards Mapping - Security Technical Implementation Guide Version 4.6 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[41] Standards Mapping - Security Technical Implementation Guide Version 4.7 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[42] Standards Mapping - Security Technical Implementation Guide Version 4.8 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[43] Standards Mapping - Security Technical Implementation Guide Version 4.9 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[44] Standards Mapping - Security Technical Implementation Guide Version 4.10 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[45] Standards Mapping - Security Technical Implementation Guide Version 4.11 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[46] Standards Mapping - Security Technical Implementation Guide Version 4.1 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[47] Standards Mapping - Security Technical Implementation Guide Version 5.1 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[48] Standards Mapping - Security Technical Implementation Guide Version 5.2 APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[49] Standards Mapping - Security Technical Implementation Guide Version 5.3 APSC-DV-000590 CAT II, APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
[50] Standards Mapping - Security Technical Implementation Guide Version 6.1 APSC-DV-000590 CAT II, APSC-DV-002010 CAT II, APSC-DV-002040 CAT II
desc.dataflow.swift.weak_encryption_user_controlled_key_size