セキュリティテスト手法「ファジング」による脆弱性低減を! ~外部からの脅威に対し、製品出荷前に対策強化するために~ 2014年5月14日 独立行政法人情報処理推進機構 技術本部 セキュリティセンター 情報セキュリティ技術ラボラトリー
アジェンダ
• 製品開発におけるテストと脆弱性 • ファジングとは • ファジングによる効果 • IPAのファジングに関する取組み 2014/05/14 2製品開発におけるテストと脆弱性(1/4)
~品質を確保するためのテスト~ • 製品開発における様々なテスト • 機能テスト • システムテスト • 構成テスト • 回帰テスト • 受け入れテスト 「バグ」(*)を減らして、高い品質の 製品を提供する。 (*):ここでは、バグを「ソフトウェア製品が仕様通りに動作しなくなる等の問題」と定義 1.要件定義 2. 設計 3. 実装 4. テスト 5. 運用 / 利用 6. 廃棄 開発 ラ イ フ サ イ ク ル製品開発におけるテストと脆弱性(2/4)
~ソフトウェアの脆弱性~ • このような話をよく聞きます – パソコンへのウイルス感染 – 組織/企業への不正アクセス • これらの事件などの原因の一つ – ソフトウェアの脆弱性 「コンピュータ不正アクセスやコンピュータウイルス等の攻撃により、 その機能や性能を損なう原因となり得るセキュリティ上の問題箇所」。 ここでは、「ソフトウェア製品を強制的に終了させてしまう」バグも、(広 義的に)脆弱性に含めます。 「脆弱性」とは 4 2014/05/14製品開発におけるテストと脆弱性(3/4)
~組込み製品の脆弱性~
• 組込み製品の脆弱性による被害事例
製品開発におけるテストと脆弱性(4/4)
~従来のテストを補う「ファジング」~ • 機能テストだけでは脆弱性の検出は難しい – テストの良し悪しではなく、テストの網羅性 • 機能が動作することを確認するテストデータ • 異常な動作を確認するテストデータ – 機能テストなどでは次のようなデータでテストしますか? • 「AAAAAAAAAAAAAAAAAAA・・・」 • 「%s%s%s%s%s%s%s」 このようなデータでテストする手法:「ファジング」
6 2014/05/14• 一般の使用では考えられない、問題が起きそうな細工 をしたデータを検査対象に送る ..など • 細工したデータを送り、製品の応答や動作を監視して 、製品に問題が発生しないかを検査する
ファジングとは(1/6)
~どのようなテストか~ファズ
(Fuzz) AAAAAAAAAAAAAAAAAAAAAAAAAA %s%s%s%s%s%s%s%s%s%s%s%s%ファジングとは(2/6)
~HTTP テストデータの細工例~
• ツールによる自動的なテスト – 多種多様なデータの生成、送信を自動で行う – 手動で同様のテストを実施する場合に比べ、細工したデ ータの作成や送信等の工数を抑える
ファジングとは(3/6)
~自動的なテスト~• ファジングに使われるツール – 商用ツール(アルファベット順) • Codenomicon Defensics • Raven – フリーソフトウェア(アルファベット順) • ISIC • Taof • Peach 出典:「ファジング活用の手引き」 http://www.ipa.go.jp/security/vuln/documents/fuzzing-guide.pdf
ファジングとは(4/6)
~ファジングツール分類~ 2014/05/14 10• 各ツールの検査可能な対象 TCP/IP ・ Bluetooth 802.11・MP3・PNG 他 Codenomicon Defensics Raven Taof TCP/IP ・ HTTP FTP・SNMP・IPv6 他 HTTP ツール名 ファジング対象 (通信プロトコル、アプリケーションなど) 商 用 フ リ | HTTP ・ FTP UPnP・wav 他 IP ISIC Peach
ファジングとは(5/6)
~ファジング対象ごとのツール~ファジングとは(6/6)
~ファジング活用の事例~
• Mozillaプロジェクト
– https://blog.mozilla.org/blog/2013/07/30/mozilla-continues-to-build-the-web-as-a-platform-for-security/
ファジングによる効果(1/3)
~未知のバグや脆弱性の発見~ • 一般的な機能テストでは、発見が難しいバグや未知の 脆弱性などを、ファジングで検出できる 一般的な機能テスト①~③ では、発見が難しいバグや 未知の脆弱性が残る ファジングを追加すると、 発見が難しいバグや未 知の脆弱性が少なくなるファジングによる効果(2/3)
~「バグ出し」に活用できている例~
• Microsoft 社の事例ではファジングでバグを1800件検出
“Microsoft runs fuzzing botnet, finds 1,800 Office bugs”
http://www.computerworld.com/s/article/9174539/Microsoft_runs_fuzzing_botnet_finds_1_800_Office_bugs