第 4 章 提案手法のツール化と実験
4.6 既存のセキュリティテスト手法との比較
4.6.2 RailsGoat を用いたセキュリティテストツールの比較
4.6.2.3 RailroadMap による外部ツールの実行管理
今回、外部テストツールの評価を実施するにあたって、RailroadMapを用いて、
今回用いた外部テストツールを管理している。特に脆弱性スキャナを用いた動的 テストの実行には、認証情報の付与が必要であるため、セキュリティ要求を把握
しているRailroadMapを用いて、実行設定ファイルの準備や、実行オプションの
付与を行う。実行設定については、実行速度を優先したため、Railsgoatに最適な
32http://www.backtrack-linux.org/
設定になっているとは言いがたいが、安定したテストの実施が可能となる。今後、
設定をチューニングすることで検知できる脆弱性は増加する可能性がある。
4.6.2.4 外部ツールの実行結果
以下に、個別の脆弱性についてその特徴と検出結果をまとめる。
A1 INJECTION Railsgoatには SQL Injection と Command Injection の脆弱 性が仕込まれている。Brakeman、RailroadMap は双方の脆弱性を検出で きた。
A2 BROKEN AUTH Railsgoatでは独自の認証を実装しており、認証に関する 3つの脆弱性が独自実装部分に仕込まれている。今回テストしたツールでは 検出できなかった。
A3 XSS 文字列にサニタイズ済みのフラグを与える“html_safe”によりクロスサイ トスクリプティングの脆弱性が仕組まれている。RailroadMapは“html_safe”
をセキュリティ機能の無効化コマンドとして扱うため、その使用箇所に警告 を発する。
A4 INSECURE DOR Direct Object Reference (DOR、直接参照)と呼ばれるの 脆弱性が仕込まれている。RailroadMapは2つ検出したが、一つは擬陽性 であった。
A5 MISCONFIG 設定ファイルに2箇所誤ったフラグ設定が仕込まれている。
Rail-roadMapは設定の問題にはホワイトリストで対応しており、この2つの設
定ミスを検出した。
A6 EXPOSURE 暗号化やソルトを使わないパスワードの保存と、プライバシー に関する情報の平文による保存の2つが仕込まれている。前者に関しては、
RailroadMapは独自実装の認証機能ということで警告を発している。
A7 ACCESS Railsgoatは独自実装のアクセス制御を用いていおり、その不備。こ れについても、RailroadMapは独自実装の認証機能ということで警告を発 している。
A8 CSRF Cross Site Request Forgery (CSRF)の脆弱性。Railsの場合は “pro-tect_from_forgery” コマンドを適切に使用する必要がある。
Application-Controllerでの呼び出しの有無を確認すれば良いので、静的テストでの検
知は容易であり、Brakeman、RailroadMapは検出している。動的テストで も、トークンを保持しているHidden Field の確認と操作で検知が可能であ り、skipfish、W3AFが検出した。
A9 COMPONENTS 脆弱性のある既知のコンポーネント(2つ)の使用。 bundle-audit、codesake-dawnはすべて検出。brakemanは一つのみ検出した。
A10 REDIRECTS ユーザー入力のデータを検証なしに用いたリダイレクトの脆 弱性。RailroadMapは検出。
EXTRAS Mass Assignment Mass AssignmentはRails固有の脆弱性である。
これは、静的テストで容易に検知できる。動的テストでも内部モデルの情報
(ソースが公開されている場合等)があれば容易に確認可能である。ただし、
一般の脆弱性スキャナでは内部のデータモデルを知らないためその検知は難 しい。Brakemanが検知。
EXTRAS Constantize 外部入力からパス生成する際に、不正なファイルアクセ スを許してしまう問題。対策としては入力値の検証や、フィルターを行う。
検知する場合は、param[:name]のような外部入力を直接利用している箇所 を検知し指摘する。コードレビューで問題がない場合は、関連する脆弱性タ イプを指定し、テストケースを生成。実際の挙動に問題がないか確認する。
Brakemanが検知
以上の評価結果を表4.21にまとめる。
表4.21: 各種ツールによるRailsgoatのセキュリティテスト結果
Tool A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 EX
bundle-audit – – – – – – – – 2/2 – –
Brakeman 2/2 0/N 1/1 1/2 2/2
Codesake-dawn 2/2
skipfish 1/1
W3AF 1/1
ZAP
Railroadmap 2/2 9/N 2/N 2/2 1/2 1/1 1/1 – 1/1
4.6.3 まとめ
以上の比較から、提案手法を実装したRailroadMapが様々な脆弱性に対応可能 である事がわかった。ただし、Rails向けの静的検証ツールの性能は向上しており、
検出能力も今後向上してゆくと思われる。
4.7 まとめ
以上、4章では、提案手法をRails向けのツール、RailroadMapとして実装する ことで、提案の実現可能性を検証した。また、提案手法の主要機能である、セキュリ ティ要求にもとづいたセキュリティ機能の静的検証(機能2、3)、セキュリティテス トカバレッジの計測(機能4)、セキュリティ知識と実装との対応(機能5)について、
様々な実アプリケーションに対して適用実験を実施した。本ツールは、MITライセ ンスのもとでGithubで公開(https://github.com/munetoh/railroadmap)し ており、誰でも自由に利用することが可能である。
次の章では、この章の実験結果を元に、提案手法についてその有効性を評価する。