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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2025-66628 — CVE-2025-66628에 대한 기술 분석: ImageMagick의 TIM 파서에서 정수 오버플로로 인한 경계를 벗어난 읽기. 근본 원인, 익스플로잇 단계 및 수정 지침 포함. | Kitploit
도구/GitHubGitHub/sumitshah00/cve-2025-66628
Static AnalysisVulnerability AnalysisCode AnalysisExploitationBinary AnalysisPapers & ResearchLearning & Education
GitHubsumitshah00/cve-2025-66628

CVE-2025-66628

CVE-2025-66628에 대한 기술 분석: ImageMagick의 TIM 파서에서 정수 오버플로로 인한 경계를 벗어난 읽기. 근본 원인, 익스플로잇 단계 및 수정 지침 포함.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2025-66628: ImageMagick TIM 파서의 정수 오버플로

속성세부 정보
CVE IDCVE-2025-66628
벤더ImageMagick Studio LLC
제품ImageMagick
영향받는 버전< 7.1.2-10
수정된 버전7.1.2-10
취약점 유형CWE-190 (정수 오버플로)
CVSS v3.1 점수7.5 (High)
CVSS 벡터CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
연구자Sumit Shah

요약

ImageMagick의 coders/tim.c에 있는 ReadTIMImage 함수에 정수 오버플로 취약점이 존재합니다. 32비트 시스템에서 TIM(PlayStation) 이미지 파일을 처리할 때 사용자 제어 너비와 높이 값을 검증하지 않고 곱셈을 수행하여 메모리가 부족하게 할당되고, 픽셀 처리 중 경계를 벗어난 읽기가 발생합니다.


기술 세부 사항

영향받는 코드

취약한 로직은 coders/tim.c에 있습니다:

root@kitploit:~
/* coders/tim.c - TIM 이미지 파서 */

// TIM 파일 헤더의 사용자 제어 입력
width = ReadBlobLSBShort(image);   // 2바이트 (0-65535)
height = ReadBlobLSBShort(image);  // 2바이트 (0-65535)

// 취약: 32비트 시스템에서 정수 오버플로
image_size = 2 * width * height;  // 오버플로 검사 없음

// 잘린 크기로 메모리 할당
pixels = (unsigned char *) AcquireQuantumMemory(image_size, sizeof(*pixels));

// 전체 크기로 반복 처리, 버퍼 너머 읽기
for (y = 0; y < height; y++) {
    for (x = 0; x < width; x++) {
        pixel_index = (y * width + x) * 2;
        pixels[pixel_index] = ReadBlobByte(image);
        pixels[pixel_index + 1] = ReadBlobByte(image);
    }
}

근본 원인

32비트 아키텍처에서 size_t는 32비트로 제한되며 최대값은 UINT_MAX = 4,294,967,295입니다.

너비와 높이가 모두 최대 16비트 부호 없는 값으로 설정된 경우:

root@kitploit:~
width = 65535 (0xFFFF)
height = 65535 (0xFFFF)

예상 계산:
2 × 65535 × 65535 = 8,589,869,050 바이트 (~8.5 GB)

실제 결과 (32비트 권돌림):
8,589,869,050 % 4,294,967,296 = 4,294,901,754
잘린 후 결과: 작은 할당 버퍼

오버플로로 인해 메모리 할당자는 필요한 것보다 훨씬 작은 버퍼를 예약하지만, 처리 루프는 여전히 전체 65535 × 65535 픽셀 그리드를 반복하여 경계를 벗어난 읽기가 발생합니다.

악용

1단계: 공격자가 오버플로를 유발하는 치수의 TIM 파일을 제작

root@kitploit:~
[매직: 0x10]
[타입: 0x02]
[너비: 0xFFFF]   # 65535
[높이: 0xFFFF]  # 65535
[픽셀 데이터...]

2단계: 피해자가 악성 파일을 처리

root@kitploit:~
convert malicious.tim output.png

3단계: 경계를 벗어난 읽기 발생, 다음을 초래:

  • 힙 메모리 노출 (출력 이미지로 누출되거나 타이밍을 통해 관찰 가능)
  • 세그멘테이션 오류 (서비스 거부)

