
CVE-2022-24086、CVE-2022-24087 向け Magento 2 パッチ。テンプレート変数の深いエスケープ処理により RCE の脆弱性と関連するバグを修正します。Magento をアップグレードできない場合や公式パッチを適用できない場合は、こちらをお試しください。
CVE-2022-24086(CVE-2022-24087 を含む) は 2022 年の初めに発見されました。
影響を受けるストアは、回避策のないリモートコード実行(RCE)の脆弱性を抱えています。2022 年 2 月に 2 つの公式の分離パッチがリリースされました。
しかし、2024 年後半になっても、この問題に関する相談を受け続けており、ハッキングされたストアではこの脆弱性が悪用されたことが確認されています。観測された攻撃は、template directive を含む文字列を入力することによって実行されました。典型的には、チェックアウトプロセスや、ユーザーが制御可能なフィールドを含むメール送信をトリガーできるアクションなどを利用します。
この広範な攻撃と、影響を受けないバージョンへのアップグレードや 2 つの公式パッチの適用が難しいストアがまだあるため、このパッチを作成しました。
このパッチを拡張機能として作成するにあたり、互換性を考慮しています。主に Magento 2.4 シリーズでテストされています。
公式ドキュメントには「var ディレクティブまたはパラメータとして使用される場合のいずれにおいても、変数からメソッドを呼び出すことはできなくなりました」と記載されていますが、私たちが確認したところ、最新バージョン(2.4.7-p3)でも、Data Object に対する「Getter」メソッドの呼び出しと、Email Template Object(\Magento\Email\Model\AbstractTemplate) に対する getUrl メソッドの呼び出しは引き続き許可されています。
このパッチ(拡張機能)も上記の機能を維持します。したがって、{{var data_object.something}} と {{var data_object.getSomething()}} はどちらも有効で、同等です。
getUrl の例:
{{var this.getUrl($store,'route_id/controller/action',[_query:[param1:$obj.param1,param2:$obj.param2],_nosid:1])}}
まとめると、この拡張機能をインストールした後は:
\Magento\Framework\DataObject またはその子インスタンスではないオブジェクトにはアクセスできません\Magento\Framework\DataObject およびその子インスタンスでは「Getter」メソッドのみが許可されますgetUrl メソッドは this でのみ機能しますRCE を阻止するために LegacyResolver を削除しました。
子テンプレートに「署名付き遅延ディレクティブ」を導入しました。セキュリティ強化に役立つかどうかは不明です。
未修正のバグ(#39353)がまだあります。
テンプレートフィルタリング処理の前に「テンプレート変数の深いエスケープ」を使用します。LegacyResolver はエスケープされたユーザーデータのみを受け取るため、維持することができます。
Magento 2.3 または 2.4
composer require wubinworks/module-template-filter-patch
この拡張機能が気に入った場合、または役に立った場合は、このリポジトリに★スター☆を付けてください。
こちらもどうぞ:
CVE-2024-34102(別名 Cosmic Sting)向け Magento 2 パッチ
Magento 2 拡張 XML セキュリティ
Magento 2 暗号化キーマネージャー CLI
Magento 2 JWT 認証パッチ