別紙 1. 脆弱性リストの脆弱性
4.4. ログイン状態にある利用者の意図に反した機 能実行の防止機能
4.6.1. 利用者と本システム間におけるWebアプリ ケーション通信の暗号化
4.6.2. 内部の通信に関する補足 4.6.3. データベースの暗号化 4.6.4. ファイルの暗号化
https://www.j-lis.go.jp/lasdec-archive/cms/12,28369,84.htmlより引用 43
プロジェクトの開発標準を策定
Copyright © 2008-2015 HASH Consulting Corp.
44
3 分で分かるセキュアプログラミング
認証方法などのセキュリティ要件は ユーザーと相 談して定義し,そのあとに粛々と実装する SQLインジェクションなどのセキュリティ・バグへの
対処法を明確にする
方式設計において,開発標 準やテスト方式を整備して
おく
コーディング規約をメンバーに学習
してもらう。
規約を破ると本当に危険だと認識
してもらう
コード・レビューの方針を決める。内部レビュー を基本とし,誰がどの範囲(抜き取り検査など)を チェックするのかを明確にする。レビューできる担
当者のリソースを確保する
脆弱性テストの方針を決める。内部テス トを基本にし,必要に応じて外部の専門ベ ンダーに依頼する。テストできる担当者の
リソースを確保する
ポイント① ポイント② セキュリティ・バグの撲滅
ポイント③
セキュリティ・バグの撲滅 セキュリティ機能(要件)と
セキュリティ・バグは分けて考える 開発標準の整備とメンバーの教育でチーム力をアップ
コスト要因となるレビューとテストを計画的に
要件定義 基本設計 詳細設計 開発 テスト 運用
日経SYSTEMS2009年8月号「プロマネの技で守るWebセキュリティ」図1を改変
45
脆弱性診断とは
46
脆弱性診断の種類
• Web アプリケーション脆弱性診断
– Web
アプリケーションの脆弱性の有無を確認する– Web
アプリケーションのセキュリティ機能の正当性を確認する– Web
アプリケーションのテストの一環として実施する• ネットワーク脆弱性診断 *1
–
プラットフォームに既知の脆弱性がないかを確認する–
プラットフォームの設定のミスを確認する•
オープンリレーメールなど–
ポートの開き状況等を確認する(ポートスキャン)• ペネトレーションテスト
–
侵入可能性の実証まで行う*1
プラットフォーム脆弱性診断と呼んだ方が良いが、ここでは慣習に従うCopyright © 2008-2015 HASH Consulting Corp.
47
Web アプリケーション脆弱性診断の方法
•
リモート(ブラックボックス)診断–
攻撃者の立場でインターネット越しに擬似攻撃を行う–
ツール診断と手動診断–
ツール診断は、手動の30%
程度しか見つからないという声も… –
大規模なサイトではツールによる網羅性確保をする場合が多い•
ソースコード(ホワイトボックス)診断–
ソースコードを読むことで診断する–
専用ツール(Fortify
等)を用いる場合が多い–
人手による目視診断もあるが、網羅性確保は難しい•
グレーボックス診断–
リモート診断とソースコード診断の合わせ技–
最近注目されているが、実施例は少ないと予想Copyright © 2008-2015 HASH Consulting Corp.
48
ブラックボックス検査の特徴
• ブラックボックス検査は、プログラムを動かしつつ、ソー スコードは見ない(ブラックボックス)で検査する
• 概念的には通常のテストと同じ方法
• 脆弱性はバグの一種と捉えると、バグはつまるところ動 かしてみないとわからない … 脆弱性も似た傾向あり
• クロスサイトスクリプティング (XSS) など、表示系の脆弱 性はとくに有効
• SQL インジェクション、 OS コマンドインジェクション等、
サーバー内部で起こる脆弱性の発見は難易度が高い
• 攻撃者と同じことをするので、ハッカー的スキルが要求 される
Copyright © 2012-2015 HASH Consulting Corp.
49
ホワイトボックス検査の特徴
• ソースコードから脆弱性を調べる。原則としてプログラ ムは動かさない
–
ブラックボックスと併用することを最近はグレーボックスと呼ぶ• ソースコードが読め、脆弱性の知識があれば、検査は 可能
–
攻撃者としてのスキルはあまり要らない• 手動検査とツール検査がある
–
手動検査は網羅性に課題があるが、難しい脆弱性が見つけ られる(検査者の力量次第)–
ツール検査は網羅性は得やすいが、複雑な脆弱性に課題• サーバー内部の脆弱性は相対的に得意
• XSS 等は動かしたほうが早い … 場合もある
Copyright © 2012-2015 HASH Consulting Corp.
50
ブラックボックス vs ホワイトボックス
Copyright © 2012-2015 HASH Consulting Corp.
51
カテゴリ 診断項目 ウェブ健康診断 ソースコード解析
クロスサイト・スクリプティング ○ ○
Ajax/JSONの脆弱性 - ○
SQLインジェクション ○ ○
HTTPヘッダ・インジェクション ○ ○
メールヘッダ・インジェクション ○ ?
OSコマンド・インジェクション ○ ○
ディレクトリ・トラバーサル ○ ○
オープンリダイレクタ ○ ○
リファラからの情報漏洩 ○ ?
コンテンツ ディレクトリ・リスティング ○
-クロスサイト・リクエスト・フォージェリー ○ おそらく☓
クリックジャッキング ○ おそらく☓
SSL使用状況 クッキーのセキュア属性不備 ○ ?
セッションID使用状況 ○ ?
Cookie使用状況 ○ ?
ログアウト機能 ○ ?
セッションIDの固定化 ○ △
アクセス制御不備 ○ ?
認可不備 ○ ?
アクセス制御・認 可
パラメータ操作
ユーザの意思の反 した機能実行
セッション管理
ブラックボックス検査では発見が難しい脆弱性の例
Copyright © 2012-2015 HASH Consulting Corp.
52
<?php
$name = $_POST['name'];
$mail = $_POST['mail'];
$address = $_POST['address'];
try {
$con = new
PDO("mysql:host=localhost;dbname=db;charset=utf8", …);
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO entries VALUES('$name', '$mail', '$address')";
$result = $con->exec($sql);
} catch (PDOException $e) { // do nothing
}
?><p>
登録しました</p>
•
キャンペーン応募のように、登録後のデータを利用者は参照できない•
「登録しました」以外の表示が一切ない•
エラー処理をしていないので、エラー内容、エラーか否かすらわからない時間差を用いた診断の例(ブラックボックス)
Copyright © 2012-2015 HASH Consulting Corp.
53
INSERT INTO entries VALUES('$name', '$mail', '$address')
•
まったく画面表示がなくても、副問い合わせ(SELECT sleep(5))
により、5
秒遅延するか否かで診断は可能•
診断者の技量により、診断の可否が左右される•
診断の副作用により、データが破壊される危険性(結構よく聞く)•
本番環境では更新系画面のSQL
インジェクション診断をしない場合もある',(SELECT sleep(5)),null) #
INSERT INTO entries VALUES(' ',(SELECT sleep(5)),null) # ', '', '')
出来上がりのSQL文
条件付き sleep により情報を取り出す
Copyright © 2012-2015 HASH Consulting Corp.
54
INSERT INTO entries VALUES('$name', '$mail', '$address')
• mini_bbs.members
テーブルの1
行1
文字目が‘a’
の場合のみ5
秒待つSQL
文•
これを繰り返すことにより、DB
内のすべての情報が漏洩する',(select if(substr((select email from mini_bbs.members limit 0,1),1,1) =
'a',sleep(5),0)),null)#
INSERT INTO entries VALUES('',(select if(substr((select email from mini_bbs.members limit 0,1),1,1) = 'a',sleep(5),0)),
null)#', '', '')
出来上がりの
SQL
文ソースコード診断なら検出は容易
55
•
ソースコード診断ツールならデータフローから脆弱性の検出が可能•
画面表示の有無に関係なく診断可能Copyright © 2012-2015 HASH Consulting Corp.
当該箇所のレポート
56
Web アプリケーション脆弱性診断の流れ
• 診断前準備
–
診断環境準備–
診断用アカウントの準備• アプリケーション仕様把握
• 画面構成の把握
• 診断箇所の決定(全画面・全項目の場合は省略)
• 画面一覧表の作成
• 診断作業
• 報告書作成
• 報告会
• 診断後の後始末
Copyright © 2008-2015 HASH Consulting Corp.
57
Web アプリケーション検査の課題
•
費用が高額である–
検査に専門性を要すること、検査箇所や項目が多岐にわたることから、通常数百 万円、場合によっては数千万円の費用が掛かる–
ツールによる診断でコストを抑える場合が多いが、ツール診断には品質上の課題 がある•
安全性に対する課題–
サイトに疑似攻撃をかけることからデータベース破壊などの危険性–
稼働中サイトに対する安全な検査手法の要請•
品質に関する課題–
検査仕様のスタンダードがない–
検査項目の規定–
検査の深さに対する規定–
抜き取り検査とする場合の抜き取り方法→
ベンダーの手抜きやスキル不足による品質低下のリスクCopyright © 2008-2015 HASH Consulting Corp.
58
診断の基準とは ?
•
なにを以て「正」とするか?
–
脆弱性は、「ないこと」が正–
セキュリティ機能は「機能自体があり正しく機能すること」が正•
脆弱性が「ないこと」をどうやって検証するか?
–
どの脆弱性を検査するか? SQL
インジェクション、XSS
、CSRF…
–
どこまで調べたら、「ない」と言えるか?
•
つまるところ、「色々やってみる」しかない•
セキュリティ機能が「正しく機能」するとは?
–
仕様や設計書が提示されることは、ほとんどない–
アプリケーションの仕様を実物から把握して、「常識的に」診断員が判断し ている–
おおまかなところは、診断会社毎に基準がある…
はずCopyright © 2008-2015 HASH Consulting Corp.
59
「ウェブ健康診断」の紹介
診断方式 : 遠隔地からインターネット経由による手動若しくは自動診断ツールを利用 診断実施数:約300団体
診断対象 : 地方公共団体が保有若しくは利用している、現在インターネットで稼動中の
Web
サーバ1サイト分(1 ドメインネーム)https://www.j-lis.go.jp/lasdec-archive/cms/12,1284.html より引用
60
61
ウェブ健康診断仕様 (1)
12
項目の診断項目により危険度の高い脆弱性項目を網羅し ている 実被害に至る可能性の高いものに限定
「安全なウェブサイトの作りかた 改定第
3
版」で解説されている9
種類の脆弱性を包含 診断仕様、判定基準、抜き取り基準が明確に定義・公開され ている
公開された無償ツールのみで診断できる
本番稼働サイトの診断を前提とした安全性の高い診断仕様で ある
当初、
LASDEC
により策定、現在はIPA
に管理を移管されたhttps://www.j-lis.go.jp/lasdec-archive/cms/12,1284.html より引用