영향받는 플랫폼

size_t가 32비트인 32비트 시스템. 64비트 시스템은 계산된 크기를 오버플로 없이 표현할 수 있는 충분한 정수 폭을 가지므로 영향을 받지 않습니다.


영향

정보 노출 (주요): 경계를 벗어난 접근 중 ImageMagick 프로세스의 힙 메모리를 읽을 수 있습니다. 이 메모리에는 다음이 포함될 수 있습니다:

  • 이전에 처리된 이미지 데이터
  • 환경 변수
  • 파일 경로
  • 캐시된 자격 증명 (멀티 테넌트 환경)

누출된 데이터는 변환된 출력 이미지에 포함되거나 부채널 분석을 통해 추출될 수 있습니다.

서비스 거부 (부차적): 매핑되지 않은 메모리 영역을 읽으면 SIGSEGV가 트리거되어 ImageMagick 프로세스가 종료되고 자동화된 이미지 처리 파이프라인에서 서비스가 중단됩니다.


개념 증명

기술 세부 사항은 검증 목적으로 제공됩니다. 실행 가능한 익스플로잇 코드는 배포되지 않습니다.

트리거 조건

  • ImageMagick 버전 < 7.1.2-10이 32비트 아키텍처로 컴파일됨
  • 너비=65535, 높이=65535를 지정하는 헤더 바이트가 있는 악의적으로 조작된 TIM 파일
  • convert, magick 또는 ImageMagick API 호출을 통한 처리

예상 동작 (취약한 상태)

root@kitploit:~
$ convert malicious.tim output.png
세그멘테이션 오류 (코어 덤프)

또는 누출된 힙 데이터가 출력에 포함된 상태로 성공적인 변환

예상 동작 (패치 후)

root@kitploit:~
$ convert malicious.tim output.png
convert: 메모리 할당 실패 `malicious.tim' @ error/tim.c/ReadTIMImage/XXX.

해결 방법

관리자용

ImageMagick을 버전 7.1.2-10 이상으로 업데이트:

root@kitploit:~
# 현재 버전 확인
convert --version

# 패키지 관리자를 사용하여 업데이트
apt update && apt upgrade imagemagick      # Debian/Ubuntu
yum update imagemagick                     # RHEL/CentOS
brew upgrade imagemagick                   # macOS

개발자용

산술 연산 전에 오버플로 검사 구현:

root@kitploit:~
// 안전하지 않음
image_size = 2 * width * height;

// 안전함
if (height != 0 && width > (SIZE_MAX / 2) / height) {
    ThrowReaderException(ResourceLimitError, "MemoryAllocationFailed");
}
image_size = 2 * width * height;

계산을 수행하기 전에 차원 값에 대한 입력 검증 및 합리적인 한계를 적용합니다.


참고 자료

  • CVE 레코드: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-66628
  • GitHub 권고: https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-6hjr-v6g4-3fm8
  • ImageMagick 저장소: https://github.com/ImageMagick/ImageMagick
  • CWE-190: https://cwe.mitre.org/data/definitions/190.html

발견 방법론

이 취약점은 변종 분석을 사용하여 식별되었습니다. ImageMagick의 BMP 디코더에서 유사한 정수 오버플로가 공개된 후, 레거시 형식 파서에 대한 체계적인 검토가 수행되었습니다. 검증되지 않은 width * height 계산에 대한 패턴 매칭을 통해 TIM 파서에서 동일한 결함이 식별되었습니다.

TIM, SGI, VIFF 등의 레거시 이미지 형식 디코더는 보안 감사가 드물고 안전하지 않은 C 산술에 의존하기 때문에 높은 가치의 대상입니다.


책임 있는 공개

이 취약점은 GitHub Security Advisories를 통해 ImageMagick 유지관리자에게 비공개로 보고되었습니다. 패치가 제공되고 CVE가 할당된 후에만 공개 공개가 이루어졌습니다. 이 연구는 책임 있는 공개 원칙에 따라 윤리적으로 수행되었습니다.


발견자

SUMIT SHAH

연구자: SUMIT SHAH

  • LinkedIn: linkedin.com/in/sumit-shah-614625350
  • Instagram: @hacksagex
도구 다운로드