계: Input Validation and Representation
입력 검증 및 표현 문제는 메타 문자, 대체 인코딩 및 숫자 표현 때문에 발생합니다. 보안 문제는 입력을 신뢰하기 때문에 발생합니다. 문제로는 "Buffer Overflows", "Cross-Site Scripting" 공격, "SQL Injection", 그 외 여러 가지가 있습니다.
Unsafe Native Invoke
Abstract
Platform Invocation Services를 잘못 사용하면 관리되는 응용 프로그램이 다른 언어의 보안 결함에 취약해질 수 있습니다.
Explanation
Unsafe Native Invoke 오류는 관리되는 응용 프로그램이 P/Invoke를 사용하여 다른 프로그래밍 언어로 작성된 네이티브 (비관리) 코드를 호출할 때 발생합니다.
예제 1: 다음 C# 코드는
다음 C 코드는
이 Echo는 관리되는 코드로 구현되었기 때문에 buffer overflow 취약점과 같은 메모리 문제가 없는 것처럼 보입니다. 관리되는 환경은 메모리 연산을 안전하게 수행하는 뛰어난 기능이 있지만 이 보호 기능은 P/Invoke를 통해 액세스하는 네이티브 코드에서 발생하는 취약점에까지 적용되지는 않습니다. 관리되는 런타임 환경의 메모리 보호 기능에도 불구하고, 이 예제의 네이티브 코드는 입력에 대해 범위 검사를 수행하지 않는
관리되는 응용 프로그램을 통해 접근되는 네이티브 코드의 취약점은 대개 네이티브 언어로 작성된 응용 프로그램에서와 동일한 방식으로 익스플로이트됩니다. 이러한 공격의 유일한 난관이라면 공격자가 관리되는 응용 프로그램이 네이티브 코드를 사용하여 특정 작업을 수행한다는 것을 식별하는 것입니다. 이는 다양한 방법으로 수행할 수 있습니다. 예를 들면, 네이티브 코드에서 자주 구현되는 특정 동작을 식별하거나 관리되는 응용 프로그램에서 P/Invoke 사용을 노출하는 system information leak을 익스플로이트하는 방법 등이 있습니다.
예제 1: 다음 C# 코드는
Echo
라는 클래스를 정의합니다. 클래스는 C를 사용하여 콘솔에 입력된 명령을 사용자에게 돌려보내는 하나의 네이티브 메서드를 선언합니다.
class Echo
{
[DllImport("mylib.dll")]
internal static extern void RunEcho();
static void main(String[] args)
{
RunEcho();
}
}
다음 C 코드는
Echo
클래스에서 구현된 네이티브 메서드를 정의합니다.
#include <stdio.h>
void __stdcall RunEcho()
{
char* buf = (char*) malloc(64 * sizeof(char));
gets(buf);
printf(buf);
}
이 Echo는 관리되는 코드로 구현되었기 때문에 buffer overflow 취약점과 같은 메모리 문제가 없는 것처럼 보입니다. 관리되는 환경은 메모리 연산을 안전하게 수행하는 뛰어난 기능이 있지만 이 보호 기능은 P/Invoke를 통해 액세스하는 네이티브 코드에서 발생하는 취약점에까지 적용되지는 않습니다. 관리되는 런타임 환경의 메모리 보호 기능에도 불구하고, 이 예제의 네이티브 코드는 입력에 대해 범위 검사를 수행하지 않는
gets()
를 사용하기 때문에 buffer overflow에 취약합니다. 또한 buf
가 할당되지만 해제되지 않으므로 memory leak이 발생합니다.Example 1
의 취약점은 네이티브 메서드 구현의 소스 코드 감사를 통해 쉽게 발견할 수 있습니다. 소스 코드 감사는 소스 코드의 가용성 및 프로젝트의 구축 방식에 따라 현실적이지 않거나 불가능할 수도 있지만 대부분의 경우 이 방법으로 충분합니다. 하지만 관리되는 환경과 네이티브 환경 간에 개체를 공유하게 되면 관리되는 코드의 부적절한 데이터 처리가 네이티브 코드의 예기치 않은 취약점으로 이어지거나 네이티브 코드의 안전하지 못한 작업으로 인해 관리되는 코드의 데이터 구조가 손상되는 등 잠재적인 위험이 훨씬 심각한 문제로 확대됩니다.관리되는 응용 프로그램을 통해 접근되는 네이티브 코드의 취약점은 대개 네이티브 언어로 작성된 응용 프로그램에서와 동일한 방식으로 익스플로이트됩니다. 이러한 공격의 유일한 난관이라면 공격자가 관리되는 응용 프로그램이 네이티브 코드를 사용하여 특정 작업을 수행한다는 것을 식별하는 것입니다. 이는 다양한 방법으로 수행할 수 있습니다. 예를 들면, 네이티브 코드에서 자주 구현되는 특정 동작을 식별하거나 관리되는 응용 프로그램에서 P/Invoke 사용을 노출하는 system information leak을 익스플로이트하는 방법 등이 있습니다.
References
[1] How to: Call Native DLLs from Managed Code Using PInvoke
[2] Standards Mapping - Common Weakness Enumeration CWE ID 111
[3] Standards Mapping - Common Weakness Enumeration Top 25 2024 [12] CWE ID 020
[4] Standards Mapping - DISA Control Correlation Identifier Version 2 CCI-002754
[5] Standards Mapping - FIPS200 SI
[6] Standards Mapping - General Data Protection Regulation (GDPR) Indirect Access to Sensitive Data
[7] Standards Mapping - NIST Special Publication 800-53 Revision 4 SI-10 Information Input Validation (P1)
[8] Standards Mapping - NIST Special Publication 800-53 Revision 5 SI-10 Information Input Validation
[9] Standards Mapping - OWASP Mobile 2014 M7 Client Side Injection
[10] Standards Mapping - OWASP Mobile 2024 M4 Insufficient Input/Output Validation
[11] Standards Mapping - OWASP Top 10 2004 A1 Unvalidated Input
[12] Standards Mapping - Payment Card Industry Data Security Standard Version 1.1 Requirement 6.5.1
[13] Standards Mapping - Payment Card Industry Data Security Standard Version 1.2 Requirement 6.3.1.1
[14] Standards Mapping - Payment Card Industry Data Security Standard Version 3.0 Requirement 6.5.6
[15] Standards Mapping - Payment Card Industry Data Security Standard Version 3.1 Requirement 6.5.6
[16] Standards Mapping - Payment Card Industry Data Security Standard Version 3.2 Requirement 6.5.6
[17] Standards Mapping - Payment Card Industry Data Security Standard Version 3.2.1 Requirement 6.5.6
[18] Standards Mapping - Payment Card Industry Data Security Standard Version 4.0 Requirement 6.2.4
[19] Standards Mapping - Payment Card Industry Data Security Standard Version 4.0.1 Requirement 6.2.4
[20] Standards Mapping - Payment Card Industry Software Security Framework 1.0 Control Objective 4.2 - Critical Asset Protection
[21] Standards Mapping - Payment Card Industry Software Security Framework 1.1 Control Objective 4.2 - Critical Asset Protection, Control Objective B.3.1 - Terminal Software Attack Mitigation, Control Objective B.3.1.1 - Terminal Software Attack Mitigation
[22] Standards Mapping - Payment Card Industry Software Security Framework 1.2 Control Objective 4.2 - Critical Asset Protection, Control Objective B.3.1 - Terminal Software Attack Mitigation, Control Objective B.3.1.1 - Terminal Software Attack Mitigation, Control Objective C.3.2 - Web Software Attack Mitigation
[23] Standards Mapping - Security Technical Implementation Guide Version 3.1 APP3510 CAT I
[24] Standards Mapping - Security Technical Implementation Guide Version 3.4 APP3510 CAT I
[25] Standards Mapping - Security Technical Implementation Guide Version 3.5 APP3510 CAT I
[26] Standards Mapping - Security Technical Implementation Guide Version 3.6 APP3510 CAT I
[27] Standards Mapping - Security Technical Implementation Guide Version 3.7 APP3510 CAT I
[28] Standards Mapping - Security Technical Implementation Guide Version 3.9 APP3510 CAT I
[29] Standards Mapping - Security Technical Implementation Guide Version 3.10 APP3510 CAT I
[30] Standards Mapping - Security Technical Implementation Guide Version 4.2 APSC-DV-002560 CAT I
[31] Standards Mapping - Security Technical Implementation Guide Version 4.3 APSC-DV-002560 CAT I
[32] Standards Mapping - Security Technical Implementation Guide Version 4.4 APSC-DV-002560 CAT I
[33] Standards Mapping - Security Technical Implementation Guide Version 4.5 APSC-DV-002560 CAT I
[34] Standards Mapping - Security Technical Implementation Guide Version 4.6 APSC-DV-002560 CAT I
[35] Standards Mapping - Security Technical Implementation Guide Version 4.7 APSC-DV-002560 CAT I
[36] Standards Mapping - Security Technical Implementation Guide Version 4.8 APSC-DV-002560 CAT I
[37] Standards Mapping - Security Technical Implementation Guide Version 4.9 APSC-DV-002560 CAT I
[38] Standards Mapping - Security Technical Implementation Guide Version 4.10 APSC-DV-002560 CAT I
[39] Standards Mapping - Security Technical Implementation Guide Version 4.11 APSC-DV-002560 CAT I
[40] Standards Mapping - Security Technical Implementation Guide Version 4.1 APSC-DV-002560 CAT I
[41] Standards Mapping - Security Technical Implementation Guide Version 5.1 APSC-DV-002560 CAT I
[42] Standards Mapping - Security Technical Implementation Guide Version 5.2 APSC-DV-002560 CAT I
[43] Standards Mapping - Security Technical Implementation Guide Version 5.3 APSC-DV-002530 CAT II, APSC-DV-002560 CAT I
[44] Standards Mapping - Security Technical Implementation Guide Version 6.1 APSC-DV-002530 CAT II, APSC-DV-002560 CAT I
[45] Standards Mapping - Web Application Security Consortium Version 2.00 Improper Input Handling (WASC-20)
desc.dataflow.dotnet.unsafe_native_invoke