セキュリティテストには攻撃者の視点が肝心:スーパーテスターの3つのスキル
攻撃者はバグを1つ見つければ済むが、セキュリティテスターは、リリース期限までに多くの重大なセキュリティバグをつぶさなければならない。
ソフトウェアセキュリティエンジニアとトレーナー、両方の経験から言うと、物事を理解する早さは人によって大きく違うものだ。だが、本来優秀な人がなかなか実力を発揮しないことも多い。どんなバグでも突き止められるベテランのテスターが、セキュリティテストにはなかなか習熟できない、といったことがよくある。わたしはこの数年、世界最大級のソフトウェアベンダー数社で開発者チームのトレーニングに従事する中で、彼らの行動を調べ、優れたセキュリティテスターに必要なものを明らかにしようとしてきた。その結果分かったことを紹介しよう。
セキュリティテスターに必要な3つのスキル
わたしは、セキュリティテスターは皆、以下の3つの専門スキルをベースとして持たなければならないという結論に達した。
優れた想像力
多くの場合、セキュリティテスターとして欲しい情報は、すべて手に入るわけではない。例えば、SQLインジェクションの脆弱性をチェックする場合、セキュリティテスターが効果的なテストを作成するには、対象システムについて一定の仮定を置き、手持ちの知識に基づいて内部動作を推測しなければならない。
包括的なシステム知識
優れたセキュリティテスターは、テストするシステムの各コンポーネントについて知っていなければならない。テスト対象がWebアプリケーションの場合、JavaScript、XML、サーバ側コード(ASP、JSP、Ruby、PHPなど)、データベース、Webサービスなどに関する深い知識が必要だ。また、テスターは、システムの作りに問題がある場合やコンポーネントの使い方が誤っている可能性がある場合、それを認識できなければならない。こうした包括的な知識は、時間をかけて専門的な経験を積むことで得られるが、セキュリティの観点からそれぞれのテーマについて集中的に調べることで、習得を促進することもできる。
攻撃者の視点に立つ能力
理想的なセキュリティテストの実施を目指すためには、上の2つの専門スキルを駆使するだけではまだ足りない。決定的に重要なスキルは、攻撃者のように考える力だ。攻撃者がシステムをどのようにとらえるかを予測する能力は、システムのテストに不可欠な要素となっている。セキュリティテストでは、泥棒があなたの家に侵入するために使いそうな方法を洗い出すのと同じような思考プロセスにより、攻撃者があなたのアプリケーションに不正アクセスするために使いそうな巧妙な方法を、すべてカバーする必要がある。
これらの専門スキルについてそれぞれ詳しく説明し、各スキルを実践するための幾つかのポイントを紹介する。
Copyright © ITmedia, Inc. All Rights Reserved.