®
IBM Software Group
© 2007 IBM Corporation
Web アプリケーションセキュリティ対策の現状とその最新技術
2008/11/7
IBM Software Group | Rational software
2
目次
Web アプリケーションのセキュリティ問題とその対策の現状
日本アイ・ビー・エム(株) ラショナル事業部 雨宮 吉秀
WebWebアプリケーションのセキュリティ検査技術アプリケーションのセキュリティ検査技術((汚染解析と文字列解析)汚染解析と文字列解析)
日本アイ・ビー・エム(株) 東京基礎研究所 立石 孝彰
®
IBM Software Group
© 2007 IBM Corporation
Web アプリケーションの安全性を脅かす問題
IBM Software Group | Rational software
4
Web アプリケーション アーキテクチャ
SSL FirewallIPS
Anti Virus
Internet
Transport Network Application DatabaseClient
ポート 80(http)とポート443(https) はオープン
暗号化されたデータやエンコードされたデータは、そのまま通過
IBM Software Group | Rational software
5
攻撃例 1 - SQL インジェクション
SELECT * FROM users WHERE username=' ' AND password=' '' OR '1' = '1jsmith
' OR '1' = '1*************
IBM Software Group | Rational software
6
攻撃例 1 - SQL インジェクション (続き)
IBM Software Group | Rational software
7
SQL インジェクション テストパターン例
IBM Rational AppScan Ver 7.7 の例
IBM Software Group | Rational software
8
攻撃例 2 - クロスサイト スクリプティング
IBM Software Group | Rational software
9
攻撃例 2 - クロスサイト スクリプティング (続き)
http;//www.hackmebank.com/login.aspx?uid=“><script%20src=“http://www.evilpat.com/hacks/hack.js”></script><…
IBM Software Group | Rational software
10
攻撃例 2 - クロスサイト スクリプティング (続き)Evil.org
User bank.com
1) bank.comへのリンクをメールやHTTPで送信して
クリックさせる
2) スクリプトが混入されたデータを送信
3) スクリプトが混入されたままのデータを返信、
ブラウザで実行される
4) スクリプトが、クッキーと
セッション情報をユーザに気づかれないうちに送信
5) Evil.org は入手したセッション
情報で、ユーザになりすます
IBM Software Group | Rational software
11
XSS テストパターン例
IBM Rational AppScan Ver 7.7 の例
IBM Software Group | Rational software
12
攻撃例 3 - パス トラバーサル (コマンドインジェクション)
http://TARGET/../../../../../../../../some_file
http://TARGET/%2E%2E/.../%2E%2E/%2E%2E/some_file
http://TARGET/%c0%ae%c0%ae/.../%c0%ae%c0%ae/some_file
実例: Microsoft IIS Unicode 攻撃
/msadc/..%c1%9c..%c1%9c..%c1%9c..%c1%9c../winnt/system32/cmd.exe?/c+dir+c:%5c
この脆弱性は、IIS 4.0 および 5.0 で発生。以下の修正がリリースされているhttp://www.microsoft.com/technet/security/bulletin/ms00-057.mspx
IBM Software Group | Rational software
13
パス トラバーサル テストパターン例
IBM Rational AppScan Ver 7.7 の例
IBM Software Group | Rational software
14
攻撃例 4 - OS コマンド インジェクション
Perl の open() コマンドでは、入力に | を許可する
| 前後の文字列をコマンドとして実行する
http://example/cgi-bin/showInfo.pl?name=John&template=tmp1.txt
open(FILE, “$template”);
http://example/cgi-bin/showInfo.pl?name=John&template=/bin/ls|
Valid URL:
Attack URL:
IBM Software Group | Rational software
15
The OWASP Top 10 list
Hackers can impersonate legitimate users, and control their accounts.
Identity Theft, Sensitive Information Leakage, …Cross Site scripting
Hacker can forcefully browse and access a page past the login page
Hacker can access unauthorized resourcesFailure to Restrict URL Access
Unencrypted credentials “sniffed” and used by hacker to impersonate user
Sensitive info sent unencrypted over insecure channel
Insecure Communications
Confidential information (SSN, Credit Cards) can be decrypted bymalicious users
Weak encryption techniques may lead to broken encryption
Insecure Cryptographic Storage
Hacker can “force” session token on victim; session tokens can be stolen after logout
Session tokens not guarded or invalidated properlyBroken Authentication & Session Management
Malicious system reconnaissance may assist in developing furtherattacks
Attackers can gain detailed system informationInformation Leakage and Improper Error Handling
Blind requests to bank account transfer money to hackerAttacker can invoke “blind” actions on web applications, impersonating as a trusted user
Cross-Site Request Forgery
Web application returns contents of sensitive file (instead of harmless one)
Attacker can access sensitive files and resourcesInsecure Direct Object Reference
Site modified to transfer all interactions to the hacker.Execute shell commands on server, up to full control
Malicious File Execution
Hackers can access backend database information, alter it or steal it.
Attacker can manipulate queries to the DB / LDAP / Other system
Injection Flaws
Example ImpactNegative ImpactApplication Threat
IBM Software Group | Rational software
16
Web アプリケーションの脆弱性に起因すると考えられる被害例
インテリア等通販サイト:SQLインジェクションによりクレジットカード番号28,105件が流出 (08年7月)
化粧品通販サイト:不正アクセスで最大2万件の顧客情報流出 (08年5月)
楽器通販サイト:不正アクセスで10万件の顧客情報流出 (08年4月)
ITセキュリティ会社:不正アクセスで改ざん、ウイルス感染の恐れ (08年3月)
商社:不正アクセスで改ざん被害、個人情報漏洩のおそれも(07年11月)
IT商社で個人情報最大1万3670件が流出か(07年10月)
カメラ会社:3235人のオンラインマガジン購読者の個人情報が流出(06年9月)
通信会社:不正アクセスで1万9000人分の顧客情報が流出(06年8月)
オンラインゲーム:不正アクセスで最大36万件超の個人情報が流出(06年8月)
介護情報サイト:不正アクセスを受け会員の情報が流出(06年7月)
旅行会社:SQLインジェクション攻撃でメールアドレスなど流出の恐れ(06年4月)
オークションサイト:クロスサイトスクリプティングによるフィシュシング詐欺が発生(06年4月)
衣料品メーカー:オンライン・ショップに不正アクセス,4757人分の顧客情報が流出 (05年11月)
比較サイト:不正アクセスでサイトを一時閉鎖(05年5月)
IBM Software Group | Rational software
17
Web アプリケーション の安全性が重要な理由
Webアプリケーションは、ハッカーの間で最も注目されている
75% の攻撃はアプリケーション層で見つかっている (Gartner) XSSとSQLインジェクションは、報告されている脆弱性の#1と#2である (Mitre)2008 年上半期に公開された脆弱性の 90% 以上がアプリケーションに影響するもので、オペレーティング システムに影響するものはわずか10% でした。攻撃の対象がオペレーティング システムからアプリケーション層へと移行しつつあることを示しています (Microsoft, 2008/11)
ほとんどのWebサイトは脆弱である
90% のWebサイトはアプリケーションの脆弱性がある (Watchfire)78% の容易に利用可能な脆弱性は、Webアプリケーションにある (Symantec)80% の組織は、2010年までにアプリケーションセキュリティ事件に遭遇する(Gartner)
Webアプリケーションは価値あるターゲット
顧客データ、クレジットカード、IDの盗難、
詐欺など
コンプライアンスの要求
個人情報保護法
PCI データセキュリティ標準ネットワークサーバー
Webアプリケーション
75%
10%
25%
90%
攻撃件数 予算
IBM Software Group | Rational software
18
Web サイトに関する脆弱性の届出が急増
出典:ソフトウエア等の脆弱性関連情報に関する届出状況 [2008年第3四半期(7月~9月)]http://www.ipa.go.jp/security/vuln/report/vuln2008q3.html
2008年第3四半期の届出件数は、ソフトウェア製品関連が55件、Webアプリケーション(Webサイト)関連関が509件であった。
®
IBM Software Group
© 2007 IBM Corporation
Web アプリケーションを安全に保つための対策
IBM Software Group | Rational software
20
Web アプリケーション 安全性対策の手法
専門家による検査 (侵入検査)
Web アプリケーション ファイアウォール (WAF)
開発過程での検査
IBM Software Group | Rational software
21
WAF 提供ベンダの例
アプライアンス製品ベンダ
Barracuda Networks (NetContinuum)BreachCheck PointCitrixF5 NetworksImperva
オープンソース
Aqtronix WebKnightModSecuirty
Firewall IPS WAF
ポート 80(http)とポート443(https) はオープン
暗号化されたデータやエンコードされたデータは、そのまま通過
IBM Software Group | Rational software
22
WAF の特徴
運用中のアプリケーションに即座に適応できる
ソースコードの修正ができない場合も保護できる
根本解決までの時間を得られる
効果的に運用するには、設定が煩雑
数日から数週間のチューニングが必要
間違った設定は、即座にビジネスに影響を与える
多くの場合、アプリケーション開発者と WAF 管理者は異なる
ネットワークに新たなレイヤが加わる
高価
二重化が必要(あるいは、サービス停止リスクを許容)運用コストも
IBM Software Group | Rational software
23
開発過程における検査
人手による検査
人手に頼る検査で、非効率で十分に網羅できない
個々の開発者のスキルに大きく依存する
ツールの利用
ブラックボックス
ホワイトボックス
IBM Software Group | Rational software
24
人手による検査の問題 ーある銀行のWebアプリケーションにおける実例
有名なオンライン バンキングの Web アプリケーションで約10分の操作を実施
158 URLs (pages)総 URL 数は、500 以上
146 の異なるパラメータを発見
10 の異なる cookie を発見
IBM Software Group | Rational software
25
簡単な算数...
“XSS cheatsheet*” によると、100以上の異なる クロスサイトスクリプティングの種類が存在する
SQL インジェクションを発見するには平均3回程度の入力が必要
ブラインド SQL インジェクションを発見するには、やはり平均3回程度の入力が必要
20種類以上のパストラバーサルのパターンが存在
仮に、1リクエストを送るのに 10秒かかるとすると
これだけで、50時間以上
もちろん、クロスサイトスクリプティングや、HTTP レスポンス分割など脆弱性には多くの種類があり、これらは検査されていない
* http://ha.ckers.org/xss.html
146 Parameters X 100 XSS variants X 10 seconds per test = ~ 40 hours146 Parameters X 3 SQLi tests X 10 seconds per test = ~ 1 hour146 Parameters X 3 BSQLi tests X 10 seconds per test = ~ 1 hour146 Parameters X 20 path traversal tests X 10 seconds per test = ~ 8 hours
IBM Software Group | Rational software
26
開発過程での対策の現状
64% の開発者は、セキュアなアプリケーションを書く自信が無い (Microsoft Developer Research)
70% の企業は、SDLC にセキュアなアプリケーションを書くための技術を導入していない (Aberdeen Group, May 2007)
IBM Software Group | Rational software
27
検査ツール提供ベンダの例
ブラックボックス検査ツール
Acunetix Web Vulnerability ScannerCenzic HailstormHP (SPI Dynamics) WebInspectIBM Rational (Watchfire) AppScan Standard EditionNT Objectives NTO Spider
ホワイトボックス検査ツール
Coverity Prevent SQSFortify Source Code AnalyzerKlockwork InsightOunce Labs Ounce 5
ブラックボックス/ホワイトボックス複合検査ツール
IBM Rational AppScan Developer Edition
IBM Software Group | Rational software
28
ブラックボックステスト と ホワイトボックステスト
ブラックボックス テスト
疑似ハッキング
攻撃者と同じ視点でテストを実施、現存する問題を指摘
ソースコードが不要
アプリケーションに対する知識はそれ程必要ない
プラットフォームの問題やビジネスロジックの問題の指摘も
注意点:
外部に出てくる現象のみ指摘
アプリが稼動している必要がある
テストで通らないパスは検査できない
ログイン、ユーザー登録画面などでの副作用で自動化が困難な場合もある
ホワイトボックス テスト
ソースコードスキャン
コードのカバレージが確保できる
モジュールごとの不整合や、セキュリティ以外の問題も指摘
コーディング フェーズから利用可能
IDE との統合が容易
注意点
必ずしも現実に起こるとは限らない問題も数多く指摘
プログラミング言語ごとの対応が必要
ソースコードが必須
プラットフォームに依存する問題は指摘できない
IBM Software Group | Rational software
29
ブラックボックス ツールの例
IBM Rational AppScan Standard EditionVer 7.7
IBM Software Group | Rational software
30
ブラックボックス ツールの検査項目例(一部)SQL インジェクション
クロスサイトスクリプティング
Xpath インジェクション
LDAP インジェクション
バッファーオーバーフロー
クロスサイトリクエストフォージェーリ
リンクインジェクション
セッション固定
HTTP レスポンス分割
書式文字列リモートコマンド
秘密情報の開示
Cookie 操作による権限昇格
キャッシュ可能なログインページ
入力制限のバイパス
ディフォルトインストールパターン
クレジットカード番号の開示
ディレクトリ一覧
パストラバーサル
データベースエラーパターン
アカウントのロックアウト
不適切な SSL 証明書
不十分な認証
不適切な暗号化
内部 IP の開示
予測可能なログイン証明書
デバッグモード
ソースコードの開示
未承認アクセス
ログアウト後のセッション有効
IBM Software Group | Rational software
31
ブラックボックス スキャナーの動作
ステージ 1: 正規のユーザーとしてクローリング
http://mySite/editProfile.jsp
http://mySite/
http://mySite/login.jsp
http://mySite/feedback.jsp
http://mySite/logout.jsp
IBM Software Group | Rational software
32
ブラックボックス スキャナーの動作
ステージ 1: 正規のユーザーとしてクローリング
ステージ 2: 改竄されたリクエストでテスト
元のリクエスト: http://mySite/?abc=123
http://mySite/?abc= >%22%27><img%20src%3d%22javascript:alert()%22>
http://mySite/?abc="></IFRAME><script>alert()</script>
http://mySite/?abc=--><script>alert()</script>
http://mySite/?abc="></STYLE><STYLE>@import"javascript:alert(37944)";</STYLE>
http://mySite/?abc="></title><script>alert()</script>
.
.
.
IBM Software Group | Rational software
33
ホワイトボックス ツールの検査項目例 (一部)
バッファーオーバーフロー
SQL インジェクション
クロスサイトスクリプティング
アクセスコントロール
プロセスコントロール
非 Null 終了
設定操作
リソースインジェクション
コード内に埋め込まれたパスワード
リソース開放漏れ
誤った書式変換
プライバシー違反
ネーティブコールアウト
安全で無いメモリ操作
検証されないリターン値
安全でない関数の仕様
レースコンディション
初期化されない変数
セッション ID 長
エンティティ Bean の構成
情報漏えい
ログ改竄
整数オーバーフロー
EJB リソース許可
Struts フォームフィールドの検査
メモリの2重開放
Null ポインター デリファレンス
ディレクトリ制限
IBM Software Group | Rational software
34
// ...String username = request.getParameter("username");String password = request.getParameter("password");
// ...String query = "SELECT * from tUsers where " +
"userid='" + username + "' " +"AND password='" + password + "'";
// ...ResultSet rs = stmt.executeQuery(query);
ホワイトボックス スキャナーの動作
汚染が伝播する
Sink - 潜在的に危険なメソッド
ソース – 汚染された文字列を返すメソッド
IBM Software Group | Rational software
35
ホワイトボックス スキャナーの動作
Sources:
Sinks:
Sanitizers:
多くのインジェクション問題:
SQL インジェクション,
クロスサイトスクリプティング,
ログ フォージング、
パス トラバーサル,
リモートコード実行
.....
IBM Software Group | Rational software
36
現状のホワイトボックス スキャナーの問題点
何が Sanitizers なのか?
設定が煩雑
設定が正しい保証がない
in-line でのチェックはどう反映されるのか?
in-line サニタイズ
in-line バリデーション
煩雑な設定と、大量の誤検知を生む
IBM Software Group | Rational software
37
Rational AppScan Developer Edition
開発環境に統合された Web セキュリティ検査ツール
ブラックボックステストとホワイトボックステストの双方をサポート
最新の文字列解析により、ホワイトボックステストの問題を改善