地の利を得る攻撃者たちに、ソフトウエア開発者はテストで立ち向かえ:クラウド、IoT時代のセキュリティテストとは(1/2 ページ)
クラウドやIoTの普及とともに、ソフトウエアは一層複雑さを増し、攻撃者たちはますますアドバンテージを得つつある。ソフトウエア開発者はこの状況にどのように立ち向かえばよいのだろうか。近年、セキュリティソリューションの拡充に力を入れるシノプシスのマーケティング担当バイスプレジデントで、2015年4月にシノプシスに買収されたCodenomiconの元CEO デビッド・シャルティエ氏に、セキュリティテストにおいて開発者が留意すべき事項と具体的な対策について聞いた。
サイバー攻撃による経済的被害の規模が増大し、セキュリティインシデントに関する報道も増加している昨今、開発者にとってソフトウエアの脆弱(ぜいじゃく)性対策は無視できない課題となっている。一方で、クラウドやIoTの普及とともにソフトウエアを構成するコンポーネントの多様化・複雑化はますます進行し、ビジネスサイドからの開発スピードに対する要求も激化してきている。
一層シビアになっていくソフトウエア開発とセキュリティをめぐる環境に、開発者はどのように対処していけばよいのだろうか。
本稿では、半導体設計・シミュレーション分野から出発した後、多くの企業買収などによってソリューションのカバー範囲を広げ、近年ではソフトウエアのセキュリティテスト製品の拡充にも力を入れるシノプシスのマーケティング担当バイスプレジデント デビッド・シャルティエ氏に、クラウド、IoT時代にソフトウエア開発者が留意すべきセキュリティ面での重要事項と、具体的な対策について聞いた。シャルティエ氏は、2015年4月にシノプシスによって買収されたセキュリティ企業CodenomiconでCEOを務めていた人物だ。
最大の敵は「複雑性」
編集部 クラウドやIoTが普及したとき、ソフトウエアのセキュリティ面では何が課題となるか。
シャルティエ氏 ひと言でいえば「複雑性」だ。米国のセキュリティ専門家であるブルース・シュナイアー氏が述べているように、「セキュリティの最大の敵は複雑性」だといえる。
現在のソフトウエアはマイクロプロセッサーなどのハードウエアから最上位のアプリケーションに至るまでの各レイヤーにおいて、さまざまなベンダーのハードウエア/ソフトウエアコンポーネントを組み合わせて構成されている。クラウドやIoTが普及すると、こうしたコンポーネントの分散化やヘテロジニアス化がますます進行する。あらゆるベンダーのデバイスやアプリケーション、多様なプラットフォームが、さまざまなプロトコルの下に相互接続され、ソフトウエアの複雑性がさらに増大するのだ。このことがセキュリティ上のリスクをもたらす。
編集部 ソフトウエアの複雑性が増大することが、攻撃者にメリットをもたらすということか。
シャルティエ氏 その通りだ。例えばIoTにおけるコネクテッドデバイスの増加は、攻撃者目線では「攻撃面積の拡大」を意味する。現在、攻撃者は大きなアドバンテージを得ている。
もっともっとテストせよ――静的解析は日次で、ファジングは週次で
編集部 では、セキュリティリスクが増大する状況において、ソフトウエア開発者はどのような対策をとればよいのだろうか。
シャルティエ氏 答えはとてもシンプルだ。もっともっとテストをすることだ。まず、コードの静的解析を行い、バグがないかチェックする。そしてファジングを行い、アプリケーションに未知の脆弱性が存在しないかを検証する。同時に、ソフトウエアで使用しているサードパーティーのライブラリなどに既知の脆弱性が含まれていないことを確認する、といったように、あらゆる方向からのテストを徹底することが重要だ。
編集部 静的解析などによるソフトウエアの品質テストが、セキュリティを確保する上で重要だということか。
シャルティエ氏 そうだ。セキュリティ被害の90%は、ソフトウエアの品質の低さが原因となって引き起こされている。ソフトウエアの品質とは、すなわち「静的解析やファジングなどのテストで、どれだけのバグが検出されるか」ということだ。この品質を高めること、つまりバグの件数を減らすことが、そのままセキュリティに直結する。
編集部 近年のソフトウエア開発では、セキュリティと同時に開発スピードが要求されるが、テストの徹底とスピードはどうすれば両立させることができるか。
シャルティエ氏 テストの自動化と、早期実施だ。例えばアジャイル開発ではテストの自動化が必須だとされている。ツールを使って可能な限り多くのテストを自動化するのが望ましいだろう。わたしたちは、設計段階におけるアーキテクチャの検証から、リリース前のアプリケーションのテストまで、ほとんどは自動化が可能だと考えている。
また、開発サイクルの中で、新規に開発したコンポーネントや変更された箇所など、構築が不十分だと思われる部分は優先して早期にテストを行うのが望ましい。弊社の経験からいえば、コードの静的解析は日次で、ファジングは週次で行うケースが多いようだ。テストを早期に行うほど、バグフリーの製品を早く安く作ることができる。
編集部 シノプシスではテストをどのように行っているのか。特徴的な試みなどはあるか。
シャルティエ氏 もともとシノプシスでは、2014年2月にコベリティを買収する前から、同社のテストツールを何年も使ってきている。われわれのテストに特徴があるとすれば、自社製品から得たノウハウを自社製品に適用しているということだ。例えば、「Code Advisor」という製品の出荷前には、Code Advisorを使ってCode Advisor自身をテストしている。意外かもしれないが、セキュリティ製品のベンダーというのは、自社製品のセキュリティをおろそかにしていることがある。名前は出せないが、先日もあるセキュリティベンダーの製品にHeartBleed脆弱性を発見し、報告を行ったところだ。
Copyright © ITmedia, Inc. All Rights Reserved.