...

ROBUSTNESS TESTING

by user

on
Category: Documents
24

views

Report

Comments

Transcript

ROBUSTNESS TESTING
ROBUSTNESS TESTING
The First Security Defense is Quality
Ari Takanen, CTO
Codenomicon Ltd.
“Thrill to the excitement of the chase!
Stalk bugs with care, methodology, and
reason. Build traps for them.
....
Testers!
Break that software (as you must) and
drive it to the ultimate
- but don’t enjoy the programmer’s
pain.”
[from Boris Beizer]
Codenomicon Ltd.
•
•
•
•
ソフトウェアにおけるセキュリティの
問題を除去するロバストネステスト
ツールの開発
1996年より学術的分野(PROTOS)
において、さらに2001年からは商
業分野におけるリーダー
本社:フィンランド、
カリフォルニア、香港にもオフィス
テレコミュニケーションやインターネ
ットテクノロジにおけるリーダー企
業を50社以上顧客に持つ
セキュリティにおけるホットなトレンド
モバイルデバイス
• 多数のサービスと敵意のあるペイロード
次世代のネットワーク
• VoIP
• IPTV
• IPv6
ワイヤレスデバイス
•
•
•
•
WiFi / WLAN
WiMAX
Bluetooth
ZigBee
産業のネットワーク
• SCADA
SWのセキュリティ = SWの品質
セキュリティの関する事件とは、外部に漏れてしまったQAの問題のことである
NIST/ICAT Vulnerability Databaseからの統計
Vulnerability type
2002
2001
2000
Input validation
662
51%
744
49%
357
36%
Overflow
287
22%
316
21%
189
19%
Access validation
123
9%
126
8%
168
17%
Exceptional condition
117
9%
146
10%
119
12%
Design
408
31%
399
26%
160
16%
68
5%
74
5%
81
8%
Configuration
• 脆弱性の5-8%は設定の問題
• 16-31%の問題は、誤ったデザインの実行によるもの
• 不具合の約60-80%は、プログラマによる実装の誤り
– input validation、overflows、access validation、exceptional conditions
等々
セキュリティテストの様々な方法
内部でのマニュアルテスト
委託テスト
テスト/セキュリティのツール:
•
•
•
•
•
ソースコード監査ツール
パフォーマンステストツール
ペネトレーションテストとセキュリティスキャナ
Webセキュリティテストツール
ロバストネステストスィート
ペネトレーションテストとセキュリティスキャナ
ほとんどのペネトレーションテスタは、ネットワークにおけ
る既知の問題を手動で、もしくは自動ツールで探す
これらのセキュリティスキャナは、標準的なオペレーティ
ングシステムと、広く使用されているサーバ・クライアント
の既知の問題を探す
ウィルススキャナのように機能し、既知の攻撃と脆弱性を
照合する
これらは常に事後対応となるためR&Dにおいては有用で
はない。すなわち、バグが発見される前に知っておく必要
があるので。
WebテストとFuzzingツール
Webセキュリティテストツールは、HTTP上のWebアプリケーション
をテストする。しかし、実際のwebサーバのコンポーネントやwebp
ロキシといったインフラのコンポーネントをテストするわけではない
非常に良いテスタである。しかし、webアプリケーションとデータベ
ースしかテストできず、通常SQL injectionの不具合を探すだけで
ある
Network FuzzersとProtocol Mutatorsは通常、トラフィックを記録
し、変更・再生する装置である
ランダムなfuzzテストでは、テストの範囲は極めて限られる
そのため、システマティックな自動テストスィートがR&Dやセキュリ
ティに携わる人々に好まれている
ブラックボックステストのカテゴリ
コンフォーマンス
パフォーマンス
ロバストネス
インターオペラビリティ
セキュリティテスト(誤った例)
ポジティブ(コンフォーマンス)テスト:
• ”username”、”password”
リソースの消費(パフォーマンス)
• 高速の繰り返し、または複数のセッションをオープン
ネガティブ(ロバストネス)テスト:
•
•
•
•
要件: ”username”、”invalid”
既知の問題: ”valid user”、”password”
疑わしい入力: 512 x ”a”、512 x ”1”
システマティックテスト: <null>、特定のキャラクタ、…
代表的なエラーの状態
プロセスクラッシュ
• 可能であればリスタートされる
• テスト対象のシステムのリセット/
クラッシュ
•Segmentation fault (core dumped)
•%
リソース消費
•
•
•
•
•
過度のCPU消費とビジーループ
メモリ消費
メモリリーク
ファイル処理、例:リーキング
過度のロギング
予期しない問題
• ログファイルの汚染
• 障害の伝播
•Program terminated with signal 11,
•Segmentation fault.
%
PROTOS Research:セキュリティのためのベースラインの作成
Codenomicon Test Tools
スマート、システマティック、自動的なテス
ト
• プロトコルモデルとシミュレーションに基づく
• 数万種類に及ぶ、入念に作成された例外的な攻
撃メッセージシーケンスを実装
• 繰り返し可能、ドキュメント
• ランダムではない
あらゆる業界標準の通信インタフェースを
テスト(100種類以上のプロトコル)
• 有線及び無線、ペイロード/ファイルフォーマット
完全なブラックボックス
• ソースコードは不要
• 規格に基づくあらゆる実装をテスト可能
Tools run
on:
QuickTime™ and a
TIFF (Uncompressed) decompressor
are needed to see this picture.
R&Dにおけるソフトウェアセキュリティの重要性
SWセキュリティ = SWの品質
•
•
セキュリティの問題は開発中に生み出される
テストによってソフトウェアのセキュリティの問題を防止できる
99.99%信頼できる = 100% 脆弱である
•
•
全ての問題を発見し解消する必要がある
攻撃者は一つだけ見つければよい
できるだけ早い段階で、また頻繁にテストを行う
•
•
セキュリティ/信頼性の問題が初期に発見されれば、修正のためのコストは低く済む
セキュリティ/信頼性のテストはレグレッションテストにおいて実行されるべき
規格を基に、良好でシステマティックなテストが作られる
•
•
プロトコルテスタは、幅広い規格をサポートする必要がある
テストの品質におけるセキュリティテスタの基準
プロトコル: SimpleとはTrivialのことではない
<protocol> = <message> # sent encrypted
<message> = <type> <length> <value> <crc32>
<type> = 0x00-0xff
<length> = 0x0000-0xffff
<value> = 0..0xffff * 0x00-0xff # defined by type
<crc32> = 0x00000000-0xffffffff
FAILED TEST
CASES
Codenomicon Toolsによる利益のサマリ
リスクの削減:
• ロバストネスとセキュリティに関連するソフトウェアの不具合への事前のアプローチ
• サービス停止のように、メディアの興味を引く不具合の解消
• 製品の信頼性の問題
開発とテストのコストの削減:
• テストは自動化される:少ないリソース、コスト、時間で、広い範囲をテストできる
• 数万のすぐに実行可能なテストケース – テストケースの計画とデザインは不要
管理コストの削減:
• 顧客に発見される不具合の削減
• セキュリティに関連したパッチの導入の数を最小化
ソフトウェアの品質に対する認識を得る:
• ソフトウェアのコンポーネントの品質のメトリクスを、そのソフトウェアが使用されて
いる間、得ることができる
Codenomicon Ltd. – Robustness Testing Tools!
[email protected]
http://www.codenomicon.com
Fly UP