MagentoにはWebブラウザ経由でエクステンションやデザインテーマをインストール・アップデートすることができる機能「Magento Connect Manager」が備わっています。
この機能は、Magento公式サイトからのエクステンションインストールはもちろん、サードパーティ製のエクステンションで、Magento Connect Managerでのインストールに対応したものでもインストールができるようになっています。
システムにあまり詳しくない方でも、Magento Connect Managerを使うことで簡単にMagentoの機能を拡張することができますが、最近この機能を悪用されたと思われる事例が相次いでいるようです。

Magento Connect Managerの基本的な仕組み

Magento Connect Managerの基本的な仕組み、動作は以下のとおりです。

  1. Magento Connect Managerにアクセスできる管理者ID/パスワードでログインする
  2. Magento Connectから入手したエクステンションキーを使ってエクステンションをインストールする指示をMagentoに与える
  3. Magentoがエクステンションのパッケージをダウンロードし、インストール処理を行う

さらにMagento Connect ManagerはMagento公式からだけでなく、エクステンションパッケージを直接アップロードしてエクステンションのインストールができます。
この場合はMagento Connect経由ではないので、出処が怪しいエクステンションでもインストールできてしまいます。

Magento Connect Managerを悪用された被害の例

最近弊社に寄せられている様々なお問い合わせ・サポート依頼の中で、Magento Connect Managerの悪用が原因ではないか?と思われるケースが幾つかあります。
ここではその一例をご紹介します。

インストールした覚えのないエクステンションがインストールされている

Magento Connect Managerのアカウントが漏洩した場合や、あるいは総当たり攻撃によって、Magento Connect Managerにログインされてしまうと、知らないうちにエクステンションをインストールされてしまう可能性が出てきます。
このような経路でインストールされたエクステンションは、概して不正な目的でインストールされるため、以下のような問題に発展する恐れがあります。

  • システム設定の改変・破壊
  • 不正な管理者の作成
  • 個人情報の搾取
  • クレジットカード情報の搾取

作成した覚えのない管理者ユーザーが存在する

前述のとおり、不正な目的でインストールされたエクステンションを経由して、攻撃者はシステム設定を改変し、管理者ユーザーを作成することがあります。
このような管理者ユーザーは、不必要な権限を有していることが多く、Magentoの管理画面で閲覧できるすべての情報にアクセスすることができてしまいます。

最悪の場合、本来の管理者ユーザーの権限が制限され、本当の管理者がMagentoの管理画面にアクセスできなくなる可能性が出てきます。

個人情報やクレジットカード情報の漏洩事件が起きた

不正なエクステンションやそれを利用して作成された管理者ユーザーによって、個人情報の漏洩が起きる恐れがあります。
また、Magento用のクレジットカード決済エクステンションの多くは、カード番号をデータベースに保存しないように設計されていることが大半です。ところが不正なエクステンションの機能を用いることで、サーバー上のファイルを改ざんし、クレジットカード情報をデータベースやログファイルに保存させることができてしまいます。

攻撃者は保存された情報を時間をかけて少しずつ取得することで、本来の管理者やシステム担当に気づかれないように情報を手に入れることができます。

被害を避けるための対策について

Magento Connect Managerを踏み台にした攻撃が行われていることはわかりました。
では、どのように攻撃の被害にあわないための対策をすればよいのでしょうか?

アクセス制限をかける

まず最も手軽な方法としては、アクセス制限をかけることです。
大きくわけて2種類の方法がありますが、どちらもApacheやNginxの設定で対処可能です。

BASIC認証によるアクセス制限

一般的なWebサイト制作の現場でもよく見られる方法です。固定IPアドレスがなくても設置できるうえ、設定例も多く紹介されています。
ただ、BASIC認証の場合、あまり短いパスワードや簡単なパスワードを設定してしまうと、総当たり攻撃で突破される恐れがあります。
最低でも8文字以上、場合によってはもっと長いID/パスワードにするとより安全であるといえます。

IPアドレスによるアクセス制限

固定IPアドレスをお持ちの場合は、IPアドレスによるアクセス制限が利用できます。固定IPアドレスがなくても利用できますが、IPアドレスが変わるたびに設定変更が必要になるので、運用が煩雑になります。
この方法はIDやパスワードを用いないので、総当たり攻撃を試みても無意味です。反面、許可しているIPアドレスからの攻撃には弱いため、関係者の端末や許可ネットワークのセキュリティには注意を払う必要があります。

セキュリティパッチを適用する

Magentoにはいくつかのセキュリティパッチが提供されています。
新しいバージョンほどセキュリティ性が高いのは当然ですが、諸事情によりアップデート出来ないサイトであっても、専用のセキュリティパッチを適用することで、同等のセキュリティレベルを実現できます。

これらのセキュリティパッチの中にはMagento Connect Managerに関する脆弱性を修正するものが含まれていますので、必ずすべてのパッチが適用されているかを確認してください。
もし、未適用のパッチがある場合は可及的速やかに適用することが必要です。

Magento Connect Managerを使わない

この方法は問題の原因である、Magento Connect Managerの使用を完全に停止し、Webブラウザ経由でのアクセスを完全にできなくする方法です。
非常に単純で、ApacheやNginxの設定で、あらゆるアクセス元からのアクセスを遮断します。

ただし、Magento Connect Managerが使えなくなるため、本番サーバーなどの特定の環境だけに適用するのが望ましいといえます。
開発環境などでは場合によってはIPアドレス制限を前提とした利用を行い、エクステンションやテーマをインストールできるようにします。
これらの環境で検証・テストができたものだけを本番サーバーに反映するようにすれば、不正なエクステンションが入り込む可能性は大幅に低くすることができます。

mageコマンドを代替手段にする

Magentoに標準で付属するmageコマンド(Magentoのルートディレクトリにあります)をLinuxのターミナル等から使用することで、Magento Connect Managerの代替とすることができます。
Magento Connect Managerでできることはほぼ一式可能なので、開発者やシステム担当者が在籍している場合はこちらの方法を使うほうがより安全であるといえるでしょう。

もちろん、Webからのアクセスは一切使いません。

ファイル改竄検知システムやウェブアプリケーションファイアウォールを導入する

やや導入に際して費用や手間がかかりますが、ファイル改竄検知システムやウェブアプリケーションファイアウォールを導入するのも良い方法です。
不正なログインが何度も繰り返し行われている形跡をアクセスログやリクエストデータからこれらのシステムが自動的に判断できるようにしておくことで、夜間や休日であっても比較的安心できるうえ、問題の早期発見にもつながります。

問題は導入に際して専門の知識や経験が求められることと、相応の初期費用や維持費用が必要になることです。

まとめ

Magento Connect Managerは大変便利な機能です。ただし管理・運用を誤ると、攻撃者の侵入を許してしまう恐れがあります。
利用しないのであれば機能自体を停止させることが望ましいですが、難しい場合はアクセス制限をかけることが推奨されます。

最近弊社に寄せられるお問い合わせではこのような事例が何度か見受けられることがあります。
もしお心当たりがある場合や、ご自身のサイトが安全かどうか不安な場合は、弊社まで一度ご相談ください。