ECコンサル アラタナはeコマースを中心とした「新たな○○を創造する」会社です!

御社のJavaScriptは大丈夫?安全度を確認する2つの質問

 

こんにちは、アラタナの山本です。

先日、jQuery(JavaScript)でユニークなネットショップの構築をのエントリーの中で、『「ソースコードの組み方次第ではセキュリティリスクになってしまう」などの課題もあります。』と説明しました。

そこで今回は、JavaScriptのセキュリティリスクについてお話したい思います。

 

説明されてわからないことの価値は理解できない

本ページを作成するために、当社の取締役 最高情報セキュリティ責任者(CISO)に聞いてみました。

1

JavaScriptがネットショップやHP上で、セキュリティ的に脅威になる説明をしたいと考えいます。教えて頂けませんか??

2

JavaScriptがセキュリティの脅威になる根本的な問題についてお話しします。

まず、XSSは大きく3種類あります。
1. Reflected XSS
2. Stored XSS
3. DOM Based XSS

1と2はWAFで対応が可能であり、Webサーバにもログが残るので、検出が可能です。
しかし、JavaScriptによる3のXSSは、WAFで防ぐことは難しく、Webサーバのログにも残りません。
理由は、サーバとの通信が発生せず、ブラウザの中だけでXSSが発生してしまうからです。

”この「ブラウザで完結して処理が行われる」ことで「サーバ側で検出されにくい」点に、セキュリティ対策の難しさがあると思います。”

さらに事態を悪くしているのが、いわゆる一般的な脆弱性診断ツールでは検出することが難しい場合があります。
3を見つけるためにはJavaScriptのソースを解読することが必要で、セキュリティだけでなく、開発者レベルの知識が必要です。
ちなみに、アラタナのグループ会社でセキュリティコンサルタントを承っております「株式会社ゲヒルン」ではJavaScriptのスペシャリストが多数在籍していますので、当然のように検出しています!

▼詳しい内容は、IPAの資料にも書かれています。
「DOM Based XSS」に関するレポート
ご参考になりますでしょうか?

って、、、
教えてもらったのに、まったく理解できません。
で、本当にここが重要かなと思います。

いくらセキュリティの脅威を説明したとしても、
意味が分からないのでセキュリティを考慮する価値を理解して頂けない。
理解できなければ、安く仕上げてくれる業者に頼むでしょう。

安く仕上げる業者は悪いとはいいませんが、考慮しないといけない部分を考慮してない可能性があります。

そこでこのページはでは、セキュリティを考慮されているのか?否か?を確認できる「2つの質問」を準備してみました。
また、この2つの質問がなぜ大切なのか?を少しでも理解して頂ける様に説明していきます。

なお、概要を理解できるように極端に書いていますので、ずれている部分もあるかとは思いますがその辺はご容赦ください。

 

JavaScriptでは間接的に情報を奪取する攻撃方法で被害を受ける

まずは、WEBサイトが攻撃をうけるパターンを理解しておきましょう。

3

WEBサイト攻撃には2パターンあり、

①サーバーや管理画面のID、PASSワードが漏洩したり、解読されて侵入される直接情報を奪取されるパターン
②攻撃者がメールなどを攻撃対象者に送り、リンク経由で情報を奪うためのサイトに誘導して、ID、PASSワードを入力させて、間接的に情報を奪取するパターン

があります。

間接的に奪取する方法の例としては、ネットバンキングなどでも問題になっている、ある特定のURLにアクセスした時に、パスワード情報等を入力させるようなフォームが出現するようなウイルスをPCに感染する方法などもあります。

▼三菱東京UFJ銀行のお知らせ
お客さまの情報を不正に入手するコンピューターウィルスにご注意ください!

なお、JavaScriptがセキュリティ的に問題になる時は、間接的に奪取する方法で被害を受けることになります。

 

JavaScriptの仕組みを理解する

