ここではMagento2.4.6-p4のリリース情報を元に、修正内容について説明します。
今回のリリースではセキュリティーアップデートを含むの為、現在運用を行っている環境があるのであれ最新の環境にアップデートを行うようにしましょう。

クロスサイトスクリプティング(保存済み XSS)CVE-2024-20719 CVE-2024-20717
クロスサイトスクリプティング(Cross-Site Scripting、XSS)は、ウェブアプリケーションのセキュリティ上の脆弱性の一つです。攻撃者はこの脆弱性を悪用して、ウェブサイトやアプリケーションのユーザーに対して悪意のあるスクリプト(通常はJavaScript)を実行させることができます。
保存済みXSSは、攻撃者が悪意のあるコード(通常はJavaScript)をウェブアプリケーションのデータベースやファイルなどの永続的なストレージに保存し、その後、そのコードが他のユーザーによって閲覧されたときに実行されるタイプのXSS攻撃です。
保存済みXSS攻撃の一般的な手法は次のようなものです:
- 脆弱な入力フィールドへの悪意のあるデータの送信
攻撃者は、ウェブアプリケーションの入力フィールド(例:コメントボックス、フォームなど)に悪意のあるスクリプトを送信します。このスクリプトはサーバーに保存され、他のユーザーがその入力を閲覧するときに実行されます。 - HTMLタグのインジェクション
攻撃者は、HTMLやJavaScriptを含むデータを送信することで、ウェブアプリケーションの脆弱な部分にスクリプトを挿入します。このスクリプトはサーバーに保存され、その後、他のユーザーがページを閲覧するときに実行されます。 - クロスサイトスクリプティングに対する適切なエスケープの不足
ウェブアプリケーションがユーザー入力を適切にエスケープしていない場合、攻撃者は悪意のあるスクリプトを入力することで攻撃を行います。これにより、入力を表示するページが他のユーザーによって閲覧されたときに、スクリプトが実行されます。
保存済みXSS攻撃は特に危険です。なぜなら、攻撃者が悪意のあるスクリプトをウェブアプリケーションに保存することで、複数のユーザーに影響を及ぼす可能性があるからです。そのため、ウェブ開発者は入力データの適切な検証とエスケープを実装し、セキュリティ意識を高めることが重要です。
以下は保存済みXSS攻撃の具体的な例をHTML形式で示したものです:
上の例では、攻撃者はフォームを通じて悪意のあるスクリプトを送信し、それがサーバーに保存されたコメントとして表示されます。その後、他のユーザーがページを閲覧すると、悪意のあるスクリプトが実行されます。このスクリプトは、ユーザーのクッキーを盗むなどの悪意のある行動を行うことができます。
このような攻撃を防ぐためには、入力データを適切に検証し、エスケープする必要があります。また、セキュリティ対策として、コンテンツセキュリティポリシーやContent Security Policy(CSP)の使用を検討することも重要です。
OS コマンド(「OSコマンドインジェクション」)で使用される特殊要素の不適切な無害化 CVE-2024-20720
OSコマンドインジェクション(OS Command Injection)は、ウェブアプリケーションやシステムにおいて、攻撃者が不正なOSコマンドを実行する脆弱性を利用する攻撃手法です。この攻撃手法では、攻撃者が入力フィールドやパラメータなどを通じて不正なコマンドをサーバーに送信し、サーバーがそのコマンドを信頼して実行してしまうことによって、攻撃が成功します。
OSコマンドインジェクション攻撃は、以下のような手順で行われます:
- 脆弱な入力の特定
攻撃者は、ウェブアプリケーションやシステム内でユーザーが入力を行う箇所を特定します。これには、フォームやURLパラメータ、HTTPヘッダーなどが含まれます。 - 不正なOSコマンドの挿入
攻撃者は、脆弱な入力ポイントに不正なOSコマンドを挿入します。これにより、攻撃者はサーバー上で任意のコマンドを実行することができます。 - コマンドの実行
サーバーは、攻撃者が送信した入力を受け取り、そのままOSに渡してしまうため、不正なコマンドが実行されます。この結果、攻撃者はシステム内で様々な操作を行うことができます。
攻撃者が実行する不正なOSコマンドは、システムを乗っ取る、機密情報を盗み出す、サービスを停止するなどの悪意のある行為に使用される可能性があります。
以下は、OSコマンドインジェクションの例(PHPでの例)です:

