2007-08-25 Port801セキュリティ勉強会の資料 Security 箇条書きテキストしか用意していなかった。超適当 Webアプリケーションセキュリティ初歩の初歩 〜はまちやの傾向と対策〜 はじめに どうセキュリティに取り組むべきか 脆弱性の殆どは、境界で起きる 基本はバリデーションとエスケープ バリデーション そのシステムで予期しているデータのみ受け入れる エスケープ 出力先に応じて適切な出力を送る 出力先での特殊文字に注意する でも、IEとか バッドノウハウ的に対応せざるを得ないものがある CSSXSS的なのとかContent-Type判別を利用した攻撃とか 当然、自システム内での脆弱性の作り込みには注意する Cなんかでは、Buffer Overflowとか作り込みやすいよね バッドノウハウ/グッドラッパー 金床さんの文章 http://www.jumperz.net/texts/bkgw.htm 脅威のカテゴリ Spoofing(なりすまし/偽装) Tampering(データの改ざん) Repudiation(否認) Information disclosure(情報漏洩) Denial of Service(サービス拒否) Elevation of privilege(権限の昇格) Sessionの取り扱い Session情報 GET/POSTパラメータ Cookie Session Hijack セッション情報の漏洩 Referrer Cookie パケット盗聴 CSRF POST+トークン ワンタイムトークン派 第二セッションID派 Second Password Refferrer XSS 適切なエスケープ (X)HTML CSS JavaScript 文字コード 不完全な文字による問題 基本的には言語及びブラウザの文字コードの取り扱いが不完全なため 不完全な文字を除去する/文字コードの取り扱いを厳密にする Session Fixation ログイン前にセッション発行 Cookie Monster(Mozilla) example.co.jpから Set-Cookie: foo=bar; domain=.hoge.co.jp Set-Cookie: foo=bar; domain=.co.jp 地域ドメイン sakai.sakai.osaka.jpから Set-Cookie: foo=bar; domain=.sakai.osaka.jp Set-Cookie: foo=bar; domain=.osaka.jp その他の脆弱性 Null byte Attack バイナリセーフか否か SQL Injection ちゃんとエスケープ Bind機構 Email header Injection 改行コード取らないと超踏み台 OS Command Injection 自分で調べて>< Path Traversal/Directory Traversal 自分で調べて>< ちょうIE対策! IEのコンテンツ判別の特殊性 Content-Typeをどう指定しても、FindMimeFromData API で256バイト先読みして判別する 偽装可能 偽装出来るようなものは省かないといけない CSSXSS カラーパレットのある画像フォーマット問題 TKSKさんのイメージファイト!