CVE-2022-24086 Magento Ecommerce を使用しているウェブサイトに対する脆弱性警告


本記事は2022年2月17日に@developersteveが公開した英語ブログ[CVE-2022-24086 Vulnerability alert for websites using Magento Ecommerce](https://snyk.io/blog/vulnerability-alert-for-websites-using-magento-ecommerce/)を日本語化した内容です。

なお、この脆弱性にはさらに新しい情報が出てきておりますので、近日中に最新情報をブログにて公開します。最新情報を常にチェックして安全で迅速な開発生活をお楽しみください。


[![logo-solid-background.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2216557/c6b861e9-b75a-39c8-30de-480da5ccf494.png)](https://snyk.io/jp)

# はじめに

Magentoは、2008年の最初のリリース以来、多くの人々に利用され、愛されているeコマース・プラットフォームです。私が Magento を愛してやまない理由のひとつは、eコマースビジネスの成長に合わせて拡張できることです。セルフホスティング版としてスタートしたMagento（私は長年にわたって開発者としてこれを多用してきました）は、現在ではAdobeやサードパーティのエコシステムパートナーを通じて、しっかりとしたサポートと管理オプションが利用できるようになっています。

Wappalyzerによると、[現在158,000のウェブサイト](https://www.wappalyzer.com/technologies/ecommerce/magento)がMagentoを利用してeコマース・ソリューションを提供しています。[コカ・コーラ](https://us.coca-cola.com/store/)や[オリンパス](https://www.getolympus.com/)などのグローバルブランドや、[ランドローバー](https://shop.landrover.com/)などの代表的な自動車メーカーが、オンラインショッピングを容易にするためにMagentoを使用しています。

OSL ([Open Software License](https://opensource.org/licenses/OSL-3.0)) 3.0 ライセンスの下で配布され、現在バージョン 2.0 の SDLC にある Magento には、主に 2 種類の提供形態があります。

* [Magento Open Source](https://devdocs.magento.com/guides/v2.3/install-gde/install-flow-diagram.html)は、以前はCE（Community Edition）として知られていました。このバージョンはAdobeとMagentoによってバックアップされていますが、コミュニティとMagentoのエコシステムによって大きくサポートされています。
* [Magento Enterprise](https://business.adobe.com/au/products/magento/magento-commerce.html)は、現在Adobe Commerceと呼ばれています。これはAdobeが管理する製品で、さまざまなレベルのAdobeのサポートと管理が含まれています。


Magentoは、新しい脆弱性が発見された場合、[セキュリティ警告](https://helpx.adobe.com/security/products/magento/apsb22-12.html)、パッチ、修正に非常に積極的に取り組み、長年にわたって脆弱性に対処してきました。2月14日、不適切な入力の検証のために重大な[CVE-2022-24086](https://security.snyk.io/vuln/SNYK-PHP-MAGENTOCOMMUNITYEDITION-2400727)が明らかになり、Magento Open SourceとAdobe Commerceの2.3.4以上2.4.3-p1未満または2.3.7-p2未満のバージョンに影響を及ぼしました。 

# Magentoの脆弱性「CVE-2022-24086」を理解する

この脆弱性は、チェックアウトプロセスにおける不適切な検証方法によってもたらされ、攻撃者は、不要な入力タイプをサニタイズするために通常使用される入力検証方法を回避することが可能です。

CVE-2022-24086による攻撃ベクトルは、Magento内でのSQLおよびPHPオブジェクトインジェクション攻撃能力を可能にし、不要なデータベースエントリーを追加したり、リモートコード実行を可能にしたりします。

アプリケーションセキュリティにおいて、不適切な入力の検証が深刻な結果をもたらすことはよくあることです。フォーム検証の際に、プラットフォームが複数の文字タイプの組み合わせを認識できないため、有害な文字列がそのまま大惨事になるのです。

PHPの不適切な検証を実際に試してみたい方は、Snyk-Labsの[PHP-Goof](https://github.com/snyk-labs/php-goof)アプリをGitHubでチェックしてみてください。

# 修正方法について

Magentoは、その周りに本当に強力なコミュニティとエコシステムが構築されているプラットフォーム/フレームワークの1つです。このような状況下で、コミュニティが一丸となって修正プログラムを展開するのを何度も目にしてきました。

[Magentoが提供するパッチ](https://support.magento.com/hc/en-us/articles/4426353041293-Security-updates-available-for-Adobe-Commerce-APSB22-12-)は、```/Email/Model/Template```ディレクトリにある ```transDirective```パブリック関数内の Filter.php サニタイズメソッドを更新し、新しい正規表現のキャッチパターンを追加しています。


![blog-magento-regex-2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2216557/d26717e8-b76d-5b43-f218-34f33a67fa10.jpeg)

さらに、このパッチでは、コアフレームワークの```VarDirective.php```ファイルも同じ正規表現でキャッチするように修正されています。

![blog-magento-regex-amended-2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2216557/8ab5423e-b3e8-7043-d8ec-e9ef982a1221.jpeg)

Adobe公式パッチは[PHP Composerのパッケージマニフェスト](https://support.magento.com/hc/en-us/articles/360028367731)に追加することもできますし、フォークされたコードベースに直接適用することもできます。パッチを適用する場合は、本番環境に移行する前にステージング環境や開発環境でテストすること、そして常に安全なバックアップをとっておくことを忘れないでください。

# Snykを使用して自動的に問題を検出する

セキュリティは常に重要であり、特に機密性の高い顧客データや金融取引に関わる場合はなおさらです。Snyk は、Magento のインストール方法に応じて、Magento のスキャンを開始するための方法をいくつか提供しています。

最も推奨され、より広く採用されている方法は、[PHP Composer](https://devdocs.magento.com/guides/v2.4/install-gde/composer.html)を使用することです。これは、Magentoエコシステムのアドオンやプラグインが追加されたときに更新するのにも最適な方法です。PHP Composer のパッケージマニフェストを[Snykで簡単にスキャンして](https://snyk.io/blog/testing-php-composer-security-vulnerabilities-snyk/)、[CVE-2022-24086](https://security.snyk.io/vuln/SNYK-PHP-MAGENTOCOMMUNITYEDITION-2400727)のような進行中のライブラリや依存関係の脆弱性を検出することが可能です。

Magentoは[gitリポジトリ](https://github.com/magento/magento2)からクローンしたりフォークしたりすることもできます。これは、コントリビューションバック（常に推奨！）を考えている場合や、レポからのデプロイメントを必要とするデプロイメント方法を持っている場合に特に便利な機能です。

Snykはいくつかの異なる[リポジトリプラットフォーム](https://docs.snyk.io/features/integrations/git-repository-scm-integrations/)に接続することができ、IAC脆弱性をスキャンする多くの[CI/CDサービス](https://docs.snyk.io/features/integrations/ci-cd-integrations)に組み込むことも可能です。

スキャンサービスを使用すると、表示される可能性のある脆弱性を警告し、プラットフォーム、インフラ、および顧客を攻撃から保護するのに役立ちます。

# 最後に
ブログを読んで、Snykを使ってみたい！と思われた方は、ぜひ無料トライアルをお試しください。無料トライアルは[こちら](https://snyk.co/qiita)。トライアル中の技術的なご質問は、サポートまで日本語でお願いします。日本語で対応しています。

Snykでは、セキュアなコーディングのための情報や脆弱性の最新情報などを発信しています。ぜひフォローをお願いします。

* [Snyk公式ウェブサイト](https://snyk.io/jp)
* [Snyk Japan Twitter](https://twitter.com/snykjp)
* [Snyk Japan Facebook](https://www.facebook.com/snykJP/)

またSnykでは[シニアデベロッパーアドボケイト（ソフトウェアエンジニア）](https://go.snyk.io/rs/677-THP-415/images/Snyk-Japan-Developer-Advocate-Job-Description.pdf)の募集をしています。ちょっと話を聞いてみたい、という方はお気軽にご連絡ください。