新着:2025年版 SANS ICS/OT サイバーセキュリティレポートが公開されました

レポートを入手する
サイト翻訳には人工知能を利用しており、正確性を追求しておりますが、必ずしも100%正確とは限りません。ご了承ください。

CVE-2025-32432: Craft CMSにおける認証不要のリモートコード実行

By OPSWAT
この記事を共有する
OPSWAT インフラサイバーセキュリティ大学院フェローシッププログラムの研究者2名(青背景)

2025年4月、Orange Cyberdefenseはインシデント調査中にCraft CMSの重大な脆弱性を発見し、現在CVE-2025-32432として追跡されている。この欠陥は認証不要のリモートコード実行(RCE)を可能にし、NVD(National Vulnerability Database)によるCVSS v3.1スコアは最大値の10.0(Critical)と評価されている。

OPSWAT インフラサイバーセキュリティ大学院フェローシッププログラムの一環として、当プログラムのフェローは本脆弱性に関する包括的な調査を実施しました。これには、エクスプロイトの再現、その影響の検証、組織リスクの評価、推奨される保護戦略の分析が含まれます。

このブログでは、CVE-2025-32432について包括的な詳細分析を行い、根本原因、悪用フロー、および広範なセキュリティへの影響を検証するとともに、組織がこの脅威から防御するための実践的なガイダンスを提供します。

CVE-2025-32432 概要

CVE-2025-32432 は、Craft CMS のバージョン 3.0.0-RC1 から 3.9.14、4.0.0-RC1 から 4.14.14、および 5.0.0-RC1 から 5.6.16 に影響を与えます。 この脆弱性はCWE-94: コードインジェクションに分類され、信頼できない入力の不適切な処理に起因し、最終的に認証不要のRCE(リモートコード実行)を可能にします。  

CVE-2025-32432 Craft CMS リモートコード実行脆弱性に対するCVSS 3.xメトリクス(重大なベーススコアを示す)

Craft CMS と Yii フレームワーク

Craft CMSは、開発者やコンテンツチームが柔軟で完全にカスタマイズされたウェブサイトを構築できるようにする現代的なコンテンツ管理システムであり、硬直した事前定義テンプレートに依存する必要はありません。世界中で46,000以上のウェブサイトに採用されているため、広く利用されていると同時に、影響力の大きい脆弱性を探す攻撃者の頻繁な標的となっています。

Craft CMSは、現代的なウェブ開発向けに設計された高速かつ強力なPHPフレームワークであるYiiフレームワークを基盤として構築されています。Yiiが中核的な構造とツールを提供し、Craft CMSはそれを拡張することで柔軟なコンテンツ管理システムを実現します。

Craft CMS と Yii Framework のロゴが並んで表示され、CVE-2025-32432 リモートコード実行脆弱性に関連しています

Yiiフレームワークの中核機能の一つが依存性注入(DI)コンテナである。依存性注入とは、コンポーネントが自らリソースを構築する必要なく、必要なリソースを供給する設計パターンである。YiiのDIコンテナは高い柔軟性を備え、比較的単純な設定ルールから複雑なオブジェクトを構築することが可能である。

しかし、この柔軟性にはリスクが伴う。CVE-2025-32432の事例では、DIコンテナが信頼できないユーザー入力と組み合わせて悪用され、リモートコード実行への経路が生じた。この事例は、安全かつ強力なフレームワーク機能であっても、そのセキュリティ上の影響を完全に理解せずに統合すれば危険になり得ることを示している。

CVE-2025-32432の詳細な分析

Craft CMSには「画像変換」と呼ばれる機能が含まれており、サーバー上で直接リサイズされた画像を生成することでパフォーマンスを最適化するよう設計されています。300×300のサムネイルとして表示するために4.5MBという大きな画像を配信する代わりに、Craft CMSは自動的に最適化された小さなバージョンを作成して提供します。このアプローチにより帯域幅の使用量が削減され、ページの読み込み速度が大幅に向上します。

この機能を広く利用可能にするため、Craft CMSは認証を必要とせずにactions/assets/generate-transformエンドポイントを露出しています。これにより認証済みユーザーと匿名ユーザーの両方が最適化された画像の恩恵を受けられる一方、誰でもアプリケーションに細工された入力を供給できる公開アクセス可能な攻撃対象領域が生じます。

CVE-2025-32432脆弱性に関連するallowAnonymousロジックを示すCraft CMS AssetsControllerのコードスニペット

このワークフローの詳細な分析を通じて、フェローたちは公開されたエンドポイントにPOSTリクエストが送信されるたびに、AssetsController::actionGenerateTransformメソッドが呼び出されることを特定しました。この関数はリクエスト本文から直接handleパラメータを取得し、次のステージでのさらなる処理のために下流へ転送します。

