独立行政法人情報処理推進機構(IPA)と一般社団法人JPCERTコーディネーションセンター(JPCERT/CC)が昨年秋に発表した、2011年第3四半期(7~9月)における「ソフトウェア等の脆弱性関連情報に関する届出状況」によれば、同期間にIPAへと届出があった脆弱性関連情報234件のうち、Webサイトの脆弱性に関するものが198件で、全体の82%を占めたという。これは前四半期の5倍以上となっており、そのうちの90%が「クロスサイトスクリプティング」の脆弱性を突いたものだったとのことだ。
企業がWebサイトでサービスを提供する際の「窓口」となるWebアプリケーションのセキュリティに関しては、10年近く前から攻撃方法が明らかになり、対処方法も知られるようになった。現在では、多くのIT系ニュースサイトやITセキュリティ関連サイトで最新の情報を入手できるようになりつつあるものの、このIPAのレポートからもわかるように、Webアプリケーションにおける脆弱性の報告自体は増えつつあるというのが現状だ。
自社で開発・公開しているWebアプリケーションにどの程度の脆弱性が存在するかを知る方法としては「脆弱性診断サービス」の利用が一般的だ。これは、セキュリティの専門家が擬似的にWebアプリケーションに攻撃を仕掛けてリスクを診断してくれるというものだ。近年、各種のサイバー攻撃が一般メディアなどでも大きく扱われたことで、すでに稼働しているWebアプリに対する診断を求めるニーズも高まっている。
一方で、脆弱性診断サービスの利用にあたっては、診断や脆弱性が発見された場合の改修に要するコストが高くなるというデメリットもある。また、改修のために一時的にでもサービスを停止する必要がある場合は、その間の機会損失も無視できない。
そこで、Webアプリケーションにおける効果的な脆弱性対策としてお勧めしたいのが、要件定義の段階からセキュリティ要件を十分に考慮することだ。開発の各フェーズにおいてその要件を満たしながらアプリケーションを完成させ、セキュアな状態でカットオーバーへとつなげることが、より低コストで実現できる対策方法となるというわけだ。
「知っている」かどうかで大きく変わるリスク
SCSKはセキュリティサービスブランド「SECURE YOUR SITE」の中で、Webアプリケーション開発のライフサイクルの中でセキュリティリスクを管理するためのサポートフレームワーク「Web Security Director」を提供している。
Web Security Directorでは、要件定義から設計、実際のコーディング、テスト、導入の各フェーズで、セキュアなWebアプリケーションを開発、導入するためのプランニングやコンサルティング、トレーニング、診断サービスなどを包括的に提供している。
「以前は、完成したWebアプリケーションの脆弱性診断のみを希望されるお客様が多かったです。しかし近年は、セキュリティ対策の全体的なコストを下げることを念頭に、開発の初期段階からセキュリティを考慮したいというお客様も増えつつあります。Web Security Directorはそうしたニーズにこたえるためのメニューとして用意しました」
こう語るのは、SCSK SCSカンパニーIT基盤ソリューション事業部で、技術者としてWeb Security Directorに携わる長尾亮氏だ。長尾氏によれば、現在同メニューの中心となっているサービスは「開発者向けセキュアコーディング講習サービス」だという。実際にコーディングを行う開発者がセキュリティに関する知識を取得し、現場の仕事に生かしていくことにより、開発フェーズでの脆弱性の発生リスクを最小化することを目的としたメニューだ。
自らも開発者であった長尾氏が、現在最も危惧するのは「Webアプリケーションの脆弱性に関する情報や知識が、実際の開発現場でのコーディングとうまく結び付いていないこと」だという。もちろん、「クロスサイトスクリプティング」「SQLインジェクション」といった脆弱性があることは、多くの開発者が知っている。しかし、自分たちが開発しているアプリケーションで、それらにどのように対応すればいいのかが明確にわかっていないケースが多いのだという。
「実際には、数行のコードを変えるだけでセキュリティを確保できることが多いです。にもかかわらず、それが現場では行われていないということがほとんどなのです。コードをチェックするためのツールにはフリーのものも存在するので、それらを使えばコストをかけることなくコードに含まれる脆弱性を発見して対策することはできます。『知っている』『知らない』のレベルで、情報漏洩につながるような重大なバグが作り込まれてしまうケースもあるのです」(長尾氏)
現場の開発者にとっては、要求仕様どおりに動くアプリケーションを作ることが第一目標であり、仕様にセキュリティに関する要件が明確に含まれていなければ意識が向かないというのも現実だろう。そのためにも、要件定義の段階からセキュリティを意識して開発を進めることは重要となる。
また、開発者が入手したセキュリティに関する情報を自分の仕事に適用するにあたり、体系的なトレーニングを受けることは有用だ。セキュアコーディング講習サービスでは、Webアプリケーションの持つ代表的な脆弱性やその脆弱性によって生まれる脅威の内容に加え、それに対処するためのコーディングのルール、コードのチェック方法などについてのトレーニングを実施する。講習を受けた開発者が、日々の業務でその内容を繰り返し実践していくことで、セキュアなWebアプリケーション開発のためのノウハウが根付くことを目指す。
セキュリティを実装できる開発者は重要な資産に
「納期や予算が限られるなかで、Webアプリケーションに必要なセキュリティを実装することは簡単ではありません。しかし、近年はユーザー企業がセキュリティへの要求を含めて発注するケースが増えており、継続的な受注を獲得するためにも、開発者のセキュリティに関する知識と実践は必須の要件となってきています。セキュアコーディング講習サービスで提供するトレーニングは、繰り返し取り組むことで会社の資産となるもの。脆弱性を開発の早い段階で潰し、セキュアなアプリケーションを納入することで次の受注へとつながる――こうしたよい 開発サイクルを作っていくことが可能になります」(長尾氏)
アプリケーションの脆弱性対策や品質の修正に必要なコストは、開発フェーズの後に行けば行くほど、指数関数的に増加することが知られている。脆弱性1件を修正するにあたり、実装段階と受け入れテストの段階ではかかるコストが600倍以上違うという調査結果もある。開発の初期段階からセキュリティを考慮し、そのノウハウを実装できる開発者がコーディングを行うことは、コストメリットも生み出すのだ。
個々の開発者がセキュアなコーディングを実践することで得られるメリットは大きいものの、実際にそれを組織にどのように定着させていくかについては、また別な課題が存在する。次回は、開発会社が「セキュア開発」の風土をどう根付かせるべきかについて考えてみたい。
SCSK株式会社
IT基盤ソリューション事業部
セキュリティソリューション部
主任 長尾 亮
Webアプリケーションエンジニアを経て2007年よりセキュリティ関連の業務に携わっている。年間40サイト以上の脆弱性診断に従事する一方、数多くの企業においてトレーニングを実施し、セキュリティ診断の内製化支援を手掛けている。
また海外のセキュリティ製品を取り扱っており、ワールドワイドでのセキュリティ事情にも精通