VAddyとは?
VAddyは我々が開発している、「CIで脆弱性検査(セキュリティテスト)を」というコンセプトのサービスです。
Jenkins等のCIサーバを使い、JUnitやPHPUnitなどユニットテストや、Seleniumを使ったブラウザテストを行うというテスト(開発)手法は、一度慣れてしまうと元に戻れない安心感を与えてくれるものです。
しかし、テストの中でもまだ広く一般的にはCIに組み込まれていないのが、セキュリティテスト(脆弱性検査)とパフォーマンステストだと思います。
「CIで脆弱性検査(セキュリティテスト)を実施しよう」というアイデアは自然なものであり、特に英語圏では、ブログやカンファレンスの発表資料などでよく目にします。
それらのうち多くはOWASP ZAPとJekninsを組み合わせるというものですが、元々ZAPはGUIのツールとして開発されたこともあり、CIに組み込むのは意外と手間が掛かりそうな印象です。
VAddyはZAP等の既存のツールとは完全に異なり、最初からCIに組み込むために作られたサービスです。CIに手軽に導入して動くようにすることが可能となっており、またクラウド型(SaaS型)であるために管理の手間もありません。導入すると、コードがpushされるたびにSQLインジェクションやクロスサイトスクリプティングといったウェブアプリケーションの脆弱性がないかどうかをチェックしてくれます。
実際の開発の現場に導入してみました
VAddyを開発するにあたり、まずは自分たちで使いたくなるようなサービスであることが大事だと考えました。私たち(株式会社ビットフォレスト)はVAddy以外の他にもScutum(スキュータム)(詳しくはこちら)というウェブアプリケーションのセキュリティを守るサービスを開発し日々の運用を行っています。
Scutumでは元々、下記の構成でウェブアプリケーションの開発を行っていました。
- ソースコード管理: Git/BitBucket
- CIサーバ: Jenkins
- ビルド: Ant
- ユニットテスト等: JRuby/シェルスクリプト
- ブラウザテスト: Selenium
- アプリケーションサーバ: Tomcat
Gitで管理されているソースコードをBitBucketにpushすると、Hookを通じてJenkinsサーバ上のジョブが開始されます。JenkinsはBitBucketからソースコードをpullし、Antでビルドを行い、ユニットテスト等を行います。その後、ウェブアプリケーションはテストサーバ上で稼働しているTomcatにデプロイされ、JenkinsがSeleniumドライバを起動し、Tomcatに対してブラウザテストが行われます。
VAddyの導入後は、ブラウザテストに続き、JenkinsにインストールされているVAddyプラグインがVAddyの脆弱性診断をキックするようになります。VAddyプラグインはAPIをコールし、インターネット上のVAddyサーバがTomcatに対してSQLインジェクションやクロスサイトスクリプティングがないかどうかチェックを行います。仮に脆弱性が見つかった場合にはジョブはエラー終了し、メール等での通知が行われます。
仮にエスケープ漏れなどがある場合には着実に見つけてくれるため、より安心して継続的にアプリケーションをデプロイすることが可能になります。
既にSeleniumが使われている開発現場なら、VAddyは使わないと損!
VAddyでは正確に脆弱性診断が必要な箇所を特定するために、導入前に「クロール」と呼ばれる作業が必要となります。これは「対象となるウェブアプリケーションのフロー(画面遷移)がどのようなものなのかをVAddyに教える」ためのものです。
既にSeleniumが導入されている開発の現場の場合、この「ウェブアプリケーションのフロー」はSeleniumのテストそのものであり、VAddyへの「クロール」作業は殆どSeleniumを実行するだけで終わります。そのため、Seleniumが既に導入されている現場とVAddyの相性は最高で、導入しないと損であるとも言えるでしょう。
ぜひ、お気軽にVAddyを試してみてください。