はじめに
今回は、セキュリティの基礎知識について考えていこうと思います!
ソフトウェアに起こり得る問題点
Webアプリケーションに欠陥や仕様上の問題点が生じると、開発者と利用者それぞれに、様々な被害が生じます!
脆弱性
脆弱性とは、アプリケーションなどにおいて、セキュリティの弱点を作り出す仕様のことを言います!
つまり、攻撃を受けるときの弱点のことを言います!
被害
これによる被害は以下のようなことが考えられます!
- 個人情報が勝手に閲覧される
- Webページの内容が改竄される
- Webページ自体が利用不可能になる
このようなことが起こってしまうと社会的な信用自体も失ってしまう可能性もあります!
ですので、これに対する対策は必須になります!
JavaScriptのセキュリティ攻撃について
JasvaScriptはクライアントサイドで動くプログラミング言語です!
なので、なんらかの方法で悪意のあるプログラムをyーざーが埋め込めば、ユーザーにそのプログラムを実行させることができてしまいます!
攻撃の概要
XSS(クロスサイトスクリプティング)
XSSとは、攻撃者が脆弱性のあるWebアプリケーション上に悪意のあるJavaScriptのプログラム(スクリプト)を埋め込み、そのサイトの利用者を攻撃する手法のことです!
この、プログラム(スクリプト)を埋め込むとは、ユーザーがブラウザ上で表示するHTML中に、JavaScriptのプログラムを埋め込むことを言います!悪意のあるスクリプトをWebアプリケーショに表示した時に実行させることをゴールとした攻撃がXSSです!
スクリプトを埋め込んで、実行させることが「スクリプティング」に該当します!
しかし、実際のユーザーの個人情報などを、悪意のある人のサーバーなどへ送付するスクリプトが埋め込まれることが多いです!
では次はXSSの種類についてまとめていこうと思います!
XSSの種類
反射型XSS
ユーザーが悪意のあるURLをクリックすると、脆弱性のあるWebアプリケーション上でスクリプトが実行されるようにする手法です!
手順は以下のような感じです!
- ユーザーにURLをクリックさせる
- ユーザーがクリックすると脆弱性のあるWebアプリケーション上でスクリプトが動く
- スクリプトが発火すると、攻撃者のサーバーへ個人情報が送られる
格納型XSS
脆弱性のあるWebアプリケーションの投稿などに、悪意のあるスクリプトを埋め込み、ユーザーがそのWebアプリケーションを訪れた時にスクリプトが発火するようにする攻撃手法です!
手順は以下のようになります!
- 攻撃者が、脆弱性のあるWebアプリケーションにスクリプト付きの投稿をする
- ユーザーがその投稿のあるページを訪れるとスクリプトが発火する
- スクリプトが発火すると、攻撃者のサーバーへ個人情報が送られます
このようなユーザーが訪れたタイミングでスクリプトが発火するようにスクリプトが格納されているので格納型と呼ばれています!
XSSの対処
このXSSの攻撃は、独立行政法人情報処理推進機構が発表した資料によると、脆弱性を突く攻撃の被害の多くはXSSに起因するものです!
そのため、XSSへの対処は、最優先で考えるべきセキュリティ対策と言えます!
文字参照
文字参照とは、ブラウザ上で表示できない特殊文字を表記する際に用いられる記法です!
特殊文字を文字列としてブラウザ上に表示するための特殊文字は以下のようなものがあります!
変更前 変更後 | |||||
< & It; | |||||
> & gt; | |||||
& & amp; | |||||
“ & quit; | |||||
‘ & #39; |
Ruby on Railsにおける対処法
Ruby on Railsでは、主要な対処法についてカバーされています!
具体的な例としては<%= %>というビュファイルのヘルパーメソッドがあります!
Railsのヘルパーメソッドは特殊文字をエスケープすることに対応しています!
ただし、非同期投稿で表示する際にはヘルパーメソッドを用いないため、エスケープができません!
セッションを用いたセキュリティ攻撃
セッションハイジャック
XSSなどを用いて、正規利用者ではない者が正規利用者のセッションを取得する攻撃方法です!
特に、クッキーにはセッションをセッションIDという識別番号を用いて保存しています!
このセッションIDを盗み出されると、セッションハイジャックが成立してしまいます!
セッションID
セッションIDとは、通信中の正規利用者へ付与される、固有の識別情報のことです!
これを盗み出すことよって正規利用者に対して、個人情報の閲覧や、なりすましなどの被害にあってします可能性もあります!
具体的な攻撃方法は以下のようなものがあります!
- セッションIDの推測
- セッションIDの盗み出し
- セッションIDの強制
これらものもが考えられます!
ではこれらがどのような攻撃なのかをまとめていこうと思います!
セッションIDの推測
このセッションIDの生成規則に問題があると、第三者にセッションIDを推測されてしまう恐れがあります!生成規則に問題のあるセッションIDは以下のものがあります!
- ユーザーIDのメールアドレス
- リモートIPアドレス
- 日時
つまり、セッションIDの推測によるセッションハイジャックとは、外部から参照可能な値を用いてセッションIDを推測する手法とも言えます!
これの対策としては、独自でセッションIDの生成を行わないということが挙げられます!
セッションIDの盗み出し
XSSを用いたセッションハイジャックもこれに当てはまります!
JavaScriptで用いる<script>document.cookie</script>によってクッキーの情報を手に入れることができます!これに細工することによって攻撃者側のサーバーに正規利用者のクッキーの情報を送付することでセッションハイジャックが成立します!
これの対策としては、セキュリティを十分にし、XSSを防ぐ、安全なインターネット環境をもちいということをする必要があります!
SSL
先ほど紹介した対策の1つの安全なインターネット環境を使うということに関係しています!
このSSLとは、インターネット上の通信を暗号化してくれる技術のことです!これによって、第三者からの情報の盗聴や改竄を防ぐことができます!
セッションIDを固定する
セッションIDを小激写が外部から強制的に固定する方法があります。これをセッションIDの固定化と言います!
固定化は以下の手順で行われます!
- 攻撃者は普通の利用者としてセッションIDを取得
- 正規利用者に対して取得したセッションIDを強制
- 正規利用者は標準アプリケーションにログイン
- 攻撃者は、正規利用者に強制したセッションIDを使って標的アプリケーションにアクセスする
これの対策としては、ログイン後にセッションIDを変更することです!
コメント