Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2025-66628 | Kitploit
ツール/GitHubGitHub/sumitshah00/cve-2025-66628
静的分析脆弱性分析コード分析エクスプロイトバイナリ解析論文と研究学習と教育
GitHubsumitshah00/cve-2025-66628

CVE-2025-66628

リポジトリを見る
18ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

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(高)
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 Image Parser */

// User-controlled input from TIM file header
width = ReadBlobLSBShort(image);   // 2 bytes (0-65535)
height = ReadBlobLSBShort(image);  // 2 bytes (0-65535)

// VULNERABLE: Integer overflow on 32-bit systems
image_size = 2 * width * height;  // No overflow check

// Memory allocated with truncated size
pixels = (unsigned char *) AcquireQuantumMemory(image_size, sizeof(*pixels));

// Loop processes FULL dimensions, reading beyond buffer
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)

Expected calculation:
2 × 65535 × 65535 = 8,589,869,050 bytes (~8.5 GB)

Actual result (32-bit wraparound):
8,589,869,050 % 4,294,967,296 = 4,294,901,754
Result after truncation: Small allocated buffer

このオーバーフローにより、メモリアロケータは必要とされるサイズよりも大幅に小さいバッファを確保しますが、処理ループは依然として完全な 65535 × 65535 ピクセルグリッドを反復するため、範囲外読み取りが発生します。

悪用方法

ステップ1: 攻撃者はオーバーフローを引き起こす寸法を持つTIMファイルを作成します

root@kitploit:~
[Magic: 0x10]
[Type: 0x02]
[Width: 0xFFFF]   # 65535
[Height: 0xFFFF]  # 65535
[Pixel Data...]

ステップ2: 被害者が悪意のあるファイルを処理します

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

ステップ3: 範囲外読み取りが発生し、以下につながります:

  • ヒープメモリの漏えい(出力画像への漏えい、またはタイミング経由での観測)
  • セグメンテーションフォルト(サービス拒否)

影響を受けるプラットフォーム

size_t が32ビットである32ビットシステム。64ビットシステムは、計算されたサイズをオーバーフローなしで表現できる十分な整数幅を持つため、影響を受けません。


影響

情報漏えい(主): 範囲外アクセス中に、ImageMagick プロセスのヒープメモリを読み取ることができます。このメモリには以下が含まれる可能性があります:

  • 以前に処理された画像データ
  • 環境変数
  • ファイルパス
  • キャッシュされた認証情報(マルチテナント環境)

漏えいしたデータは、変換後の出力画像に埋め込まれたり、サイドチャネル解析によって抽出されたりする可能性があります。

サービス拒否(副): マッピングされていないメモリ領域の読み取りは SIGSEGV を引き起こし、ImageMagick プロセスの終了と、自動化された画像処理パイプラインにおけるサービス中断をもたらします。


概念実証(PoC)

検証目的で技術的詳細を提供します。実行可能なエクスプロイトコードは配布されません。

トリガー条件

  • 32ビットアーキテクチャ用にコンパイルされた ImageMagick バージョン 7.1.2-10 未満
  • ヘッダーバイトで width=65535、height=65535 を指定する、悪意を持って作成されたTIMファイル
  • convert、magick、または任意の ImageMagick API 呼び出しによる処理

想定される動作(脆弱な場合)

root@kitploit:~
$ convert malicious.tim output.png
Segmentation fault (core dumped)

または、漏えいしたヒープデータが出力に埋め込まれた状態での変換成功。

想定される動作(パッチ適用後)

root@kitploit:~
$ convert malicious.tim output.png
convert: Memory allocation failed `malicious.tim' @ error/tim.c/ReadTIMImage/XXX.

修正策

管理者向け

ImageMagick をバージョン 7.1.2-10 以降に更新します:

root@kitploit:~
# Verify current version
convert --version

# Update using package manager
apt update && apt upgrade imagemagick      # Debian/Ubuntu
yum update imagemagick                     # RHEL/CentOS
brew upgrade imagemagick                   # macOS

開発者向け

算術演算の前にオーバーフローチェックを実装します:

root@kitploit:~
// Insecure
image_size = 2 * width * height;

// Secure
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

発見方法

この脆弱性は変種解析(variant analysis)を用いて特定されました。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
ツールをダウンロード