Yii 2 の脆弱性 CVE-2024-58136 が FIX:安全が確保されないリフレクションの可能性

Urgent: Yii 2 Vulnerability CVE-2024-58136 Under Active Exploit

2025/04/14 SecurityOnline — PHP Web アプリ・フレームワークとして人気を博す Yii 2 に、脆弱性 CVE-2024-58136 (CVSS:9.1) が発見された。この脆弱性が影響を及ぼす範囲は、バージョン 2.0.52 未満となる。Yii 2 のダウンロード数は 2,500万回を超えており、数え切れないほどの Web アプリで使用されているため、この脆弱性は、開発者やサイト管理者にとって重大な懸念事項となっている。

Yii 2 は、最新の高速かつ安全な PHP フレームワークであり、開発者の効率性とアプリケ・パフォーマンスを念頭に置いて構築されている。適切なデフォルト設定と、各種のニーズに合わせたカスタマイズ可能な柔軟なコンポーネントを備え、すぐに使用を開始するためのコンフィグも提供している。

脆弱性 CVE-2024-58136 は、Yii の Behavior システムに関連する脆弱性であり、以前に修正された CVE-2024-4990 の回帰版である。 Yii の Behavior は、他のクラスにアタッチできるモジュール型コンポーネントである。それにより、コアコードを変更することなく、そのクラスの機能を拡張できる。具体的に言うと、‘as behaviorName’ => […] という構文を用いて割り当てられ、このフレームワークの内部では、PHP の __set() マジック・メソッドで処理される。

脆弱性 CVE-2024-4990 に関する Yii 2 のアドバイザリには、「このメソッドに渡された値が、Behavior クラスのインスタンスではない場合に、Yii::createObject($value) を用いることで、新しいオブジェクトがインスタンス化される」と記されている。

そのときのタイプとコンフィグに関する検証が、欠如していることが、きわめて危険である。Yii::createObject() に渡される $value を、攻撃者が操作できるとすると、任意の PHP クラスのインスタンス化や、悪意のコンストラクタ引数を与えた setter メソッドを呼び出しも可能になってしまう。これは、安全が確保されないリフレクションの典型的な例である。

セキュリティ研究者たちによると、この脆弱性は 2025年2月〜4月にかけて、実際に積極的に悪用されているようだ。つまり、このようなアクセスが、悪意の人物の手に渡れば、Yii を利用するアプリケーションの完全な侵害が可能になる。

すでに Yii は、バージョン 2.0.52 をリリースし、この脆弱性を修正している。Yii 2 のユーザーに強く推奨されるのは、このバージョンへと速やかにアップグレードし、CVE-2024-58136 に関連するリスクを軽減することだ。

この脆弱性は、過去の脆弱性のリグレッション版であるとのことですが、文中にもある通り、オリジナルの脆弱性 CVE-2024-4990 は、すでに悪用が確認されています。人気の高いツールは攻撃対象になりやすいため、Yii 2 をご利用のチームは十分にご注意ください。よろしければ、カテゴリ _OpenSource も、ご利用ください。