• 検索結果がありません。

RailroadMap による外部ツールの実行管理

第 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)し ており、誰でも自由に利用することが可能である。

次の章では、この章の実験結果を元に、提案手法についてその有効性を評価する。

Outline

関連したドキュメント