こんにちは!takagitoです。TDCソフトでセキュリティ全般に取り組んでおります。
そろそろ、開発現場もシステムのセキュリティを考えなければならないじゃないの~?と漠然と思いつつ。じゃ、どうすりゃいいの?と思っている方はいらっしゃると思います。
みなさまご存知のように2011年5月にインテリアショップのWebサイトのWebサーバが攻撃を受け、7,000件近くのクレジットカード情報が流出するという事件が発生し、さらに驚いたことに、開発会社がセキュリティ対策漏れの責任を問われるといった事態に発展しました。
裁判所:「仕様書に記載はないがSQLインジェクション対策を怠ったことは重過失である」
ええ?!
開発会社はみな騒然としました。しかし、セキュリティやらなくちゃ~とは言ったものの対策は遅々として進まず。相変わらずセキュリティを脅かす事件は発生しております。昨年のものにはなりますが、以下主なもの。
- 2015年7月 菓子メーカーのWebサイトがSQLインジェクション攻撃を受け、約21万人分のWeb会員情報が漏えいした可能性があると発表
- 2017年2月 輸出企業のWebサーバがSQLインジェクション攻撃を受けたことにより最大10数万件分の顧客情報が流出
- 2017年5月 ラジオ局のサイトでSQLインジェクションにより個人情報2500件近くの漏えいが発生
Verizonの2018年の調査結果によるとデータ侵害の多くはWebアプリケーションを攻撃ベクトルとしているとのことです(これには、アプリケーションにおけるコードレベルの脆弱性の悪用と認証メカニズムへの攻撃が含まれる)。
というわけで、いよいよセキュリティを無視してシステム開発を行うというのは難しい(セキュリティを避けて通ることはできない)状況です。
今までのように運用開始前にセキュリティベンダーに診断してもらうといった通り一辺倒の対策では不十分で、設計フェーズからしっかりとセキュリティを作り込んでいくという開発のライフサイクル全体を通しての対応が必要なのではないでしょうか。
そこで今回は、セキュリティ開発ライフサイクルを取り上げ、まずはどのようなものなのかを見ていきたいと思います。
■セキュリティ開発ライフサイクルとは
Security Development Lifecycle(SDL)とは、2004年にマイクロソフト社が提唱した、安全なソフトウェア製品開発のための開発プロセスのことです。
正式には「信頼できるコンピューティングのセキュリティ開発ライフサイクル(Trustworthy Computing Security Development Lifecycle: SDL)」と称します。(https://securityblog.jp/words/852.htmlより)

Japanese_Simplified Implementation of the SDL.docx
もう少し分かりやすい例もありました。

https://www.ogis-ri.co.jp/pickup/oss/license/docs/SecurityDays2017_OGIS.pdf
また、大手SIerの中の方でも次のように発言しており、セキュリティの意識は高くなってきているようです。以下、抜粋。
攻撃を受けやすいWebアプリケーションの開発では特に「上流工程からセキュリティ対策を施すことが重要となる」
NTTデータの例 https://tech.nikkeibp.co.jp/atcl/nxt/mag/sys/18/091900038/091900005/
マイクロソフトのモデルの場合、「セキュアコーディング」など個々のスキルによるものは、トレーニングのフェーズに含んでいるようです。
それを踏まえると「セキュリティリスク分析」、「セキュアコーディング」、「セキュリティテスト(ファジーテスト、診断系)」は共通している部分は、必須といった感じでしょうか。
このように開発ライフサイクルに合わせて、セキュリティを確保するための作業が実は存在しています。
今までは、機能要件を満たすことに精いっぱいでセキュリティ要件を満たす、あるいはセキュリティ要件を考えること自体疎かにしていたかもしれませんが、インシデントの発生が減らないといった実情を踏まえるといよいよセキュリティ開発ライフサイクルに真剣に取り組む時期に来ているのではないでしょうか。
いきなりすべてのシステムを対象とするとセキュリティ対策の幅も広くなりすぎて収集が付かなくなりそうなので、まずは攻撃を受けやすい外部公開しているWebシステムのセキュアシステム開発ライフサイクルに絞っても良いかもしれません。
今後、アジャイル開発の推進と相まってWeb系システムの開発が増えてくると、セキュリティはますます重要な課題となってくるでしょう。
その時にあわててセキュアなシステム開発手法といっても遅きに失するといったことになるでしょう。手遅れにならないように今から手を打っておくのが賢明かと思われます。