ここ数ヶ月、Magentoは頻繁にセキュリティパッチをリリースしてきました。
これはMagentoが以前よりも脆弱性の発見に対して懸賞金を懸けているからでもありますが、Magentoがプラットフォームとして認知された結果、攻撃者の標的になりやすくなったという証でもあります。

さて、日本時間の10月28日午前1時頃にMagentoは、最新のセキュリティパッチ「SUPEE-6788」をリリースしました。
このセキュリティパッチには12件の脆弱性に対する修正が含まれています。
このパッチは、対象となるMagentoのバージョンによって、かなり細かくパッチが分かれています。
適用する際には、お使いのMagentoのバージョンをよく確認してから適用する必要があります。間違えるとうまく当たらないので注意してください。 

SUPEE-6788の対象となるMagentoのバージョン

以下のバージョンが適用対象です。

  • Magento Community Edition 1.7.x〜1.9.2.1
  • Magento Enterprise Edition 1.12.x〜1.14.2.1

Community EditionについてはMagento公式サイトのダウンロードページからダウンロードができます。
Enterprise Editionの場合は、利用者向けの専用ポータルサイトもしくはサポートを担当するパートナーから入手して頂く必要があります。
Enterprise EditionにCommunity Editionのパッチを適用することはできないので注意してください。

SUPEE-6788に含まれる修正点

SUPEE-6788には以下の12の脆弱性が含まれています。緊急度の高いものが複数含まれているため注意が必要です。

1.Magentoインストールまたはエクステンションインストールにおける情報漏えいの脆弱性

Magentoのインストール時もしくは、エクステンションをインストールする際にエラーが発生すると、Magentoの設定情報やデータベースに対するアクセス情報が漏えいする恐れがあります。
サーバーの設定で、MySQLなどへのインターネット回線からの直接アクセスが許可されているような場合は、データベースに対する改竄などの被害に発展する場合がありえます。

2.CMS機能やメールテンプレートにおけるMagento専用の記法に関するホワイトリスト化

MagentoのCMS機能やメールテンプレートでは、専用の記法を用いることで、カスタム変数やウィジェット、あるいはブロックを配置することができます。
この機能は上手に活用すると非常に柔軟性のあるカスタマイズができる仕組なのですが、今回のパッチ適用によって、CMS機能やメールテンプレートで利用できるカスタム変数やウィジェット・ブロックは事前に登録をしたものしか許可されなくなります。
それに伴い、このパッチを適用すると、データベースに新しいホワイトリスト登録用のテーブルが追加され、このテーブルに登録されていないものは利用できなくなります。
もし、ホワイトリストに未登録なウィジェットや変数をCMS機能やメールテンプレートで使用している場合は、パッチ適用後にサイトがダウンする恐れがありますので、注意してください。

3.XMLインジェクションの修正

Magentoが利用しているPHPフレームワーク・Zend Frameworkの脆弱性対応に伴う修正です。
MagentoのAPI呼び出しで不正なXMLデータを受け付けてしまう可能性があります。 

4.データベース問い合わせに関するSQLインジェクション対策に伴う開発規約変更

Magentoのデータベース構造はテーブル数も多く、またテーブル間の関連も複雑にできているため、テーブル同士を連結するようなSQL文の実行は不可欠です。
エクステンションを開発する上でも独自にデータベース問い合わせを実行する必要がどうしても出てきます。

今回のパッチ適用によって、このデータベース問い合わせを担当するプログラムにSQLインジェクション対策の修正が加えられ、幾つかの記法が認められなくなるようです。
禁止される問い合わせ方法を用いているエクステンションの場合、パッチを適用するとエラーになるおそれがあるため、十分に注意が必要です。

5.Cron.phpに対するリモートコード実行の脆弱性

Magentoのドキュメントルートに置かれているCron.phpは、誰にでもアクセスできてしまう上、コマンドライン引数を受け付けてしまう特性を持っています。
この特性を利用して、任意のプログラムを実行させられてしまう脆弱性があります。

6.カスタムオプションに関するファイル種別の制限強化

Magentoの商品ではカスタムオプションを個別の商品に対して設定することができます。
そのカスタムオプションの選択方法のひとつとして、ファイルをアップロードする機能があります。
この機能をサードパーティ製エクステンションがカスタマイズし、PHPのオブジェクトデータとして保存するような仕組を提供できていたようなのですが、SUPEE-6788の適用後は許可されなくなります。

7.エラーメッセージにおけるクロスサイト・スクリプティング

