EC-CUBEのカスタマイズ、ネットショップ制作メモ

主にEC-CUBEを利用したネットショップの制作、カスタマイズや独自機能の開発について

ECサイトのセキュリティの原則 - 最近の情報漏洩に対して

どうもお久しぶりです。
今日は、最近多発しているECサイトの情報漏洩についてです。

最近、いくつかのWebサイトでおきた情報漏洩のニュースを良く聞きます。
特に、ECサイトでの通常考えられない様な漏洩もあったりするので、発注者側、開発者側の人に対して強く言いたい事があります。

漏れたら危険な情報は持たない

こう言ってしまうと余計な危機感をあおりそうで嫌ですが、基本的に全てのWebサーバは侵入可能です。
どれくらい難しいかという話で、時間や労力を考えなければインターネットに繋がっている全てのサーバは侵入可能なのです。

Webサイトのセキュリティは、それを踏まえた上で、「侵入されても最悪の事態を防ぐ」「侵入させにくくする」という視点で対策を施す必要があります。

なんだか原発と似てますね。
事故が起きない事を前提に考えてはいけない」という事です。


その為には、基本的なログインIDやパスワードの管理や接続IPの制限、ミドルウェアの保守等も当然ですが、なによりかにより最強なのが「情報を持たない」という事です。
持っていない情報は漏洩のしようがありません。コレが最強です。


では、ECサイトで漏れたら致命的な情報とは何でしょうか?
実害が発生しうる可能性が最も高く、危険度MAXなのが決済情報、それもクレジットカードの情報です。
最近起きた情報漏洩の最悪なケースがコレです。

グローバルデータの情報流出に、深刻な三つの問題点

クレジットカード決済で必要な情報は、カード番号と有効期限、カード名義人情報です。
それだけだとあまりにも危険なので、インターネットで決済する場合に追加で付与された情報がセキュリティコードという、クレジットカード裏面に記載されている3桁の番号です。
この漏洩を起こしたグローバルデータのサイトの場合、なんとこの情報をセットでサーバ内に保持していたのす。
僕らECサイトを制作する事を生業としている人間からは信じられない仕様です。
原発に例えると、「燃料棒を監視も施錠も無い庭の物置に積んどいた」くらいの危険度です。


通常、ECサイトでクレジットカード決済を行う場合、カード番号や有効期限などの決済に必要な情報を、Webサイト上で入力してもらいますが、その情報はECサイト側では保持しません。
ECサイトでは受け取ったカード番号等を、保存せずにそのまま決済代行会社のサーバに安全な通信で送信し、結果を受け取ります。
保存したとしても一時的にサーバのメモリ上にその分だけ保存され、1/100秒くらいで消えてしまいます。

また、カード情報を入力しないでも、1度カード決済をすれば2回目以降はカード番号の入力を省略できる機能があります。
これは、ECサイト内の顧客IDとカードの決済情報を決済代行会社側が結びつけておいて、顧客IDと店舗の契約情報を結びつけて決済ができるという仕組みです。
この場合、店舗の決済ID、暗号鍵、顧客IDが無いと決済できず、そのECサイトのサーバからしか決済を受付ない様になっています。

つまり、カード情報なんかWebサーバで持っていなくても、正規の手順を踏めば正常な決済は可能なのです。


これは予想ですが、グローバルデータではレンタルした端末を返却した後に決済をするので、それまでカード情報を持っていないといけないと思ったのでしょう。
あまりにも決済についての知識が無さ過ぎる仕様です。
考えられる理由としては、

  • 制作会社が顧客IDで決済できる事を知らなかった。
  • グローバルデータ側がこの仕様を強要した

のいずれかだと思います。

ECに詳しくない制作会社の方へお願いです。

決済については決済代行会社の方が聞いて無い事まで詳しく教えてくれます。ちゃんとサービス内容や仕様を勉強してください。

ECサイトを発注者の方へお願いです。

利便性を優先するあまりに、危険な仕様を強制しないでください。概ね利便性とセキュリティの強さは反比例します。
それにより事故が起きた場合の被害額を考えれば、おのずと正しい判断ができるはずです。


できれば、個人情報についても決済代行会社さんで持って頂きたい位ですね。

EC-CUBE脆弱性について

さて、お話し変わってEC-CUBEです。
先日、2.11系に危険度の高い脆弱性が発見されました。
http://www.ec-cube.net/info/weakness/
まだパッチを当てていないサイトはすぐにでもバックドア等の確認をして、パッチを当ててください。バージョンアップの必要はありませんが、パッチを充てるだけでは不十分です!改ざんされていないか確認してください。*1
制作会社にお願いしても大した金額は取られません。

今回の脆弱性についての詳細は、EC-CUBE東京ユーザーグループで、EC-CUBEエバンジェリストでもある川口先生が詳しく解説もしてくれています。
これを機会に、東京近郊の方はぜひユーザグループへの参加もお願いします。「参加」ボタンクリックするだけです。


今回の脆弱性についてですが、SQLインジェクションXSSとWebアプリの脆弱性のお手本の様な脆弱性のオンパレードです。
でも、EC-CUBEのクレジットカード決済モジュールは、サーバ内にカード情報を保持する様には作られていません。
なので、顧客のカード情報が漏洩する事はありません。

ある条件が揃った際に情報が漏洩する危険性があるというもので、EC-CUBEでは会員のログインパスワードは暗号鍵を混ぜた状態で暗号化されており、ショップの管理者でさえもパスワードを知る事はできません。*2

EC-CUBEオープンソースであり、株式会社ロックオン主導で開発が進められていますが、多くをボランティアの開発者に支えられています。
その為、時にこういったバグが出てしまう事が稀にあります。
でも、川口先生をはじめ、主要メンバーはECサイト構築のプロなので、漏れても最悪の事態を招かない様に作られています。

また、公式のインテグレートパートナーやコミッターには、一般公開前にこういった脆弱性情報が通知され、公開前にパッチを当てる事ができる様になっています。


コミッターのひとりとして、EC-CUBEのこういった「事故が起きる前提で考える」体制も評価のひとつに加えて頂きたいと思います。

*1:コメントにてご指摘頂いたので追記しました。

*2:まあ、破り方はありますが...