JavaScriptとは、WEB上でインタラクティブな表現をする為に開発されたオブジェクト指向のスクリプト言語(簡易プログラミング言語)です。

HTML内にプログラムを埋め込むことで、Webページに様々な機能を付加できる(Webブラウザの動作を定義できる)為、HTMLやCSSでは表現できないユーザーの動きに応じたものを作ることができます。

JavaScriptでは、htmlソースを読み込んでいる時に、今読み込んでいるデータ以外のデータを割り込みで出力させることができます。

例えば、SNSのいいねボタンを出力したり、グーグルアナリティクスの解析タグを読み込んだりするのも、JavaScriptを使っています。

JavaScriptがセキュリティ的に問題になるのは、
htmlソースを読み込む流れの中で、別サーバーのファイルなどを読み込んで出力させることができる機能を悪用される時
などです。

 

JavaScriptを使った攻撃方法

4

例えば、AのファイルにID,PASSワードの入力フォームのようなものを出力するようにされてしまうと下図のようなものを表示されてしまいます。

 

5
 

この様になると、攻撃者の罠だと気が付かずに、ID,PASSワードを入力してしまう顧客もいるでしょう。

フォームの送信ボタンを押せば、攻撃者のデータベースに情報が送信されてしまい、運営者側にとっては漏洩事故になります。

なお、データベース上はパスワードが暗号化されていたとしても、この手法を使われると、顧客自身が攻撃者に生パスワード(暗号化されていないパスワード)を伝えてしまうことなどに繋がります。

 

ライブラリが問題になる

管理画面のID,PASSワードさえ漏れなければ問題ないのでは?と考えるかもしれませんが、落とし穴があります。
それは「ライブラリ」が媒体になる場合です。

ライブラリとは(WEBサイト構築の世界では一般的にされているのが)自分で作ったJavaScriptをだれでも使えるように公開しているようなサイトです。

このライブラリが善意で使われておれば、JavaScriptの知識が少なくても、WEBサイトに自分で実装できるなどのメリットがあります。

 

6

 

しかし、このライブラリを悪意をもって使われると、気が付ない間に、自分でサイトに組み込んでしまうことになります。

ライブラリが危険であることを認識しており、悪意のあるソースを理解できればいいのですが、ライブラリを使わないとJavaScriptが組めない方にとっては、理解することは困難です。

 

WAFがあれば大部分は検知できる

WAFは簡単にいうと、攻撃とみなされるアクセスパターンを検知して、ブロックするシステムです。
WAFの説明はこちらを参考にされてください。

WAFがあれば、予防することや危険を検知することができますので、WEBサイトの守備力を格段にあがるでしょう。

オフィスのセキュリティ会社的な役割です。
セキュリティ体制が強いと思えば、攻撃者が攻撃対象から外す可能性が高まります。

 

まとめ

冒頭でもお話したことになりますが、昨今、ネットバンキングの不正送金被害が拡大しています。

▼読売新聞
ネット銀行の不正送金被害、検挙の6割は中国人

被害が拡大してしまう理由は、インターネットを使うユーザー側のセキュリティ意識が低い(ウイルスをPCに入れてしまって被害を受ける)ためです。

WEBサイトにおいては、運営者のセキュリティ意識が低いために、認識がない所で、悪意のあるJavaScriptをWEBサイトに入れてしまって、顧客に被害を与えてしまうのです。
大切な、WEBサイトとお客様のためにも、以下2問はJavaScriptを組み込む方に質問しておきましょう。

Q1.ライブラリの問題点を把握しているか?
Q2.WAFを使っているか?

 

冒頭でコメントした通り、JavaScriptの脆弱性はWAFで検知できない場合が多いので、ご注意ください。あくまでも、「その認識がある」「少なくともWAFなどで防御する体制を考えているか?」で、セキュリティに対する認識を確認しましょう。

 

Qに対して、NOが一つでもあれば、安全ではない可能性が高まることになりますので注意が必要です。

 

この記事を書いた人

ECのノウハウを知る