エラーメッセージの表示処理に不備があり、クロスサイト・スクリプティングの脆弱性があります。
ただし、Magentoのエラーメッセージ表示処理の構造上、攻撃者自身の情報に関する範囲のみが対象になります。
(とはいえ問題があることに違いはありません) 

8.エラーレポートにおけるリモートコード実行の脆弱性

Magentoがエラーの発生を検知した際に生成するエラーレポートファイルを介した攻撃を受ける脆弱性があります。
レポートファイル内に含まれる不正コードを実行させることで、他の攻撃につなげることが可能です。 
(エラーレポートの作成を抑制しているような場合は表面上問題ありませんが、パッチを適用する必要性が無いわけではありません)

9.パスワード再設定処理における不十分なトークンの保護

パスワードの再設定処理(パスワードを忘れた際に、再設定するためのリンクをメールで送信する機能)で用いられる、再発行を要求した当人を識別する文字列・トークンが使用後に正しく削除されない問題があります。
広告や画像サーバー、ログ解析ツールなどから同じトークンを用いてアクセスできてしまう恐れがあります。

10.開発ツールディレクトリの保護が不十分

1.9.2.0から付属しているdevディレクトリのアクセス制御が不十分で、公開状態になっていました。

11.ページキャッシュの汚染とクロスサイト・スクリプティング

1.9.2.1限定の脆弱性です。
サードパーティ製のフルページキャッシュエクステンションなどを利用している場合に、攻撃コードを含んだキャッシュを生成してしまうケースがあります。
場合によってはクロスサイト・スクリプティングの脆弱性を突く攻撃に発展する恐れがあります。

12.管理画面URLに対するエクステンション側の開発規約変更

従来、Magentoのエクステンション開発においては、2通りの管理画面URLの定義が許されてきました。
しかしながら、セキュリティ性をより強化していくためには、2通りのうち片方の定義を廃止せざるを得なくなったようです。
例えば、従来であれば以下の様な記述が管理画面URLの定義では許されていました。


    
        
            admin
            
                custom_module
                custom_module
            
        
    

しかしながら、SUPEE-6788を適用した後、あるいはSUPEE-6788を含んだ最新リリースとなる1.9.2.2以降では、以下の記述が公式に推奨される記述となっています。


    
        
            
                
                    CustomModule_Adminhtml
                    custom_module
                
           
        
    

よって、前述の廃止予定の定義を用いているエクステンションは「全て」影響を受けます。
現時点で、およそ800以上のエクステンションが影響を受けるとされており、コミュニティによる調査・対応が進められています。
なお、この規約の適用は標準では無効化されていますが、早急にエクステンションの対処を済ませて有効化することが推奨されています

対応エクステンションのリリースまでにできる対策

パッチのリリースに先立ち、各エクステンションベンダーは、自社のエクステンションが適切な実装になっているかどうかを既に検証し始めています。
とはいえ全てのエクステンションが対応完了するまでには時間がかかることと、商用エクステンションの場合は対応バージョンの入手に追加で費用がかかる(サポート期限が切れている、など)ことが予想されます。

そこで、対応バージョンのリリースの前にできる対策方法をご紹介します。 

公式のガイドを読んで、コードを調べて直す

Magento公式サイトで配布されている、SUPEE-6788に関するテクニカルドキュメント(英文)があります。
この資料を読んで、運用中のMagentoでできているサイトのコードを調べて対応を行います。
非常に面倒な作業ですが、保守を他社に依頼している場合は、一度相談してみると良いでしょう。 

コミュニティ作のツールでとりあえず調べて一括変換をする

コミュニティの層が厚いMagentoらしい対応ですが、既にSUPEE-6788に対する調査と自動調整ツールがGithubで公開されています。

このツールをダウンロードし、Magentoのドキュメントルートにある「shell」ディレクトリに設置して実行することで、対象サイトに含まれているエクステンションの問題点を抽出し、修正方法提案と場合によっては自動変換を行ってくれます。

現時点では、管理画面URLに関する調査・対応のみとなっていますが、それだけでもかなりの助けにはなると思います。 

パッチの適用に関して

SUPEE-6788は5,000行を超える非常に大きなパッチです。
適用後は適用前と互換性が一部失われるような仕様変更が含まれているため、適用には最新の注意と十分な検証作業が必要となります。

ご自身でのパッチ適用が難しい場合は、弊社にご相談ください。
有償サービスではございますが、サイトの現状を調査したうえで、パッチの適用をいたします。