Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-5201 — CVE-2026-5201: gdk-pixbuf JPEG 로더의 힙 기반 버퍼 오버플로우(CWE-122, CVSS 7.5) | Kitploit
도구/GitHubGitHub/kagancapar/cve-2026-5201
Memory ForensicsVulnerability AnalysisExploitationBinary AnalysisPapers & ResearchLearning & Education
GitHubkagancapar/cve-2026-5201

CVE-2026-5201

CVE-2026-5201: gdk-pixbuf JPEG 로더의 힙 기반 버퍼 오버플로우(CWE-122, CVSS 7.5)

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-5201

gdk-pixbuf JPEG 로더의 힙 기반 버퍼 오버플로

안녕하세요, Kağan Çapar입니다. 저는 gdk-pixbuf의 JPEG 이미지 로더에서 사실상 모든 Linux 데스크톱 환경에 영향을 미치는 힙 기반 버퍼 오버플로 취약점을 발견했습니다. 이 취약점은 CVE-2026-5201로 지정되었으며 Red Hat으로부터 CVSS 점수 **7.5(중요)**를 인정받았습니다.

이 저장소에는 제 전체 분석, 제가 처음부터 작성한 재현 코드, 그리고 실제 Ubuntu 24.04 LTS 시스템에서 확보한 크래시 증거가 포함되어 있습니다.

CVECVE-2026-5201
CWECWE-122 — 힙 기반 버퍼 오버플로
CVSS v37.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H)
영향 범위gdk-pixbuf (수정 전 모든 버전)
공급업체GNOME
수정gdk-pixbuf@6cce931
트래커GNOME #304
BugzillaRed Hat #2453291

요약

저는 gdk-pixbuf의 JPEG 이미지 로더(io-jpeg.c)에서 힙 기반 버퍼 오버플로를 발견했습니다. 직접 파일 로딩 경로(gdk_pixbuf__jpeg_image_load)는 픽셀 버퍼를 할당하기 전에 색상 컴포넌트 수를 검증하지 않습니다. SOF 헤더에 9개의 컴포넌트가 선언되어 있지만 SOS에서 3개만 스캔되도록 특수 제작된 122바이트 JPEG는 gdk-pixbuf가 3개 채널용 버퍼를 할당하게 만들고, libjpeg는 픽셀당 9개 채널을 쓰게 되어 — 최대 약 49KB의 공격자 제어 데이터가 힙 오버플로로 이어집니다.

증분 로더 경로에는 이미 이와 동일한 검증이 있었지만, 직접 로딩 경로에는 빠져 있었습니다.

영향

  • 서비스 거부(DoS): gdk_pixbuf_new_from_file()을 사용하는 모든 애플리케이션에서 100% 신뢰도로 크래시 발생
  • 힙 손상: GObject vtable 포인터(g_class)가 픽셀 데이터로 덮어써짐
  • 코드 실행: vtable 하이재킹을 통해 32비트 Linux에서 실증됨
  • 영향을 받는 시스템: 모든 Linux 데스크톱 — Ubuntu, Fedora, Debian, Arch, RHEL 7–10

영향을 받는 Red Hat 제품

제품구성 요소상태
Red Hat Enterprise Linux 10gdk-pixbuf2영향 있음
Red Hat Enterprise Linux 10loupe영향 있음
Red Hat Enterprise Linux 10snapshot영향 있음
Red Hat Enterprise Linux 9gdk-pixbuf2영향 있음
Red Hat Enterprise Linux 8gdk-pixbuf2영향 있음
Red Hat Enterprise Linux 7gdk-pixbuf2영향 있음

근본 원인

gdk-pixbuf/io-jpeg.c의 gdk_pixbuf__jpeg_image_load() 함수에서:

1. 부족한 크기의 할당 (line 633):

pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB,
                        cinfo->out_color_components == 4 ? TRUE : FALSE,
                        8, cinfo->output_width, cinfo->output_height);

2. 초과 크기의 쓰기 (line 696):

jpeg_read_scanlines(cinfo, lines, cinfo->rec_outbuf_height);
// writes output_components (9) bytes per pixel into a 3-byte buffer

3. 누락된 검증 — 증분 로더는 이미 line 1142에서 output_components를 확인하지만, 직접 경로에는 이 검사가 없었습니다.

재현

재현 코드 생성

python3 reproducer/craft_cve_2026_5201.py

SOF10 헤더에 9개의 컴포넌트가 있고 SOS에서 3개만 스캔되는 122바이트 JPEG 파일을 생성합니다.

크래시 트리거

# 컴파일
gcc -o crash_test reproducer/crash_test.c \
    $(pkg-config --cflags --libs gdk-pixbuf-2.0) -fsanitize=address -g

# 실행
./crash_test cve_2026_5201.jpg

예상 출력 (AddressSanitizer)

==PID==ERROR: AddressSanitizer: SEGV on unknown address 0x52b000020006
==PID==The signal is caused by a WRITE memory access.
    #0  libjpeg.so.8  (null_convert)
    #1  libjpeg.so.8  (sep_upsample)
    #2  libjpeg.so.8  (process_data_context_main)
    #3  libjpeg.so.8  jpeg_read_scanlines
    #4  libgdk_pixbuf-2.0.so.0  (JPEG loader)
    #5  libgdk_pixbuf-2.0.so.0  gdk_pixbuf_new_from_file

GDB 출력 (ASAN 없이)

Program received signal SIGSEGV, Segmentation fault.
g_type_check_instance_is_fundamentally_a ()
  → g_object_unref()
  → gdk_pixbuf_new_from_file()

rax = 0x808080808080ffff    ← corrupted GObject vtable pointer

수정

이 수정은 증분 로더에 이미 존재하는 것과 동일한 output_components 검증을 추가합니다:

jpeg_start_decompress(cinfo);

if (cinfo->output_components != 3 && cinfo->output_components != 4 &&
    !(cinfo->output_components == 1 &&
      cinfo->out_color_space == JCS_GRAYSCALE)) {
    g_set_error(error, GDK_PIXBUF_ERROR, GDK_PIXBUF_ERROR_CORRUPT_IMAGE,
                "Unsupported number of color components (%d)",
                cinfo->output_components);
    goto out;
}

gdk-pixbuf@6cce931에 적용되었습니다.

테스트 환경

OSUbuntu 24.04.1 LTS
gdk-pixbuf2.42.10+dfsg-3ubuntu3.2
libjpeglibjpeg-turbo 2.1.5 (libjpeg.so.8.2.2)
GCC13.3.0

참고 자료

  • https://www.cve.org/CVERecord?id=CVE-2026-5201
  • https://nvd.nist.gov/vuln/detail/CVE-2026-5201
  • https://gitlab.gnome.org/GNOME/gdk-pixbuf/-/issues/304
  • https://access.redhat.com/security/cve/CVE-2026-5201
  • https://bugzilla.redhat.com/show_bug.cgi?id=2453291

역사적 선례

CVE-2017-2862 (Cisco Talos TALOS-2017-0366) — CVSS 8.8 — gdk-pixbuf에서 동일한 null_convert 버퍼 불일치 버그 클래스로, 원격 코드 실행으로 분류되었습니다.

크레딧

Kağan Çapar — GitHub · LinkedIn · X

CVE-2026-5201 권고에서 Red Hat이 공식 인정했습니다.

도구 다운로드