「Webアプリの脆弱性対策は簡単です」「Webアプリケーションの脆弱性対策は簡単です」。 セキュリティ関連の取材をするようになって10年以上になるが、セキュリティ対策が「簡単」だと聞いたのは恐らく初めてである。取材の相手は、TISの早矢仕善弘氏(技術本部 セキュアワン室 室長)。ソースコードを対象にした脆弱性チェックツールとして広く利用されている米Fortify Softwareに、同社ソフトの検証を依頼されたこともあるというセキュリティの専門家である。 早矢仕氏によるとWebアプリケーションの脆弱性は、たった四つの原則を守れば防げるという。SQLインジェクションやクロスサイトスクリプティング(XSS)など著名なものはもちろん、最近になって発見されている数多くの脆弱性が、いずれかの原則の対象になる。四つの原則を紹介しよう。
(1)ユーザー入力を精査する
(2)ユーザーに渡したデータを信じない
(3)不要なエラー情報を出さない
(4)セッション管理を強固にする 早矢仕氏は、システムインテグレーターなどに向けたセキュリティ研修の講師も務めており、そこで四つの原則に当てはまらない脆弱性がないかどうか、いつも問いかけている。しかし、いまだ例外は見つかっていないという。
現実のWebアプリケーションでは…ではこの原則さえ学んでおけば、現実のWebアプリケーション開発で脆弱性を撲滅できるのだろうか。早矢仕氏は「原則は簡単だが、実際の開発現場で実践するのはなかなか難しい」と説明する。問題は、原則から考えられる対策と、実際のプログラムでやるべきことが、開発者の頭の中でなかなか結び付かないことだ。 例えばCSRF(クロスサイト・リクエスト・フォージェリー)と呼ぶ脆弱性は、セッション管理を強固にするという原則(4)を守ることで防げる。しかしCSRFの中身を知らなければ、具体策を考えるのは難しい。 CSRFは、ユーザーが悪意のあるサイトにアクセスしてしまったとき、事前にログインしていたECサイトなどに対して意図しない操作を強要されるもの。ECサイトに登録した個人情報(パスワードなど)を変更されたり、意図しない買い物を強要されたりする恐れがある。詳細は省くが、解決策にはいくつかの方法がある。個人情報の閲覧・変更といった重要な操作をする際に、それまでのWeb画面遷移を確認する方法や、再ログインを求める方法などである。このような対策は、CSRFという個別の脆弱性について具体的に調べなければ、最適なものを考えづらい。 そこで早矢仕氏が実施しているセキュリティ研修でも、実際には個々の脆弱性について説明し、対策を解説している。特に経験の浅い開発者にセキュリティ対策を身に付けてもらうには、SQLインジェクションなど基本的なものから順に一つずつ教えていくしかないという。 では四つの原則を学ぶのは無駄なのか。早矢仕氏は「多様な脆弱性を整理して、対策を体系化するのに役立つ」と解説する。記者も実際にこれまで学んだ脆弱性対策が、頭の中で整理されたと感じた。今後新しい脆弱性が出てきたときも、過去のものと関連付けて対策を考えられるだろう。読者も実際に試してみてほしい。 |
週末スペシャル
A3 2010 Spring 受賞作品決定!
「iPhone 4」発売、注目度はiPad以上?
奥井規晶の悩むなら聞け!---転職編
|