ウェブアプリケーションのセキュリティ ウェブアプリケーションの

ウェブアプリケーションのセキュリティ対策
ウェブアプリケーションのセキュリティ対策に
対策に関する仕様
する仕様書
仕様書
1
趣旨
この仕様書は、電子博物館「みゆネットふじさわ」ホームページ運営・管理業務委託契
約の受託者がホームページの改ざん等をはじめとしたインターネット上の脅威に対処する
ため、開発または改修したウェブアプリケーションに対して実施する脆弱性対策について
定めることを目的とする。
2
対策を実施する脆弱性項目
受託者は、以下に定めるウェブアプリケーションの脆弱性について対策を実施し、脆弱
性有無の判定基準に基づき、脆弱性がないことを確認するものとする。対策の実施に際し
ては、独立行政法人情報処理推進機構が策定した「安全なウェブサイトの作り方」の最新
版における「根本的解決」を参考にすること。なお、脆弱性項目のうち、開発または改修
したウェブアプリケーションに入力フォームがない等、脆弱性がないことが明らかである
場合、当該項目は確認対象から除外してよい。
(1) SQLインジェクション
検出パターン
脆弱性有無の判定基準
(入力フォームに以下の文字列を入力
(以下の場合に脆弱性有とす
する)
る)
1-1
エラーになる
「'」 (シングルクォート)1 個
備考
レスポンスに DBMS 等が出力するエ
ラーメッセージ(例:SQLException、
Query failed 等)が表示された場
合にエラーが発生したと判定しま
す。
1-2
「検索キー」と「検索キー
検索キーのみと同じ結果にな
HTTP ステータスコードが一致し、
'and'a'='a」の比較
る
かつレスポンスの diff(差分)が全
体の 6%未満の場合、同一の結果と判
定します。検査対象が検索機能の場
合は、検索結果件数が同一の場合に
も、同一の結果と判定します。
1-3
「検索キー(数値)」と「検索キー
検索キーのみと同じ結果にな
and 1=1」の比較
る
同上
(2) クロスサイト・スクリプティング(XSS)
検出パターン
脆弱性有無の判定基準
(1、2、4は入力フォームに以下の
(以下の場合に脆弱性有とす
文字列を入力する)
る)
2-
エスケープ等されずに出力さ
「'>"><hr>」
備考
レスポンスボディーに検査文字列
1
れる
の文字列がエスケープ等されずに
出力されると脆弱と判定します。
2-
「 '>"><script>alert(document.
エスケープ等されずに出力さ
2
cookie)</script>」
れる
2-
URL 中のファイル名として
エスケープ等されずに出力さ
同上。
3
<script>alert(document.cookie
れる
http://xxxx.jp/service/index.ht
)</script>
同上
ml と い う URL で あ っ た 場 合 、
「index.html」の部分に検査文字列
をエンコードせずに挿入します。
2-
javascript:alert(document.coo
4
kie);
Href 属性等に出力される
レスポンスボディーの特定の URI
属 性 ( src, action, background,
href,content)や、JavaScript コ
ー ド ( location.href, location.
replace)等に検査文字列が出力さ
れる場合、脆弱と判定します。
(3) クロスサイト・リクエスト・フォージェリ(CSRF)
脆弱性有無の判定基準
検出パターン
備考
(以下の場合に脆弱性有とする)
3-1
ログイン状態において、特定副作用を
特定副作用が実行される
特定副作用を持つ機能において、以下の
持つ画面に対して外部からパラメー
いずれかを満たす場合に脆弱と判定し
タを強制する
ます。
・トークン等のパラメータが存在しない
※「特定副作用」とは、正規ユーザが
・トークン等を削除しても特定副作用が
不利益を被るようなデータ更新、パス
実行される
ワード変更等を指す。
・トークン文字列の推測が可能
・別ユーザのトークンが使用できる
特定副作用が実行されたかは、画面に表
示されるメッセージ等により判断しま
す。
(4)
OSコマンド・インジェクション
検出パターン
脆弱性有無の判定基準
(システムへ送信するパラメータに以下を
備考
(以下の場合に脆弱性有とする)
入力)
4-1
【UNIX 系 OS 向け】
ifconfig の実行結果が表示される
レスポンスに、127.0.0.1 等の文字列が
「 ../../../../../../../sbin/ifcon
含まれる場合、ifconfig が実行された
fig|」を入力
と判定します。
4-2
【UNIX 系 OS 向け】
ifconfig の実行結果が表示される
同上
ipconfig の実行結果が表示される
レスポンスに、Ethernet, adapter 等の
「;/sbin/ifconfig」を入力
4-3
4-4
【Windows 向け】
「 ../../../../../../../windows/sy
文字列が含まれる場合、ipconfig が実
stem32/ipconfig|」を入力
行されたと判定します。
【Windows 向け】
ipconfig の実行結果が表示される
同上
「&/windows/system32/ipconfig」を
入力
(5)
ディレクトリ・リスティング
脆弱性有無の判定基準
検出パターン
備考
(以下の場合に脆弱性有とする)
5-1
URL をディレクトリまでで終端しリ
ディレクトリ一覧が表示される。フ
URL の末尾のファイル名部分を削除し
クエストする
ァイル一覧の表示のみでは「低」危
てリクエストを送り、ファイル一覧がレ
険度、重要情報があれば「高」危険
スポンスされるか確認します。icons 等
度
明らかに無害なものは報告しません。抜
き取りにて、一覧ファイル内のバックア
ップファイル等を探して発見されたも
のを報告します。
(6)
メールヘッダインジェクション
脆弱性有無の判定基準
検出パターン
備考
(以下の場合に脆弱性有とする)
6-1
6-2
Subject 、 From 、 To
欄 に
新たなあて先を指定できる
改行文字の後に追加した To アドレス
「%0d%0aTo:[email protected]」
(XXX は
(@xxxx.jp のアドレス)にメールが届
数値 2~3 桁)を入力することで、新
く場合に、新たなあて先を指定できたと
たなあて先を指定できるか
判定します。
Subject 、 From 、 To
欄 に
本文内容を改ざんできる
アドレス(@xxxx.jp)に届いたメールの
「%0d%0a%0d%0akensa」を入力するこ
本文部分に「kensa」という文字列が含
とで、本文内容を改ざんできるか
まれている場合、本文内容を改ざんでき
たと判定します。
(7)
パストラバーサル(ディレクトリ・トラバーサル)
検出パターン
脆弱性有無の判定基準
(ファイル名と想定されるパラメータに以
備考
(以下の場合に脆弱性有とする)
下を入力)
7-1
【UNIX 系 OS 向け】
/etc/hosts が表示される
レスポンスに 127.0.0.1、localhost 等
「 ../../../../../../../../../etc/
の文字列が含まれる場合、/etc/hosts
hosts」
が表示されたと判定します。
7-2
【UNIX 系 OS 向け】
/etc/hosts が表示される
同上
win.ini が表示される
レスポンスに[extensions]等の文字列
「 ../../../../../../../../../etc/
hosts%00」
7-3
7-4
【Windows 向け】
「 ../../../../../../../../../wind
が含まれる場合、win.ini が表示された
ows/win.ini」
と判定します。
【Windows 向け】
win.ini が表示される
同上
「 ../../../../../../../../../wind
ows/win.ini%00」
(8)
意図しないリダイレクト
検出パターン
脆弱性有無の判定基準
備考
(以下の場合に脆弱性有とする)
8-1
クエリストリング等に URL を保持し
指定した別ドメインの URL に遷移
Location ヘッダ、META タグの Refresh、
ている場合に、URL を別ドメインのも
させられる
JavaScript コード(location.href,
の(http://www.xxxx.jp/)に変更し
location.assign, location.replace )
てリクエストする
によるリダイレクト部分に検査文字列
が出力される場合にリダイレクト可能
※クエリストリングとは、URL中の
と判定します。ログイン機能以外でも脆
「?」以降の部分を指す。
弱性として判定します。
(9)
HTTPヘッダ・インジェクション
脆弱性有無の判定基準
検出パターン
備考
(以下の場合に脆弱性有とする)
9-1
9-2
Cookie に相当するパラメータに改行
Set-Cookie のパラメータに改行が
レスポンスヘッダに、
コードを入力
挿入される
xxxxtest=xxxxtest という Set-Cookie
元の値 %0d%0aSet-Cookie:xxxtest
ヘッダが存在する場合、改行が挿入され
%3Dxxxxtest%3B
たと判定します。
リダイレクト先 URL に相当するパラ
Location ヘッダのパラメータに改
メータに改行コードを入力
行が挿入される
同上
元の値 %0d%0aSet-Cookie:xxxxtest
%3Dxxxxtest%3B
(10) 認証
脆弱性有無の判定基準
検出パターン
備考
(以下の場合に脆弱性有とする)
10-1
パスワードの max 文字数が 8 文字
8 文字未満の場合は指摘
―
数字のみ、英字のみの場合は指摘
―
以上確保されているか
10-2
パスワードの文字種が数字のみ、英
字のみに限定されていないか
10-3
パスワードが入力時に伏字になって
伏字になっていない場合は指摘
―
パスワード間違いの際のメッセージ
ユーザ ID とパスワードのどちら
―
は適切か
が間違いか分かるようなメッセー
いるか
10-4
ジの場合指摘
10-5
ログアウト機能はあるか、適切に実
ログアウト機能がない、あるいはロ
装されているか
グアウト後「戻る」ボタンでセッシ
―
ョンを再開できる場合は指摘
10-6
意図的に 10 回パスワードを間違え
アカウントロックされない場合は
る
指摘
―
(11) セッション管理の不備
脆弱性有無の判定基準
検出パターン
備考
(以下の場合に脆弱性有とする)
11-1
11-2
ログインの前後でセッション ID が
セッション ID が変わらない場合
変化するか
は指摘
言語・ミドルウェアの備えるセッシ
手作りのセッション管理機構を使
セッション ID のパラメータ名等で、言
ョン管理機構を使用せず手作りのセ
用している場合は指摘
語・ミドルウェアのセッション管理機構
ッション管理機構を使っていないか
―
を使用しているかを判断します。判断が
つかない場合には、"手作りの疑いあり"
として報告します。
11-3
SSL を使用するサイトの場合、セッ
Cookie のセキュア属性が付与され
ション ID を保持する Cookie にセ
ていない場合は指摘
―
キュア属性が付与されているか
11-4
Cookie をオフにしてアクセスした
セッション ID が URL 埋め込みの
リファラから漏洩するおそれがある場
場合、セッション ID が URL 埋め込
場合は指摘
合にのみ、脆弱と判定します。(5 を参
みにならないか
11-5
携帯電話向けサイト等でセッション
照)
Referer からセッション ID が漏
PC/携帯サイト両方が対象。外部へのリ
ID を URL 埋め込みにしている場合、 洩する場合は指摘
ンク(検査対象とは異なるホスト上のペ
外部リンクから Referer 経由でセッ
ージへのリンク)が存在する場合にのみ
ション ID が漏洩しないか
脆弱と判定します。セッション ID の漏
洩が問題とならない場合(認証等の機能
が無いケースや、ワンタイムなセッショ
ン ID を使用しているケース)は報告か
ら除外します。
(12) アクセス制御の不備、欠落
検出パターン
脆弱性有無の判定基準
備考
(以下の場合に脆弱性有とする)
12-1
URL 操作により、現在のユーザでは
実行可能の場合は指摘
実行権限のない機能が実行可能。
貸与アカウントでは実行権限が無いと
推測されるページ(管理者機能等)
の URL
が特定できる場合に、検査を実施しま
す。権限が無いと推測されるページ(管
理者向けメニュー等)が表示された時点
で、脆弱性として判定します。
12-2
文書 ID、注文番号、顧客番号等がパ
ID 類の変更により、閲覧権限のな
閲覧権限がない情報の ID 類が特定でき
ラメータにより指定されている場
い情報が表示された場合は指摘
る場合に検査を実施します。特定できな
合、その ID 類を変更して、元々権
い場合は、ID 類の末尾数値を操作する
限のない情報を閲覧できるか
等の方法で、参照権限がないと推測され
る情報が表示されたら脆弱と判定しま
す。
12-3
hidden, Cookie に現在権限が指定
実行可能の場合は指摘
「admin」等権限クラスを示すと推測さ
されており、その変更により現在の
れるパラメータが存在する場合に、検査
ユーザでは実行権限のない機能が実
を実施します。
行可能
3
脆弱性無の確認結果の報告
受託者は、上記すべての脆弱性がないことを確認した上で、確認結果報告書を委託者に
対して提出するものとする。
4
脆弱性検査ツールの利用
受託者は、上記の脆弱性有無の検査を実施するに当たり、専用のウェブアプリケーショ
ンの脆弱性検査ツールを利用することができる。
5
監督
委託者は、検査の実施状況の確認が必要と認められる場合は、受託者の検査現場に立ち
会うことができるものとし、受託者はこれに協力しなければならない。
6
損害賠償
受託者は、本仕様書に違反し脆弱性が存在した場合、当該脆弱性により委託者に発生す
る損害について、その賠償の責に任ずるものとする。なお、賠償内容については委託者と
受託者が協議の上、決定するものとする。
7
協議事項
本仕様書に定める脆弱性項目以外に、新たに脆弱性が発見され、当該脆弱性を狙った攻
撃が急増するなど被害発生が予測される場合は、委託者と受託者が協議の上、対策の実施
有無を決めるものとする。
以上