Project 18

[Wasm] Wasm 바이너리 취약점 테스트: Double Free, Integer Overflow

이전 글에 이어 Wasm에서의 Integer Overflow, Double Free취약점을 테스트해 보았다.  Prob    https://github.com/f10vv3r/Wasm_Binary_Vulnerable_test GitHub - f10vv3r/Wasm_Binary_Vulnerable_testContribute to f10vv3r/Wasm_Binary_Vulnerable_test development by creating an account on GitHub.github.com 이전 글에 이어 Integer Overflow, DFB 취약점을 추가로 테스트하는 파일은 위와 같으며,  Wasm 컴파일 명령어와 수정된  C 코드는 아래와 같다. // wasm_vuln.c#include EMSCRIPT..

Project 2025.03.01

[Wasm] Wasm 바이너리 취약점 테스트: BOF, FSB, OOB, UAF

Wasm WebAssembly(이하 Wasm)는 C/C++ 혹은 Rust 등으로 컴파일되어 JS와 함께 사용되는 저수준 언어로, JS의 부족한 속도를 Wasm을 통해 크게 향상할 수 있다.  이 Wasm은 C/C++ 등의 프로그래밍 언어를 컴파일한 언어이기에 Wasm을 사용하는 웹 사이트에선 웹상에서 발생 가능한 취약점(XSS, SQL Injection 등) 뿐 아닌 전통적인 바이너리 취약점(Bof, FSB 등)이 발생 가능할 수 있다. 따라서 전통적인 메모리 관련 취약점 중 Buffer Overflow(BOF), Format String Bug(FSB), Out Of Bound(OOB), Use After Free(UAF) 취약점을 의도적으로 유도하는 C언어 소스코드를 Wasm으로 컴파일하여 Wasm환..

Project 2025.03.01

[Wasm] Wasm 브라우저에서 실행하기

Wasm에 대한 전반적인 이해도를 높이기 위해웹 브라우저에서 Wasm을 사용하여 소수를 출력하는 페이지를 만들어 보있다. Wasm으로 컴파일할 C 파일과, 이를 받아서 사용할 Html 파일로 간단히 이를 구현해 보았다.  소스 코드    // prime.c#include #include #include int IsPrime(int value) { if (value == 2) return 1; if (value  컴파일 명령어는 아래와 같다.emcc prime.c -o prime.js -s EXPORTED_FUNCTIONS='["_getPrimes"]' -s EXPORTED_RUNTIME_METHODS='["ccall", "cwrap"]' -s WASM=1  Wasm Prime Calc ..

Project 2025.03.01

[Wasm] CVE-2017-5122(Out of Bound) 취약점 분석 및 재현

본 글은 [이가현, 최형기 성균관대학교 「WebAssembly 기능 도입으로 인해 크롬에 서 발생한 오류들의 분석」, 한국소프트웨어종합학 술대회, 온라인, 2020]을 참고하여 작성한 글임을 사전에 밝힌다. DBpia논문, 학술저널 검색 플랫폼 서비스www.dbpia.co.kr  CVE-2017-5122 CVE-2017-5122 취약점은 Google Chrome 61.0.3163.100 for Mac, Window, Linux이하 버전에서 발생하는 취약점으로 크롬 V8엔진에서 테이블 크기 처리를 부적절하게사용하면 원격 공격자가 악의적인 Html 페이지를 사용해 Out of Bound 액세스를 트리거할 수 있는 오류이다. 해당 취약점이 트리거 되면 웹 페이지가 Crash 되는 문제가 발생한다.  Out o..

Project 2025.03.01

[Wasm] Wasm Module 구조

본 글은 WebAssembly 공식 문서를 참고하여 작성한 글임을 사전에 밝힌다. Wasm Module WebAssembly Module, 이하 Wasm Module은 WebAssembly에서 바이너리로 컴파일된실행 가능한 모듈 단위로, WebAssembly 모듈은 WebAssembly 바이너리 코드를 포함하며,이 Wasm Module은 크게 매직넘버, 버전정보 그리고 여러 섹션들로 구성되어 있다.  Indices Wasm Module에서 인덱스는 다양한 리소스를 참조하기 위해 사용되는데,이는 모듈 내의 구조화된 데이터에 효율적으로 접근 및 재사용하기 위해 설계되었다. 이때 인덱스는 u32(unsigned 32bit int) 형태로 인코딩 되며, 그 종류는 아래와 같다.   인덱스역할참조 대상범위예시ty..

Project 2025.02.27