CodeIgniter4 の脆弱性 CVE-2025-54418 が FIX:画像ファイル名などを悪用するコマンド・インジェクション

Critical CodeIgniter Vulnerability Exposes Million of Webapps to File Upload Attacks

2025/07/29 CyberSecurityNews — CodeIgniter4 の ImageMagick ハンドラにおいて、悪意のファイル・アップロードに起因するコマンド・インジェクションの脆弱性が発見された。この欠陥により、数百万の Web アプリケーションに対して深刻な影響が及ぶ可能性がある。この脆弱性 CVE-2025-54418 は (CVSS v3.1:9.8) は Critical と評価されており、影響を受けるシステムへの速やかな対応が必要とされる。

脆弱性の概要
  1. GitHub によると、CodeIgniter4 の ImageMagick ハンドラに存在する、この脆弱性を悪用する攻撃者は、任意のシステム・コマンド実行の機会を得る。
  2. この脆弱性は CWE-78 (OS コマンド・インジェクション) に分類される。
  3. この脆弱性が影響を及ぼす範囲は、CodeIgniter4 のバージョン 4.6.2 未満である。

この脆弱性は、2025年7月28日に、GitHub Advisory Database に登録されたものである。画像処理に ImageMagick ライブラリ (imagick) を使用するアプリケーションの、システム全体への侵害につながる可能性があるため、Critical と評価されている。

この脆弱性の悪用に際して、認証は必要とされず、かつ、低い攻撃複雑性でリモートから悪用可能であるため、インターネットに接続された CodeIgniter4 アプリケーションにとって、きわめて危険な状況が発生している。

CVSS v3.1 ベクター (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) が示すのは、機密性/完全性/可用性 における影響が High であることだ。

攻撃ベクターの詳細

この脆弱性は、CodeIgniter4 の画像ライブラリとして、ImageMagick ハンドラ (imagick) が使用される際に、以下の2つの主要なベクターにより発現する。

攻撃ベクター 1:resize() メソッドの悪用

最初の攻撃ベクターは、resize() メソッドの悪用にある。シェル・メタ文字を埋め込んだ名前を持つ、画像ファイルをアップロードする攻撃者は、そのファイルの処理が行われる際に、ファイル名中のメタ文字がシステム・コマンドとして解釈されるという挙動を悪用する。このファイル名は、攻撃者による完全な制御が可能であるため、意図的に仕込まれたコードが、サーバ上で実行される可能性が生じる。

攻撃ベクター 2:text() メソッドの悪用

2つ目の攻撃ベクターは、text() メソッドを標的とするものだ。このメソッドは、画像にテキスト・オーバーレイを追加する際に使用されるが、ユーザーが指定する悪意の文字列やオプションを通じて、任意のシステム・コマンドが実行されるという可能性が生じる。

コマンド・コンテキストを逸脱する、ファイル名やテキスト・パラメータを用いる攻撃者は、ImageMagick のコマンド構文解析の特性を突き、任意の shell コマンドを実行できる。この種の攻撃は、ファイル・コンテンツだけを検証するという、従来からの入力検証メカニズムを回避できるため、きわめて危険である。

Risk FactorsDetails
Affected ProductsCodeIgniter4 Framework, all versions < 4.6.2
ImpactCommand Injection – Complete system compromise
Exploit Prerequisites– ImageMagick handler enabled (imagick library)- File uploads with user-controlled filenames OR- Text operations with user-controlled content
CVSS 3.1 Score9.8 (Critical)
推奨される対応

すでに CodeIgniter4 の開発チームは、バージョン 4.6.3 をリリースし、この問題に対処している。すべてのシステム管理者および開発者に対して強く推奨されるのは、この最新バージョンへと、速やかにアップグレードすることだ。

一時的な緩和策

迅速なパッチ適用が不可能な場合には、以下の回避策を講じることで、リスクを軽減できる:

  1. ImageMagick ハンドラの無効化:CodeIgniter4 のデフォルトであり、この脆弱性の影響を受けない GD イメージハンドラ (gd) に切り替える。
  2. 安全なファイル名の使用:ファイル・アップロード処理において move() メソッドの代わりに getRandomName() を用いて、ランダムなファイル名を生成する。あるいは、store() メソッドを活用して、安全なファイル名を自動生成する。
  3. 入力のサニタイズ:text() メソッドの使用時に、以下のようなサニタイズ処理により、危険な文字を除去する:
    phpCopyEdit:preg_replace(‘/[^a-zA-Z0-9\s.,!?-]/’, ”, $text)

この脆弱性は深刻なものであるため、迅速な対応が求められる。前述のアップグレードもしくは、GD ハンドラへの切り替えを実施しない限り、任意のコード実行のリスクが継続する。