CVE-2025-32432 リモートコード実行脆弱性分析に関連する Craft CMS PHP コードのスクリーンショット

次のステップでは、ImageTransforms::normalizeTransform()メソッドが呼び出されます。このメソッドはユーザーが提供したハンドルパラメータを受け取り、それをImageTransformオブジェクトに変換します。このオブジェクトは信頼できない入力から直接作成されるため、実行フローにおける重大なリスクポイントとなります。

Craft CMSに関連するCVE-2025-32432リモートコード実行脆弱性分析のPHPコードスニペット

この処理中、ユーザーが制御する$transform配列(handle パラメータに由来)のすべてのキーと値のペアが設定配列に統合されます。その後、normalizeTransformメソッドはこの配列をCraft::createObject() に渡し、新しいImageTransformオブジェクトのインスタンス化を担当します。

CVE-2025-32432 リモートコード実行脆弱性に関連する Craft CMS ロジックを示すコードスニペット

この脆弱性は、Craft::createObject()YiiのYii::createObject()をラップしたもの)が設定配列を処理する方法に起因します。このメカニズムはDIコンテナを使用して、検証されていない配列から直接オブジェクトをインスタンス化および設定するため、攻撃者はオブジェクト構築プロセスを制御できる可能性があります。

CVE-2025-32432 Craft CMS リモートコード実行脆弱性に関連する createObject 関数を示すハイライトされた PHP コード

悪意のあるペイロードが渡されると、オブジェクトのコンストラクタ(Modelクラスから継承)がApp::configure()メソッドを呼び出します。

CVE-2025-32432 リモートコード実行脆弱性に関連する Craft CMS コンストラクタロジックを示すハイライトされた PHP コード

このメソッドは、攻撃者が制御する配列の各プロパティを反復処理し、それらを新しいオブジェクトに割り当てます。

CVE-2025-32432 Craft CMS リモートコード実行脆弱性に関連する設定関数を示すPHPコードスニペット

When App::configure() assigns properties from the attacker-controlled configuration array, most keys are mapped directly onto the object. However, if a key begins with the prefix as, the assignment is routed through Component::__set, Yii’s magic setter. This method interprets as <name> as an instruction to attach a behavior (mixin) to the object.

そのような悪意のあるペイロードの一つは、Component::__set がasで始まるプロパティを処理する方法を悪用するように作成できる。例えば、as exploitのように:

CVE-2025-32432 Craft CMS リモートコード実行脆弱性に対するエクスプロイトペイロードを示すコードスクリーンショット

分析の結果、Component::__setの実装には安全対策が含まれています。このプロパティを介してビヘイビアがアタッチされる際、フレームワークは設定配列で指定されたクラスがyii\base\Behavior の有効なサブクラスであるかどうかを検証します。このチェックは、任意のクラスがコンポーネントに直接アタッチされるのを防ぐことを目的としています。

Craft CMSのハイライトされたPHPコード(CVE-2025-32432 リモートコード実行脆弱性に関連するロジックを示す)

しかし、この安全策は見た目ほど効果的ではありません。弱点はYii::createObjectが設定配列を処理する方法に起因しています。

オブジェクトをインスタンス化する際、Yii::createObject は 特別な __classパラメータを優先します。このキーが存在する場合、その値がインスタンス化のターゲットクラスとして使用され、設定配列内の標準の class キーは無視されます。

CVE-2025-32432 Craft CMS リモートコード実行脆弱性に関連するオブジェクト作成ロジックを示すPHPコードスニペット

攻撃者は、次の2つのキーを含むエクスプロイト動作用のペイロードを作成できます:

  1. 'class' => '\craft\behaviors\FieldLayoutBehavior'- yii\base\Behavior を拡張する正当なクラスです。この値は Component::__set 内の is_subclass_of チェックを満たすためだけに存在し、エラーを発生させずに実行を継続できるようにします。
  2. '__class' => '\yii\rbac\PhpManager' - 攻撃者の実際の標的。インスタンス化したい「ガジェット」クラス。

コードが実行されると、Component::__set はセキュリティチェックを通過します。これはクラスキーのみを検査するためです。しかし、フレームワークが後でYii::createObject を呼び出して動作をアタッチする際、__class を優先するため、攻撃者が選択した\yii\rbac\PhpManagerオブジェクトが代わりにインスタンス化されます。

