CVE-2026-25646: レガシーLibpngの欠陥がRCEリスクをもたらす

ほぼ30年間libpngに存在していた脆弱性が、数百万のシステムに対する潜在的なリスクとして特定されました。 

この欠陥はヒープバッファオーバーフローであり、アプリケーションのクラッシュを引き起こす可能性があり、特定の条件下では、特別に細工されたPNG画像を処理する際に任意のコード実行を許可する可能性があります。

「最悪のシナリオでは、適切なヒープグルーミングにより、攻撃者はindex_to_paletteおよびpalette_to_indexバッファの終端を超えて最大num_palette / 2バイトを読み書きでき、情報漏洩や任意のコード実行につながる可能性があります」と研究者は述べました

Libpng脆弱性の仕組み

Libpngは公式のPNGリファレンスライブラリであり、オペレーティングシステム、ブラウザ、グラフィックアプリケーション、組み込みデバイスに広く組み込まれています。

この広範な統合により、libpngの脆弱性は広範な下流への影響を及ぼす可能性があります。 

この脆弱性(CVE-2026-25646)は、影響を受ける関数の元の実装(当時はpng_set_dither()と呼ばれていた)から存在しており、libpngのすべての過去のバージョンが影響を受けることを意味します。

この欠陥は、png_set_quantize()関数におけるヒープバッファオーバーフローであり、この関数は画像内の色数をディスプレイの制約に合わせて削減します。 

この脆弱性は、量子化プロセス中に色インデックスが処理される方法の論理エラーに起因します。 

これは、PNG画像にPLTE(パレット)チャンクが含まれているがhIST(ヒストグラム)チャンクがない場合、呼び出し元アプリケーションが色の量子化を要求し、パレットにユーザーのディスプレイがサポートする色数の2倍以上の色が含まれている場合にトリガーされます。 

重要なことに、これらの条件はすべてPNG仕様の下で有効であり、悪意のある画像がバグを悪用するためにフォーマットルールに違反する必要がないことを意味します。

内部的には、この関数は色距離メトリックを使用して類似した色をグループ化するハッシュテーブルを構築します。 

失敗は、コードがこのテーブルを作成する際に現在の色インデックスを保存するが、検証中にそれらを元のインデックスとして扱うために発生します。 

この不一致により、アルゴリズムがパレットエントリを適切に削除できなくなり、無限ループに入ります。 

ループが続くと、検索変数max_dがハッシュテーブルの固定サイズ(769ポインタ)を超えて増加し、ヒープ割り当てバッファの終端を超えた読み取りを強制します。

最も可能性の高いシナリオでは、これによりアプリケーションが細工されたPNGファイルを処理する際に決定論的なサービス拒否クラッシュが発生します。 

ただし、研究者は、慎重なヒープグルーミングにより、攻撃者が割り当てられたバッファを超えて最大num_palette / 2バイトを読み書きでき、情報漏洩や任意のコード実行の可能性を生み出すと指摘しました。

この脆弱性の概念実証コードが公開されています。 

Libpng欠陥からのリスク軽減

組織は、この脆弱性をパッチ適用の問題としてだけでなく、より広範なサプライチェーンリスクとして扱う必要があります。 

libpngはアプリケーションやプラットフォーム全体に広く組み込まれているため、修復には依存関係の可視性とランタイム保護が必要です。

  • libpngバージョン1.6.55にパッチを適用し、影響を受けるアプリケーションを再構築し、すべての管理システムおよび組み込み展開全体でパッチ適用されたライブラリバージョンを検証します。
  • 包括的な依存関係レビューを実施し、SBOM検証を含め、サードパーティおよび内部開発ソフトウェア内のlibpngのバンドルまたは静的リンクバージョンを特定します。
  • 画像処理コンポーネントを分離およびサンドボックス化し、特にWeb公開またはユーザーアップロードワークフローにおいて、潜在的な悪用の影響範囲を制限します。
  • ASLRなどのコンパイラおよびランタイムメモリ保護を有効化し、スタックカナリア、エンドポイント悪用検出を行い、ヒープ破損攻撃の成功可能性を低減します。
  • サーバー側のファイルチェックを強制することで画像アップロードを制限および検証し、PNGファイルの再エンコードまたはサニタイズを行い、可能な場合は不要な量子化機能を制限します。
  • 異常なPNG解析動作の監視を強化し、画像処理サービスに関連するアプリケーションクラッシュまたは疑わしいメモリアクティビティを監視します。
  • 脆弱なサードパーティライブラリに関するインシデント対応計画をテーブルトップ演習でテストします。

これらのステップは、露出を制限し、回復力を強化するのに役立ちます。

CVE-2026-25646は、広く信頼されているオープンソースコンポーネント内の永続的なリスクと、深く組み込まれたライブラリによって生み出される体系的な露出を浮き彫りにしています。 

コア画像処理ライブラリで数十年間発見されなかった脆弱性は、継続的な依存関係の可視性と規律あるアップデートガバナンスの必要性を強化します。

これらのリスクは、内部または外部のコンポーネントが本質的に信頼されるべきではないと想定するゼロトラストアーキテクチャの価値をさらに強化します。

翻訳元: https://www.esecurityplanet.com/threats/cve-2026-25646-legacy-libpng-flaw-poses-rce-risk/

ソース: esecurityplanet.com