BLOG

クレジットカード業界やPCI DSSに関する最新動向をお届けします

2018.09.05

ECサイトを襲う「ステルス」外部リクエスト

  • このエントリーをはてなブックマークに追加

2018年6月1日、改正割賦販売法が施行され、クレジットカードを取り扱う加盟店に対してもカード情報の適切な保護や不正利用対策が義務付けられた。実務上の指針として具体的な対策を定めた、クレジット取引セキュリティ対策協議会による「クレジットカード取引におけるセキュリティ対策の強化に向けた実行計画(以下「実行計画」)」は、カード情報保護の施策として、加盟店に対しカード情報を保持しない「非保持化」を原則としている。一方でカード情報を保持する場合は、国際的なカードデータのセキュリティ基準であるPCI DSSへの準拠が求められる。その背景には「そもそもカード情報を自社で保持していなければ、カード情報を窃取されるリスクが払拭され、情報漏えいの観点からも最も有効なセキュリティ対策と考えられる」としており、非保持化もしくは非保持化相当と認められる措置について複数の方法論を示している。

「実行計画」でECサイトに対する非保持化の方式は、PCI DSSに準拠した決済代行事業者(以下、PSP)が提供する非通過型(カード情報がECサイトなど加盟店内の機器・ネットワークを通過しない)決済サービスを利用する形態である。その具体的な方法としては、「リダイレクト(リンク)型」「JavaScript型(トークン決済)」の2種類がある。多くの加盟店が後者を選択しているのが現状だ。

ところが、データセキュリティサービスを提供するDataSing社の太田祐一代表取締役は、このJavaScript型決済サービスにはセキュリティ上の懸念があると警告する。クレジット取引セキュリティに詳しいfjコンサルティングの瀬田陽介CEOも、多くのECサイト管理者がこの事実に気がついていないため、その点を広く知ってもらう必要があると考えている。

「実行計画ではJavaScript型決済サービスを採用することがPCI DSSと同等の安全性があると整理されています。多くのECサイトのカード情報保護対策を急速に推進するために有効な施策ではありますが、JavaScript型決済サービスを導入しさえすれば安心、という考え方は危険だと考えます」(瀬田)。


JavaScript型が採用される理由

ECサイトでカード決済をする際には、Webページにカード情報を入力する。このカード情報は、従来はカード加盟店側のWebサーバーを経由してPSPに送信されていた。

消費者が入力するカード情報を加盟店側のECサイトを通過させず、PSPに送信する方法として考案されたのが、リダイレクト(リンク)型である。カード情報の入力が必要になると、利用していたECサイトから、自動的にPSPのサイト上に設置された入力ページに移動する。ここで決済処理を済ませると、再びECサイトのページに戻るという仕組みだ。

仕組みは安全なのだが、決済の際にこのページ遷移を経験した消費者の中には、全く異なるデザインのページが表示されることで戸惑ったり、ページのURLが異なるドメインに変わることでフィッシング(偽サイトへの誘導)を疑う場合がある(※1)。加えて、同時アクセスが多い時にはページ遷移に失敗するなどトラブルが起きる可能性もある。そこでショッピング自体を中断してしまう消費者が少なからずいると言われている。

「比較的売上規模の大きなECサイトでは、リダイレクト(リンク)型は、好まれない傾向にあります。ECサイト事業者側としては利用者の離脱が懸念される手段を積極的に採用するわけにいきません。」(瀬田)。

このような理由で、リダイレクト(リンク)型の採用は多く進まない。

そこでクローズアップされるのが、JavaScript型(トークン方式とも呼ばれる)だ。PSPが提供するJavaScriptコードを埋め込んだECサイトのページにカード情報を入力すると、カード情報が利用者のブラウザから直接PSPに送信される。PSPではカード情報をトークン(決済処理に利用できるカード番号以外の文字列)に変換して、利用者のブラウザに戻す。以後は、利用者のブラウザとECサイト、ECサイトとPSPの間では、カード情報に代わってトークンを利用して処理が行われる。PSPからカード会社への与信照会は、PSPがトークンをカード番号に変換して行い、その結果をまたトークンと共に戻してECサイトに連携する。

この仕組みでも、リンク型同様にECサイトはカード情報を通過させずに決済処理ができる。その上でPSPが提供するJavaScriptコードを決済ページに埋め込む形なので、ページデザインの変更や異なるドメインへの遷移もなく、先ほどの消費者の離脱の懸念はない。

「多くのECサイト事業者は、カード情報保護対策のためにリンク型とJavaScript型を比較検討するのですが、ビジネスの観点でJavaScript型を採用するという結論になることが多いようです」(瀬田)。

ところが、このJavaScript型には大きな盲点があると太田氏は指摘する。

現在、多くのWebサイトが、JavaScriptを利用して、多数の外部リクエストを行っている。Web上でユーザーの行動を分析するアナリティクス、マーケティングオートメーション、あるいは広告配信などの外部のサービスを利用するためだ。特にECサイトではアクセス解析やクッキーIDの連携のために、このような外部リクエストが頻繁に発生している。どのような外部のサービスを利用するかは、ECサイト管理者が明示的にJavaScriptタグを入れて指定している。