\yii\rbac\PhpManagerの使用は意図的なものです。単にオブジェクトを作成するだけでは悪用には不十分であり、RCE(リモートコード実行)を達成するには、武器化可能な副作用を持つガジェットクラスが必要です。 PhpManagerは初期化フローの特性上、POI(PHPオブジェクトインジェクション)攻撃の一般的な標的となる。インスタンス化時、init()メソッドがload()を呼び出し、さらにloadFromFile($this->itemFile)を実行する。攻撃者が$this->itemFileを制御できれば、アプリケーションに悪意のあるファイルを読み込ませることが可能となり、オブジェクト生成がコード実行へと転化される。

CVE-2025-32432 Craft CMS リモートコード実行脆弱性(ファイルインクルージョン)を示すハイライトされたPHPコードフロー

危険はloadFromFileメソッドに潜んでいます。PHPではrequireが対象ファイルをコードとして実行するため、攻撃者がファイルパスを制御できれば、任意のコード実行を引き起こすことが可能です。

サーバーに悪意のあるコードを配置するため、攻撃者はPHPセッションファイルを悪用する。リクエストパラメータにPHPを注入することで、Craft CMSはリダイレクト処理中にペイロードをセッションファイルに保存する。その後、PhpManagerがこのファイルを読み込むと、攻撃者のコードが実行される可能性がある。

CVE-2025-32432 Craft CMS リモートコード実行脆弱性の悪用プロセスを示すフローチャート

攻撃の完全な連鎖は3段階で進行する。まず攻撃者は細工したURLを送信して悪意のあるPHPを仕込み、Craft CMSがこれをセッションファイルに保存する。次に画像変換エンドポイントの__classバイパスを悪用し、PhpManagerガジェットをロードして汚染されたセッションファイルを指し示す。最後にPhpManagerがファイルを読み込むと攻撃者のペイロードが実行され、RCE(リモートコード実行)とサーバーの完全な制御権を獲得する——多くの場合ウェブシェルやリバースシェルを介して。

CVE-2025-32432 Craft CMS リモートコード実行脆弱性のフローチャート(エクスプロイト用JSONと攻撃手順を含む)
CVE-2025-32432 Craft CMS リモートコード実行脆弱性の悪用手順を示すターミナル出力
ターミナルに表示されるCVE-2025-32432 Craft CMSリモートコード実行脆弱性(www-dataユーザーとしてシェルアクセス可能)

緩和と修復

CVE-2025-32432に関連するリスクを効果的に軽減するには、組織はオープンソースコンポーネントに対する可視性と制御が必要です。コンポーネントの明確なインベントリがなければ、パッチ適用は推測作業になってしまいます。

MetaDefender®プラットフォーム内の独自技術OPSWAT 、使用中のすべてのソフトウェアコンポーネント、ライブラリ、Dockerコンテナ、依存関係を一覧化することでこのニーズに対応します。これにより組織は、コンポーネントを積極的に追跡、保護、更新することが可能となります。

セキュリティスキャンUIに表示される、CVE-2025-32432の緩和策として重大な脆弱性によりブロックされたCraft CMSアーカイブ
セキュリティダッシュボード:CVE-2025-32432 Craft CMS リモートコード実行脆弱性および修正詳細を表示

上記の例では、MetaDefender SBOM技術が、CVE-2025-32432脆弱性を含むnginx-ingress-controllerパッケージをスキャンしました。システムは自動的にこの問題を「重大」とフラグ付けし、利用可能な修正済みバージョンに関するガイダンスを提供したため、チームは脆弱性が悪用される前に迅速に優先順位を付け、パッチを適用することができました。

OPSWAT は以下で利用可能です MetaDefender Core およびMetaDefender Software Chain™で提供され、セキュリティチームが脆弱性をより迅速に特定し対応することを可能にします。OPSWAT により、セキュリティチームは以下のことが可能になります:

  • 脆弱なコンポーネントを迅速に特定 - デシリアライゼーション攻撃の影響を受けるオープンソースコンポーネントを即時識別します。これにより、脆弱なライブラリのパッチ適用または置換のいずれにおいても迅速な対応が保証されます。 
  • 積極的なパッチ適用と更新を確保する -OPSWAT を通じてオープンソースコンポーネントを継続的に監視し、デシリアライゼーション脆弱性に先手を打つ。OPSWAT 古くなったコンポーネントや安全でないコンポーネントを検出でき、タイムリーな更新を可能にし、攻撃への曝露を減らします。 
  • コンプライアンスと報告の維持 –OPSWAT 、規制枠組みがソフトウェアサプライチェーンの透明性をますます義務付ける中、組織がコンプライアンス要件を満たすことを支援します。

新たな脅威からソフトウェアのサプライチェーンを強化する準備はできていますか?

OPSWATで最新情報をお届けします!

今すぐご登録ください、 ストーリー、イベント情報などをお届けします。