Crown Lab

脆弱性が生まれる原因と対策part1

どうも、株式会社オズビジョンの@TAKUYA17131336です。

ユーザー名では、まだ認識されているのか不安なので、社員旅行のサプライズ内定式でArmageddonの主題歌を熱唱したタンクトップです。

いえ、平田です。。。

 

今回は現在勉強を進めている脆弱性が生まれる原因と対策について共有したいと思います。

 

利用者に安心してサービスを使えるようにするためには、サービスを個々に提供するため個人情報を取り扱っている以上、利用者に対し安全を保証できるサービスであることが絶対条件であると思います。

そこで、まず、脆弱性とも関連するサイバー攻撃について調べたところによると、日本では2014年の時点でサイバー攻撃を年間250億件も受けていたことが、日本政府機関からの発表により明らかにされています。これにより、2017年現在、インターネットの利用者数の増加が進む中で、サイバー攻撃の年間数も増加していることは明らかです。

この問題を企業における話に転換しても同じことが言えます。

利用者数に比例してサイバー攻撃を受ける可能性も上昇するという事が言えると思います。

 

本題に移ります。

まず、脆弱性とは、「悪用できるバグ」のことである。と定義されています。

脆弱性が生まれる理由としては、①バグによるもの ②チェック機能の不足によるもの

以上の、2種類が挙げられます。

そして、次にその脆弱性を利用して悪用されるケースについてです。

1.個人情報などの秘密情報を勝手に閲覧する。

2.Webサイトの内容を書き換える。

3.サイトを閲覧した利用者のPCをウィルスに感染させる。

4.別の利用者に成りすまし、秘密情報の閲覧、投稿、買い物、送金などを行う

5.Webサイトを利用不能にする

6.オンラインゲームなどで無敵になることができる、アイテムを好きなだけとれる

7.自分の個人情報を確認したら、他人の個人情報が見えてしまう ...etc

 

これらが起因となり、

経済的損失

1.利用者が受けた金銭的損失の補填、補償

2.迷惑料として配る金券などの費用、配送費

3.Webサイト停止による機会損失

4.信用失墜による売り上げの減少

さらには、、、

法的要求*にまで発展するケースも考えられます。

*個人情報保護法:Webサイトの安全対策を要求している法律

 

ここで、数個ですが、脆弱性の特性とその対策を共有しておきます。

 

*Webアプリケーションの機能と脆弱性の対応の図

f:id:crown_lab:20171217003424p:plain

*クロスサイト・スクリプティング(XSS)

<特性>

発生個所:Webアプリケーション上でHTML、JavaScriptを生成している箇所

影響を受けるページ:Webアプリケーション全体が影響を受ける

影響の種類:Webサイト利用者のブラウザ上でのJavaScriptの実行、偽情報の表示

↓これにより、

1.サイト利用者のブラウザ上で、攻撃者の用意したスクリプトの実行によりクッキー値を盗まれ、利用者が成りすましの被害にあう。

2.同じくブラウザ上でスクリプトを実行させられ、サイト利用者の権限でWebアプリケーションの機能を悪用させられる。

3.Webサイト上に偽の入力フォームが表示され、フィッシングにより利用者が個人情報を盗まれる。

<対策>

・属性値はダブルクォート「"」で囲む

・HTMLで特別な意味を持つ記号文字をエスケープする

 

*SQLインジェクション

<特性>

発生個所:SQLを呼び出している箇所

影響を受けるページ:すべてのページが影響を受ける

影響の種類:情報漏洩、データ改ざん、認証の回避、プログラムの実行、ファイルの参照・更新

↓これにより、

1.データベース内のすべての情報が外部から盗まれる。

2.データベースの内容が書き換えられる。

3.認証を回避される(IDとパスワードを用いずにログインされる)。

4.その他、データベースサーバー上のファイルの読み出し、書き込み、プログラムの実行などを行われる。

<対策>

・*静的プレースホルダを利用してSQLを呼び出す。

*SQL文をデータベースエンジン側にあらかじめ送信して、実行前にSQL文の構文解析などを準備しておく方式。

 

それでは、前置きにかなりボリュームがあったので、今回はここまでにします。

part1なので、part2も書きます。

 

このブログへの投稿は12月17日ですが、Qiitaでこの記事が解禁されるのは、12月25日という事ですので、Merry Christmas!