GauntltコアチームのJames Wickett氏はVelocity Conf Londonで,アプリケーションのセキュリティレベルに関するフィードバックの迅速化を目的とした,継続的インテグレーションサイクルへのセキュリティテスト統合についての解説を行った。氏が強調したのは,継続的デリバリによるリリースデリバリ率の増加に伴う,定期的セキュリティチェックの重要性だ。リリース後のセキュリティチェックと長期的な外部監査では,氏によれば,もはや十分とは言えない。アプリケーションの安全を維持し,セキュリティ低下を防止するためには,運用(Ops)と開発(Dev)双方への継続的なフィードバックが必要なのだ。
Gauntltはこの考えを実践するために,ビヘイビア駆動開発のツールとして評価の高いCucumberと,一連のオープンソースのセキュリティテストツールをベースとした,セキュリティテスト自動化フレームワークを提供している。GauntltはRuby gemとして入手可能なので,継続的インテグレーションのデリバリパイプラインの一部として,Ruby環境でテストを実行することができる。次の例では,Cucumberの場合と同じようなHTMLテストを生成する:
bundle exec gauntlt --format html > out.html
Gauntltには,事前に定義された一連の”アタックアダプタ”と,それを使ったアタックをまとめたセットが同梱されている。アタックアダプタはアタックの各ステップを,種類別に実行可能なセキュリティツールにマッピングしたものだ:
- Arachni (XSSのテスト)
- Garmr (ログインフロー内の新なたログインページや安全でない参照のテスト)
- SQLmap (SQLインジェクション攻撃のテスト)
- dirb (Webオブジェクト設定のテスト)
- SSlyze (SSLサーバ設定のテスト)
- NMap (想定外のオープンポートに関するテスト)
現在のツールセットを拡張するのは,特殊な既定ステップを使ってバイナリコマンドラインの呼び出しを指示し,その実行後の出力をチェックする方法でのみ可能である。
port-check.attack
というアタックファイルでは,対象ホストに想定外のポートがオープンされていないことを確認するためにnmap
を使用するかも知れない:
Feature: nmap attacks for example.com
Background:
Given "nmap" is installed
And the following profile:
| name | value |
| hostname | example.com |
Scenario: Verify that there are no unexpected ports open
When I launch an "nmap" attack with:
"""
nmap -F <hostname>
"""
Then the output should not contain:
"""
25/tcp
"""
氏は "頑丈なソフトウェアマニフェスト(Rugged Software Manifesto)” に触発されて,アプリケーションのセキュリティテストに対する強い主張を持ったフレームワークとしてGauntltを作り上げた。その最終的な目標は,開発(Dev),運用(Ops)とセキュリティチームとのコミュニケーションの促進だ。 セキュリティ的考慮と監視機能をDevOpsに統合するというテーマでは,DevOps Weekly創刊者のGareth Rushgrove氏も,セキュリティ監視に関する記事の中で取り上げている。