上記の例では、$user_inputに挿入された不正なコマンドが実行され、lsコマンドではなくrm -rf /コマンド(全てのファイルを削除する危険なコマンド)が実行される可能性があります。
このような攻撃を防ぐためには、以下のような対策が必要です:
- 入力データの検証と正規化: 入力データを検証し、許可されていない文字やパターンをフィルタリングすることで、攻撃者が不正なコマンドを挿入するのを防ぎます。
- エスケープされたコマンドの使用: 入力データをOSコマンドを実行する際に安全な方法でエスケープし、不正なコマンドの挿入を防ぎます。
- セキュリティベストプラクティスの遵守: システムやウェブアプリケーションのセキュリティ設定を最新のベストプラクティスに合わせて設定し、セキュリティポリシーを遵守します。
無制限のリソース消費 CVE-2024-20716
無制限のリソース消費(Resource Exhaustion)は、ウェブアプリケーションやシステムにおけるセキュリティ上の脆弱性の一つです。攻撃者はこの脆弱性を悪用して、システムのリソース(CPU、メモリ、ディスクスペースなど)を使い果たすことで、サービスの停止や遅延を引き起こすことができます。
無制限のリソース消費攻撃は、以下の手法を使用して実行されます:
- リソースの不正な利用
攻撃者は、システムのリソースを消費するための不正な手段を使用します。例えば、大量のリクエストを送信して、サーバーのCPUやメモリを占有する、無限ループを実行してCPUを使用する、大容量のファイルを作成してディスクスペースを占有するなどがあります。 - 攻撃の拡大
攻撃者は、攻撃を拡大するために複数の機器やボットネットを使用することがあります。これにより、大規模な攻撃が可能になります。 - サービスの停止や遅延
リソースが消費されると、システムは正常に機能しなくなり、サービスの停止や遅延が発生します。これにより、ユーザーへのサービス提供が妨げられる場合があります。
無制限のリソース消費攻撃は、以下のような影響を与える可能性があります:
- サービス停止: サーバーのリソースが使い果たされると、システムは正常に機能しなくなり、サービスが停止する可能性があります。
- サービスの遅延: リソースが不足すると、サービスの応答時間が長くなり、ユーザーエクスペリエンスが低下します。
- データの損失: リソース消費攻撃がデータを処理するためのリソースを使い果たすと、データの損失が発生する可能性があります。
無制限のリソース消費攻撃を防ぐためには、以下のような対策が必要です:
- リソース制限
システムやアプリケーションでリソースの使用量を制限する機能を実装し、異常な使用量に対処します。 - アクセス制御
アクセス制御を使用して、不正なリクエストやトラフィックをブロックすることができます。 - リクエストの検証
入力データの検証を実装して、不正なリクエストを検出し、拒否します。 - モニタリングと警告
システムのリソース使用量をモニタリングし、異常な使用量を検出した場合には警告を発生させることが重要です。
このような対策を実施することで、無制限のリソース消費攻撃からシステムやサービスを保護することができます。
クロスサイト要求偽造(CSRF)CVE-2024-20718
クロスサイト要求偽造(Cross-Site Request Forgery、CSRF)は、Webセキュリティの脆弱性の一つであり、攻撃者が被害者の代わりに不正なリクエストを送信することによって、被害者のアカウントやセッションを悪用する攻撃手法です。この攻撃は、被害者が悪意のあるWebサイトを訪れるか、悪意のあるメールやリンクをクリックすることで実行される可能性があります。
CSRF攻撃は以下の手順で行われます:
- 攻撃者のサイトの用意
攻撃者は、不正なリクエストを送信するためのWebサイトを用意します。 - 被害者の誤認証
攻撃者は、被害者に対して不正なリクエストを送信するためのリンクやスクリプトを含む偽装されたWebページやメールを送信します。 - 被害者のブラウザが不正なリクエストを送信
被害者が攻撃者の用意したWebページを訪れると、ブラウザは被害者の認証情報(クッキーやセッション情報)を含むリクエストを自動的に送信します。このリクエストによって、攻撃者が不正な操作を実行することが可能になります。
CSRF攻撃は、以下のような影響を与える可能性があります:
- 不正な操作の実行: 攻撃者は、被害者のアカウントやセッションを利用して、不正な操作を実行することができます。例えば、不正な資金移動やパスワードの変更などがあります。
- 機密情報の漏洩: 攻撃者は、被害者のアカウントにアクセスし、機密情報を盗み出すことができます。例えば、個人情報やクレジットカード情報などがあります。
CSRF攻撃を防ぐためには、以下のような対策が必要です:
- CSRFトークンの使用
サーバーは、クライアントに対してページごとに一意のCSRFトークンを生成し、それをリクエストに含めるようにします。このトークンは、サーバーが正当なリクエストかどうかを確認するために使用されます。 - SameSite属性の使用
クッキーのSameSite属性をStrictまたはLaxに設定することで、クロスサイトリクエストを制限することができます。 - リファラーチェック
リファラーヘッダーを検証し、正当なリクエストかどうかを確認します。ただし、リファラーヘッダーはクロスドメインの場合には信頼できない場合があります。 - 二段階認証
ユーザーに対して二段階認証を要求することで、セキュリティを強化することができます。
これらの対策を組み合わせることで、CSRF攻撃からの保護を強化することができます。