이전 글에 이어 Wasm에서의 Integer Overflow, Double Free취약점을 테스트해 보았다.
Prob
https://github.com/f10vv3r/Wasm_Binary_Vulnerable_test
GitHub - f10vv3r/Wasm_Binary_Vulnerable_test
Contribute to f10vv3r/Wasm_Binary_Vulnerable_test development by creating an account on GitHub.
github.com
이전 글에 이어 Integer Overflow, DFB 취약점을 추가로 테스트하는 파일은 위와 같으며, Wasm 컴파일 명령어와 수정된 C 코드는 아래와 같다.
// wasm_vuln.c
#include <limits.h>
EMSCRIPTEN_KEEPALIVE
void double_free() {
printf("wasm dfb test\n");
char *ptr = (char *)malloc(32);
if (!ptr) {
printf("malloc failed\n");
return;
}
free(ptr);
free(ptr);
printf("test complete\n");
}
EMSCRIPTEN_KEEPALIVE
void integer_overflow( ) {
printf("wasm integer overflow test\n");
int max = INT_MAX;
int min = INT_MIN;
printf("INT_MAX: %d\n", max);
printf("INT_MIN: %d\n", min);
int overflow = max + 1;
printf("Overflow (INT_MAX + 1): %d\n", overflow);
int underflow = min - 1;
printf("Underflow (INT_MIN - 1): %d\n", underflow);
}
emcc wasm_vuln.c -o wasm_vuln.js \
-sEXPORTED_FUNCTIONS="['_buffer_overflow', '_format_string_bug', '_out_of_bound', '_use_after_free']" \
-sEXPORTED_RUNTIME_METHODS='["cwrap"]' \
-sALLOW_MEMORY_GROWTH=1
위 소스코드에선 DFB, Integer Overflow, 총 2가지의 취약점을 유도하였다.
python3 -m http.server 8000
위 명령어로 확인한 index.html은 아래와 같다.
1. DFB

DFB 취약점을 트리거하였을 때, 예상과 달리 큰 문제없이 페이지가 정상 작동되는 것을 확인 가능했다.
2. Integer Overflow

Integer Overflow 취약점을 트리거하였을 때, Overflow취약점이 발생하는 것을 확인 가능했다.
결론
본 글에서 테스트 한 방법으론 Integer Overflow, DFB 취약점 중, Integer Overflow 바이너리 취약점을 브라우저에서 트리거하는 것이 실제로 가능함을 입증하였다.
다만 본 글에서 안내하는 방법 외에 다른 방식으로 DFB 등의 취약점이 Wasm에 존재하지 않다는 것을 의미하는 것은 아니며, 전통적인 바이너리 취약점이 부분적으로 발생한다는 점에서 다른 방식을 통해 여타 바이너리 취약점은 충분히 발생 가능함을 시사한다.
'Concept' 카테고리의 다른 글
| [JS] 자바스크립트 기본 개념 / 변수 선언 방식 (0) | 2025.03.26 |
|---|---|
| [JS] 자바스크립트 기본 개념 / 동기, 비동기 (2) | 2025.03.25 |
| [Wasm] Wasm 바이너리 취약점 테스트: BOF, FSB, OOB, UAF (0) | 2025.03.01 |
| [Wasm] Dev-tool의 override 기능을 통한 웹 페이지 Crash (5) : figma.com의 OOM 에러 재현 (0) | 2025.03.01 |
| [Wasm] Dev-tool의 override 기능을 통한 웹 페이지 Crash (4) : STATUS_ACCESS_VIOLATION 에러의 재현, emcc 툴과 직접 파일 빌드 비교 (0) | 2025.03.01 |