セキュリティテストについて考えてみた

先日CTF(Capture The Flag)という大会の地方予選に参加してきた。

http://ctf-challenge.jp/

ある環境に侵入してその中にあるフラグ(ファイル)を取るという大会。
攻撃する側の思考、手順を学ぶことで防御するときの手助けにするというもの。

さて、二日がかりの勉強会+大会。これがなかなかハードだった。。。

一日目は基礎の講習。しかしセキュリティに関しての知識が足りないため、初めてのことが多い。
  ・セキュリティーホールの狙い方、防御の方法
  ・パスワードのクラックの仕方、防御の仕方
  ・SQLインジェクションの方法、防御の方法など実習を踏まえながら進めていく。
いやー 勉強になります。m(_ _)m
KAKAKU.comのSQLインジェクションなんかは結構有名だよね。

 

二日目は実際の大会。ヒント無しでどんどんフラグを取っていく。
パッと取れるところもあれば、なかなか取れないところもある。
これは大変だ。。。。
結果は4本あるフラグのうち1つしか取得できずに、下から2番目(くらい)。
次回参加する機会があれば、もう少し上を狙ってみたいなぁ。

 

ということで、終わってからセキュリティに関して考えてみた。

まずはJSTQBの確認。
******************************************************************
機能テストの一種であるセキュリティテストでは、
ウイルスなど、外部からの悪意ある脅威を検知する機能をチェックする。
                                              by JSTQB FL Syllabus
******************************************************************

悪意ある脅威を検知する機能をチェックするとあるが、「検知」だけではないと思う。
検知する機能とともに、侵入できない機能というのも重要だ。


******************************************************************
セキュリティツール
これらのツールは、ソフトウェアのセキュリティ特性を評価するために用いられる。
これは、データの機密性、完全性、認証、権限、可用性、否認防止といった、
データを保護するためのソフトウェアの能力を評価することを含む。
セキュリティツールの多くは、特定の技術やプラットフォーム、目的に焦点をあてている。
                                              by JSTQB FL Syllabus
******************************************************************

こっちは機密性や認証などちょっと書いてある。


自分が思ったのは一般的な機能テストとセキュリティテストは質が違うということ。
「検索の文字が間違って、検索データが表示されなかった」
「検索の文字列を変更し、全てのユーザーデータを持ち出し悪用する」

うーん やっぱり下の方が防ぐのは大変そう。
セキュリティーホールの情報、攻撃方法が日々更新されている以上、
最新の環境、最新の情報を元にテストを実施する必要がある。

OS周りなどは最新のパッチを当てたり、特定の設定を無効にしたり、ある程度確立された手法があるようだが、
アプリ側のセキュリティをテストする場合は経験ベースの探索的テストに近いテストになるようである。
実際のコストはどれくらいかと質問したところ20ページ程度のWebサイトで200万くらいらしい。。。

******************************************************************
探索的テストは、テストの目的が含まれたテストチャータを基にしたもので、
テスト設計、テスト実行、テスト記録や学習を並行して同じ時間枠内で実行する。
このアプローチは、仕様がほとんどなかったり、不十分であったり、
スケジュール的な余裕がない場合や、他の形式的なテスト技法を補完する場合に効果が大きい。
探索的テストは、テストプロセスのチェックや、きわめて重大な欠陥を見つけ出すのに役に立つ。
                                              by JSTQB FL Syllabus
******************************************************************


何はともあれ、初めてのハッキング体験とセキュリティテストについて考えるきっかけを与えてくれたCTFJapanには感謝したい。

 

(参考サイト)
IPAセキュア・プログラミング講座
http://www.ipa.go.jp/security/awareness/vendor/programmingv2/web.html

Webアプリにおける11の脆弱性の常識と対策 - @IT
http://www.atmarkit.co.jp/fjava/rensai4/webjousiki11/webjousiki11_1.html