近年、Webアプリケーションの「脆弱性診断サービス」を利用する企業が増えて来ている。進化する攻撃手法や技術的な環境変化に対応し、重要なサイトとデータを守るため、プロフェッショナルの手によるこうした診断サービスを活用するのは有効な方策の1つだ。
しかし、その診断で稼働中のアプリケーションに脆弱性が発見された場合、その改修にかかるコストは大規模になりがちである。その結果、発生する改修と検証によるシステム停止により生じる機会損失も無視できない。そのためには、開発プロセスの初期段階からセキュリティに関する要件を組み込み、設計・開発・テストといったリリースまでの各フェーズを通じて、実装と診断を確実に行っていくことが重要になってくる。
これまで、このシリーズでは、Webアプリケーションの脆弱性を取り巻く現状と、そうした脆弱性を突く脅威に対し、Webアプリ開発に携わるプロフェッショナルはどのような対策を打つことができるかについてフォーカスしてきた。
その中で、最も基本的な考え方として繰り返し強調してきたのは「開発の最終工程でのセキュリティ診断だけでなく、要求定義や仕様策定といった開発初期の段階からセキュリティに関する要件を考慮すること」だった。
「リスクマネジメント」をシステム開発のライフサイクルに組み込む
セキュアWebアプリケーションの開発支援サービス「Web Security Director」を提供するSCSKでは、要求定義や仕様策定といった開発初期の段階でセキュリティに関する要件を組み込む方法論として「リスクマネジメント」の手法を、ソフトシステムウェア開発のライフサイクル(System Development Life Cycle)に適用するという取り組みを提案している。
「Webアプリケーションの脆弱性診断サービス『Security Assessment』を提供しているなかで、脆弱性の存在するアプリケーションの多くは設計自体に問題があるケースが多くあります。そうした場合、根本的な作り直しが必要になります」と語るのは、SCSK ITマネジメント事業部門ITマネジメント第一事業本部の玉木 誠氏だ。
「こうした悲劇は、開発の初期段階からセキュリティ要件を考慮していれば防ぐことができたはずです。Web Security Directorでは、セキュリティに関する要件を検討する際に、開発するシステムの内容に応じて、生じうるリスクを明確にしてリスクをコントロールする、リスクマネジメントの手法をシステム開発のライフサイクルに適用します」(玉木氏)
リスクマネジメントの手法を、SDLCに組み込むというのは、どういうことなのだろうか。情報セキュリティの分野におけるリスクマネジメントに関する標準化された規格や文献としては、「ISO/IEC 27001」や「情報セキュリティ管理基準」(経済産業省)などがあり、実際に多くの企業ではこれらの標準に基づいてリスクマネジメントが行われている。しかし、これらの標準には、システム開発時における対策や要件定義の考え方も含まれているが、「多くの企業では、既存の情報システムの運用時におけるセキュリティ対策を検討するために利用されています」と玉木氏は指摘する。Web Security Directorでは、この方法論を「新たに構築するシステムの開発現場」に適した形で活用するという。
「リスクマネジメントというと難しく捉えられがちですが、『目標』を立て、それを『達成』しようとする継続的な取り組みにほかなりません。必要な枠組みは、『目標を定め、その目標を実現するための疎外要因を分析し、その要因に対してどう対応するかを考えて行動し、その結果を評価して、改善をする』というサイクルです。われわれはこうしたサイクルを開発業務に組み込んで行こうとしています」
セキュア開発に対しての取り組みは、これまでも多くの開発会社で行われてきたが、「どちらかというと担当者が個別にセキュリティ上必要な機能を考えて導入するといった状態になりがちで、体系的なリスクマネジメントの手法を取り入れて要件と機能を検討して実装されることは、あまりありませんでした」と玉木氏は言う。
Webアプリケーションのセキュリティに関する要件
SDLCは、開始フェーズ、開発/調達フェーズ、導入フェーズ、運用/保守フェーズ、そして廃棄フェーズの5つのフェーズからなる。「SDLCにセキュリティを組み込む場合、ステップごとにリスクマネジメント活動を行って行きます」
それぞれの活動については、「開始フェーズでは、開発するシステムの目的を明確化して、そのシステムに要求される外部からの要求やセキュリティポリシーを明確にします。そして、これらの情報をもとに『どういうシステムか』『誰が使うのか』『誰に使えてはいけないのか』『何ができる必要があるのか』『何ができてはいけないのか』といったシナリオを設定し、想定しうる脅威と開発時に可能な対策を洗い出します。この部分がSDLCにリスクマネジメントを組み込む部分です。さらに、開発/調達フェーズでは開発時のアーキテクチャや設計のトレードオフを検討して実現するべき機能を検討します。次の導入フェーズでは、システムのセキュリティ機能を、設定、有効化、テスト、検証します。最後に、運用/保守フェーズと廃棄フェーズが今まで、リスクマネジメントで対応されてきたフェーズになります」(玉木氏)
これらのリスクマネジメントに関する文献として、「NIST-SP-800-30」や「NIST-SP-800-64-rev.2」があり、Web Security Directorにおいては、これらを骨格としてサービスと提供していくという。また、『開発時に可能な対策の選択』には、「『ISO/IEC 27002』や『情報セキュリティ管理基準』などが参考になります」という。
また、設計においては、Microsoftが自社の製品開発で用いている「脅威モデル」を使った手法を用いて設計することによって、「設計時にセキュリティを考慮した設計をすることができ、結果的に妥当なセキュリティ設計を行うことができます」(玉木氏)
セキュリティ設計をチェックする場合には、「最少特権、職責の分離、知る必要性といった、セキュリティの基本要素を考慮しているか。機密性の機能、完全性の機能、可用性の機能を考慮しているか」(玉木氏)という視点でチェックするという。
この機密性の機能とは、例えば「認証や認可、アカウンティングの機能」であり。完全性の機能では、「改ざん検知や暗号化機能」などを指す。また、可用性の機能は、「フェイルセーフや耐障害性などの機能」という。
これらの機能が、最初に分析したリスクを低減するための機能として、設計に考慮されているか確認することで、セキュリティ要件が設計に漏れていないかをチェックするという。
SCSKのWeb Security Directorでは、この開発ライフサイクルにおけるリスクマネジメントの方法論と実践手法を、教育を中心としたサービスとして提供していく。もちろん、そこにはWebアプリケーション脆弱性診断サービスなどを通じ、多くのセキュリティに関する事例に向き合うことで蓄積されてきたノウハウも含まれる。コンピュータシステムやアプリケーションが、ビジネスに与えるインパクト、そして社会の中で担う責任は、今後もますます増大していくと思われる。今一度、自社の開発体制を見直し、セキュリティという観点での「品質向上」について検討してみてはどうだろうか。
SCSK株式会社
ITマネジメント第一事業本部
セキュリティソリューション部
Webセキュリティソリューションチーム
玉木 誠
情報セキュリティスペシャリスト、ネットワークスペシャリスト、CISSP、公認システム監査人(CISA)、公認内部監査人(CIA)。脆弱性診断やセキュリティ対策のコンサルティング業務に従事する。ネットワークエンジニア、情報セキュリティコンサルタント/システム監査人を経て、2010年から本業務に従事している。
ITシステム全体を考慮した、情報セキュリティ対策や情報セキュリティ管理に関するアドバイスを行っている。