VAddyブログ

- 継続的セキュリティテストへの道 -

VAddyと脆弱性診断サービスの微妙な関係

VAddy Adventカレンダー23日目の記事です。

@vaddynet の中の人、西野です。

VAddyは開発者フレンドリーな脆弱性検査ツールです。 セキュリティの特別な知識が無くても自身が作ったアプリケーションの脆弱性検査(セキュリティテスト)ができます。

と、このように言うと「じゃあ脆弱性診断サービスは不要?」と聞かれることがあります。
※ここでいう脆弱性診断サービスとは、専門の診断会社(またはセキュリティチーム)による手動診断のことです。

結論から先に言います、完全に不要にはなりません。
今日の記事はその理由についてです。

機械で見つけられるもの、見つけられないもの。

脆弱性と言われるものには、いくつもの種類があります。SQLインジェクションXSSクロスサイトスクリプティング)と言われるような脆弱性は機械(ツール類)で見つけやすい一方、仕様なのかバグなのか分からない脆弱性もあります。

例えば、ログインして自分のユーザ情報を閲覧、編集できる画面のURLが、
https://www.example.com/user/3
https://www.example.com/user/3/eidt
のようなアプリケーションにおいて自分のユーザIDが3だった場合、これを4に変えたら他のユーザの情報が閲覧・編集できてしまうケースはどうでしょう?
仕様としてはNGだと人間はわかるのですが、機械がそれを自動で判断するのは困難です。

分かりやすい一例を挙げましたが、人(セキュリティのプロ)の目でしか見つけられないものもあるということを理解して頂ければと思います。 


カバーする範囲の違い

VAddyが対応するのはWebアプリケーションの脆弱性のみで、

という5つの脆弱性に対応しています。
Webアプリケーションの脆弱性と呼ばれるものの中には、場合によっては「対応しなくても良いもの」もありますが、VAddyとしては「発見されたら絶対に対応しなくてはいけない脆弱性」として、上の5つを定義しています。

脆弱性診断サービスはWebアプリケーション以外にもサーバOSやミドルウェア脆弱性にも対応します。会社によっては要件定義や設計の段階からの支援サービス(仕様的な脆弱性を作らない)を行っている場合もあります。 

OSやミドルウェアの場合はパッケージをアップデートしていけば基本的には問題が解決していきます。しかし、自分が開発するWebアプリケーションは自分で脆弱性を発見し、自分でパッチを書いて修正しないといけません。
VAddyは開発者が日々実行できる脆弱性検査ツールという位置付けなので、1日に何度も検査する必要のないOSやミドルウェア脆弱性は検査しません。

検査対象の項目を本当に重要な5種類に限定し、Webアプリケーションのみを検査することによって、1回の検査時間は他の検査ツールよりも圧倒的に早く終わります。
継続的インテグレーション(CI)とVAddyを連携した場合や、1日に何度も実行する場合には、短い検査時間というのは本当に重要なものです。必要な箇所に絞って早く終わらせるという思想でVAddyは設計されています。


VAddyと脆弱性診断の使い分け

ここまでVAddyと脆弱性診断サービスの対応領域の違いをお話しましたが、それではそれらをどのように使い分ければ良いのでしょうか。

一般的に、脆弱性診断サービスはお客様の要望にそった検査を行うオーダーメイドのサービスです。検査精度は高いもののそれなりの時間と費用がかかるので、例えば毎日診断を受けることは不可能です。

さらに、すべての画面を検査してもらう場合は料金も高くなるため、一般的には重要な画面に絞って検査してもらうことが多いようです。

繰り返しになりますが、VAddyの基本的な思想は「開発者自身で実行できる脆弱性検査ツール」です。開発者が日に何度でも検査を実行できるように料金も月額固定料金に設定しています。(予算が気になって検査を省略するのでは本末転倒です) 。
そして、検査する画面数は特に上限はありませんし、画面数によって料金が高くなることもありません。

私たちがユーザー様からお聞きしたVAddyと脆弱性診断サービスの使い分けは主に次のような感じです。

  • 日々の機能追加についてはVAddyで診断し、定期的(半年、一年ごとなど)に脆弱性診断サービスを利用
    VAddyで日々検査を行っておくことで、脆弱性診断では料金面から対象外とした画面の検査をカバー
  • 開発チームがVAddyで最低限の脆弱性を潰すことで、セキュリティ部門の負荷を下げる
    社内に開発部門とセキュリティ部門がある例です。一般的にセキュリティ部門の方が人数が少ないので、高負荷になっているそうです。

余談ですが、とある若手セキュリティエンジニアさんは、ベテラン開発者には脆弱性の指摘をしづらいのでVAddyを使って欲しいと言っていました(笑)

最後に

我々はVAddyと脆弱性診断サービスは補完しあうべき関係だと考えています。

VAddyは脆弱性診断サービスでは対応できない「高頻度な機能追加に対する検査」に対応しますし、脆弱性診断サービスはVAddyが検知できない「仕様上のバグ」あるいは「OSやミドルウェア脆弱性」をカバーします。両方をうまく使いこなすことで、安全なWebアプリケーションを速いサイクルでリリースすることができます。

とはいえ、今までまったく脆弱性検査をやったことが無い方からすると、脆弱性診断サービスは若干敷居が高いかもしれません(予算やスケジュールの意味で)。その場合はサインアップから最短5分で脆弱性検査が始められるVAddyを使ってみてください。有料プランを使っていただけると僕が喜びますが、無料プランでもSQLインジェクションXSSクロスサイトスクリプティング)の検査はできます。

理想的には上に書いたようなVAddyと診断サービスの組み合わせでWebアプリケーションをより安全なものにしてもらいたいのですが、まずはVAddyを使ってセキュリティ対策度を0点から80点にまで上げてください。最初から100点を目指すと挫折しますよ(笑)