クラウド型Web脆弱性診断ツール VAddyブログ

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

2015年に「その発想はなかった」から「当たり前」になる、CIでの脆弱性検査(セキュリティテスト)

image

VAddyコア部分を開発している金床です。

2014年もそろそろ終わりに近づきました。今年のはじめには1行のコードすらも存在していなかったVAddyですが、春頃から市川氏と私がノリノリになったこともあり、現在は無事にJenkinsプラグインまで完成し、当時イメージしていたCIへの自然な統合が可能な状態となっています。実案件に組み込む例も出てきており、振り返ってみれば2014年は非常に手応えを感じた年にすることができました。

CIは広く普及し始めています。基本的にはビルドやユニットテストを頻繁に実行することで、デプロイ時の心理的、または実際の負荷を下げるために利用されていると思います。

VAddyはCIのサイクルの中でSQLインジェクションクロスサイトスクリプティングのような、いわゆるウェブアプリケーション脆弱性診断を行うためのサービスです。

私がVAddyのアイデア(CIに組み込むための脆弱性検査サービス)を初めて市川氏から訊いたのはもうずいぶん前になります。最初の印象は「うわっ、その発想は無かったな」というものでした。

私はVAddyの開発者であるとともに、世界初のSaaS型のWAF(ウェブアプリケーションファイアウォール)であるScutum(スキュータム)の開発者でもあります。Scutumは私が所属する株式会社ビットフォレストと、ウェブセキュリティのプロ集団である株式会社セキュアスカイテクノロジー(通称SST)がお互いに力を合わせて作り上げたサービスです。そのSSTの社長である乗口さんの言葉で印象的なのが、「普通に開発を頼んでも、セキュリティとパフォーマンスは付いてこない」というものです。私自身の経験としても非常に納得がいくもので、確かにごく普通に要求仕様に沿ってアプリケーションを作っていく場合、セキュリティとパフォーマンスは(明確に仕様に含まれていれば別だと思いますが)最後まで忘れられているケースが少なくありません。

さてCIです。CIではいろいろなテストが自動的に実行されますが、ここでもセキュリティとパフォーマンスは忘れられていることが殆どだと思います。しかし、2014年の現時点では確かにそうかもしれませんが、2020年、あるいは2025年にはどうなっているでしょうか?

CIと連携して、各種テストが通った場合に自動的にデリバリ(あるいはデプロイ)まで行ってしまう、CD(Continuous Delivery)というアプローチも注目を浴びています。実際、デプロイの手法として、一度慣れてしまうとこれ以外の方法には戻れなくなるくらいのインパクトがあります。

本番環境にデプロイする前に、セキュリティテスト(脆弱性検査)とパフォーマンステストの両方が済んでいる状態がもちろん理想的です。ならばこれらもCIに組み込んでしまうのが自然であり、慣れてしまえば「当たり前」になるだろうと思います。

最小限のソフトウェア開発は、実際に動作するコードだけを書くものです。私も以前はそこからスタートしています。そして、ある時点からユニットテストに代表される、テストコードも書くようになりました。

初めて「テストするコードを書く」という概念を知ったときには「その発想はなかった!」と思いました。当時私がやっていた「テスト」は、動くコードをデプロイしてから、手動で実際にそのシステムをユーザとして使ってみて、きちんと動作するか都度確認するというものでした。書いたコードはすべてそのソフトウェアに含まれるものでした。「テストのためだけに書くコード」という存在は、想像すらしていなかったのです。

最初は面倒くさいと感じたテストコードですが、蓋を開けてみれば圧倒的なバグ混入率の低下が実現され、すぐに当たり前になりました。「その発想はなかった」から「当たり前」になるのは、意外とあっという間です。

話は少し脱線しますが、ジョブズiPhoneによって「当たり前」にしたタッチインターフェースも、初めて見たときには(コンピュータを操作する方法として)「その発想はなかった」と思いました。しかし、いまや自然で「当たり前」すぎて意識すらしません。

CIに脆弱性検査を組み込むという発想も、はじめは「その発想は無かった」と感じましたが、考えてみればみるほど自然であるように思えてきました。特にSeleniumを使ったブラウザテスト等が既に用意されている場合には、俗に「クロール」と呼ばれるウェブアプリケーションの状態遷移が、ドキュメントとしてではなく、実際に動く情報として整備されていることを意味します。脆弱性検査はそのウェブアプリケーションに合わせた画面遷移の情報が必要になるので、Seleniumのテストデータと非常に相性が良いのです。このことに気付いた私は市川氏に対して「これは絶対にいいアイデアだ!」と意気投合し、当時はまだVAddyという名前も決まっていなかった「CIに組み込むための脆弱性検査サービス」がスタートすることになったのです。

2015年にはよりVAddyを前進させ、多くの人にとって、CIにおける脆弱性検査が「その発想はなかった」から「当たり前」になるようにしたいと考えています。

2015年もVAddyをどうぞよろしくお願いします!