JavaScriptで意図しないサイトに情報が連携されている!?

「問題は、外部のサービスを利用するためにリクエストを行った先が、さらに別のリクエストをしていることがあることです」(太田)。

これは特段悪質なJavaScriptに限った話ではない。例えば、アクセス解析やマーケティング分析用の外部リクエストが広告配信用にクッキーIDの連携をするために別のサービスに外部リクエストしていることもある。そのような子リクエストが、さらに孫リクエストをしている多段的な構図だ。

このような子リクエスト、孫リクエストは、Webサーバーを介さず、ユーザーのWebブラウザと直接通信をするので、Web管理者からは把握しづらい。特に消費者が決済のためにカード情報を入力するWebページに管理者が把握していない通信が行われているという極めて危険な状態だ。意図した通信のみに限定するようWebサイト側のファイアウォールを設定しても、この通信は遮断できない。

また、JavaScriptの外部リクエストを悪用することで、サイト管理者に気付かれず、特定のJavaScriptをユーザーが見ているWebページに送信し、実行できてしまうという大きな問題がある。

最近は、「無料です」「こんなデータ解析が可能になります」「JavaScriptタグをたった1行挿入するだけで使えます」という売り文句で、さまざまな解析を行うサービスがある。よく調べずにこうしたサービスを利用してしまうと、悪意あるJavaScriptを送り込まれてサイトのユーザーが危険に晒される可能性がある(※2)。

JavaScriptの外部リクエストを利用したカード情報の流出事件については、まだ公式には確認されていない。だが、ひとたび悪意あるJavaScriptが実行されてしまえば、ページの改竄、画面の操作、フィッシングサイトなどへの自動遷移、入力フォームの送信先の変更などができてしまう。

実際に、サーバーに侵入され、JavaScriptを不正に改ざんされ、カード情報が盗まれるという被害は過去にいくつか起きている。カード情報入力フォームのJavaScriptのソースコードを改ざんし、PSPの正規のサーバーと悪意のある情報収集用のサーバーに同時に送信し、カード情報を盗むという手口である。このケースは、正規の決済は継続しており、ECサイト側にはその通信のログが残らないため、発覚に時間がかかることが多い。サーバーに侵入してページの改ざんをしなくても、同様のことが発生するリスクを前述のJavaScriptの外部リクエストは孕んでいる。

「広告代理店などに丸投げをして、言われるままに外部のJavaScriptを挿入することは非常に危険です。悪意のある外部サービスが紛れ込むことも考えられますし、正規のサービスも攻撃を受けて乗っ取られてしまえば、やりたい放題になってしまいます」(太田)。

クレジットカード情報、クッキー情報、その他ページに入力や表示される情報はJavaScriptによって、いとも簡単に取得されてしまう危険性があるということだ。

「個人情報が、ECサイト管理者の意図しない外部サービスに転送されていることは、個人情報保護の観点からも問題があります。結果的に、利用者の許諾を得ていない第三者に、個人情報を渡していることになります」(瀬田)。


対策方法は?

JavaScriptによる外部へのリクエストを全て遮断すればセキュリティ上のリスクはかなり軽減される。しかしそれでは運用に支障をきたすECサイトもでてくる。対策として簡単なのは、CSP(Content Security Policy)を利用することだ。WebサイトのCSPに、通信を許可する外部リクエストを明示的に記述しておけば良い。ホワイトリストを宣言しておくだけで、それ以外の通信は行われなくなる。

「ただし、外部サービスが、さらにどのような外部サービスを呼び出しているかまで把握して設定しないと、正規の必要なサービスが正常に利用できなくなることもあります。すべての外部リクエストがどのような通信をしているか、それが妥当なものなのかを日々調査して行くのはECサイトの運営者にとってかなりの負担になるとは思います」(太田)。

瀬田氏も「正規のJavaScriptの外部リクエストが、結果として第三者にカード情報が流出してしまう危険性や、利用者の同意を得ず把握していない外部サービスに個人情報を渡しているという問題もあります。PSPは自社のユーザーであるECサイト事業者にこの問題を注意喚起し、決済用のJavaScriptコードを注意して使うように呼びかける必要があると考えます」とコメントしている。(ライター:牧野 武文氏)


【脚注】
※1クレジットカード情報の「非保持化」で、懸念される業界の対応
http://tech.nikkeibp.co.jp/it/atclact/active/17/081800125/011800007/
※2 JavaScriptを利用した悪用事例
不正広告により、仮想通貨発掘ツールが拡散される
http://blog.trendmicro.co.jp/archives/16904
「広告」を悪用する感染手法が拡大。「日本」を狙い撃ちするケースも
https://knowledge.sakura.ad.jp/3905/

この記事が気に入ったら
いいね!しよう

PCI DSS 関連の最新記事をお届けします

  • このエントリーをはてなブックマークに追加