2016年06月07日
407 Views

たまにはセキュリティについて考えてみよう!

タグ:
イベント
セキュリティ

Pixabayより

初めまして。この間、自分のMacBook Airを購入したgonです。
私は2016年4月28日木曜日に開かれたセキュリティ勉強会に飛び入り参加をしました。
「難しいかな…わかるかな…」と心配に思っていましたが、先輩方のわかりやすい説明のおかげで理解をすることができました。
それではこれからセキュリティについて考えていきましょう!

セキュリティ勉強会ってなんだろう


Unitusではある題材について「みんなで勉強したい」と思った時に開く会が2種類あります。それは、勉強会と講習会です。
勉強会はまだ知らないことを学ぶためにその題材について調べたり輪読をしたりする会で、講習会はある題材について知識を持った人が知識を持っていない人にその題材について教える会です。

みなさんご存知のように、セキュリティの知識はこれからの情報社会で大切ですよね。そして、Unitusでサービスをリリースする際にも必要なものです。そういった背景から、「セキュリティについて学習する」という目的で勉強会を実施しました。

今回は、『体系的に学ぶ安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践』 (徳丸浩 著)を用いて勉強会を行いました。

今回のセキュリティ勉強会でやったこと


security
これからセキュリティ勉強会で扱った内容について紹介していきます。
少し難しい内容については イタリック体 で表示しますので飛ばして読んでいただいて構いません。

・HTTPとクッキー・セッション管理
みなさんはHTTPという文字をURLでよく見るのではないでしょうか。
わたしはよく見ます!
でも、「HTTPはよく見るけど、よく考えてみたらどんなものなのかよくわからないなあ」と思う人は多いのではないでしょうか?
スクリーンショット 2016-06-06 12.59.52
Webブラウザはページを取得・表示をするとき、Webサーバとやりとりをします。HTTPとは、そのときにどのような手順でやりとりを行うかを定めているものです。

HTTPにはGETメソッド・POSTメソッドというものがあり、使用用途によって使い分ける必要があります。

 また、セッション管理をHTTPで実現する目的でHTTP Cookie(以下、クッキー)という仕組みが導入されました。セッション管理とは、アプリケーションの状態(ログインした後の認証状態など)を覚えておくことです。
クッキーは利用者が参照・変更できるので秘密情報の格納には向いていません。
よって、クッキーを用いたセッション管理において、秘密情報はサーバー側で管理します。そして、クッキーには、秘密情報の代わりにセッションIDと呼ばれるものを格納しておきます。セッションIDとは、いわゆる「整理番号」のようなものです。そのセッションIDの管理における脆弱性とその対策についても学びました。

・Webアプリケーションにおける能動的攻撃と受動的攻撃
攻撃には能動的攻撃と受動的攻撃があります。
能動的攻撃は、攻撃者がWebサーバーに対し直接攻撃する手法です。
受動的攻撃は、罠が仕掛けられたコンテンツを閲覧した利用者を通してWebアプリケーションを攻撃する手法です。

受動的攻撃のなかには、罠サイトを新たに作り、そこに利用者を誘導するタイプや、正規のサイトに罠を仕込むタイプなどがあります。
このような攻撃のおおまかな分類の他に、受動的攻撃をブラウザでどのように防ぐか、また、クロスサイトドメイン(あるサイト上で他のサイトの画像やHTML、CSSなどを参照すること)について学びました。

・入力処理とセキュリティ
ある値を入力している時、ヌルバイトと呼ばれる文字を入力してしまうとヌルバイト以降の文字を正しく処理できない関数があります。
このことを利用した、「ヌルバイト攻撃」と呼ばれる攻撃があります。
これは単独で用いられることは少なく、他の脆弱性対策を回避するために悪用されます。
ヌルバイトが入力されても正しく処理できることをバイナリーセーフと呼びます。

・実際に攻撃をみてみましょう
最後に、実際に攻撃を体験してセキュリティの大切さを実感しました。
まず、Hackmeというサイトを用いてハッキングを体験しました。
最初にニックネームを入力するとこのような画面が出てきます。
この画面である特定のコードを入力すると…
hackme

ハッキングに成功し、「Congratulation!ミッションクリア!」という文字が現れます。
今回はLv1とLv2のハッキングを行いました。
ミッションクリア時の画像にはネタバレが含まれているため、やってみてのお楽しみです。
初心者にはLv1でもかなり難しいですが、攻略サイトなどもあるのでぜひ挑戦してみてください!
Lv1をやってみると、「そんなところにそんな抜け穴があるとは!」と驚きますよ。Lv2は初心者にはかなりむずかしい内容です。

次に、XSS攻撃を体験しました。
XSSとは、クロスサイト・スクリプティングの略です。
XSS攻撃にあうと利用者がなりすましの被害を受けたりWebアプリケーションの機能を悪用されたり、個人情報を盗まれたりします。
次の動画は実際にXSS攻撃をした時の動画です。
JavaScriptインジェクションとXSS攻撃の危険性について

普段利用しているインターネットが、悪意のある人に利用されるといかに危険なのか再認識できたのではないでしょうか。

分からないところがあれば、 Googleで検索してみましょう!!

参考文献・サイト


(1)『体系的に学ぶ安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践』著者・徳丸浩 発行年・2011年 発行所・ソフトバンククリエイティブ株式会社
(2) HTTP – インターネット用語辞典 – | OCN (閲覧日時:5月6日17時40分)
(3)Hackme(閲覧日時:5月6日20時)

合わせて読みたい