神泉セキュリティ勉強会に参加してきました
いつものように簡単なメモを。
<文字コードに起因する脆弱性とその対策> 超入門 * ShiftJIS * 1バイト文字と後続バイトの領域が重なる * 5C問題が発生する * EUC-JP * 1バイト文字と後続バイトの領域が重ならない * 5C問題は発生しない * UTF-8 * 1バイト文字、先行バイト、後続バイトの領域はまったく重ならない * 5C問題や「蛍問題」は発生しない デモ * 半端な先行バイトによるXSS * UTF-8非最短形式によるパストラバーサル * 5C問題によるSQLインジェクション * UTF-7によるXSS * EUCJP→EUC-JP * U+00A5によるSQLインジェクション * U+00A5によるXSS * ASP.NET + MS SQL Server + JSON 対策 * htmlspecialcharsの第3引数は必ず指定 * PC・モバイル対応サイトでは文字集合の変更を伴う * 文字集合の縮退を実施すれば安心・安全 * UTF-8→Shift_JIS→UTF-8 <プログラムを騙す10の方法 – シグネチャマッチを回避する攻撃と防御>サイボウズラボ 竹迫良範様 HTML Conditional Comments 2.0 条件付きコメント HTML5セキュリティ * HTML5 セキュリティチェック Webアプリの脆弱性 * php.iniの設定に依存 * register_globals問題 * PHPのfopen関数 * リモートファイルを簡単に読み込める * php.iniの設定 * allow_url_fopen * allow_url_include * PHPのRFI攻撃 * ポリモニック * EBCDIC encoding * AV Tokyo * 記号プログラミング <XSSに強いウェブサイトを作る – テンプレートエンジンの選定基準とスニペットの生成手法> サイボウズラボ 奥一穂様 テンプレートエンジンの進化 * 従来=手動エスケープ * 代替手法常にエスケープ * 頻繁に2重エスケープしちゃう * 結局はやらなかった * 自動エスケープの登場 * 基本常にエスケープ * ただし、エスケープ済みかどうかを型で判定 * 片情報があるから2重エスケープしない * XSSの温床=間違った設計 * twitter純正のHTML化アルゴリズム * github * パースとエンコードに分割 * エンコード処理が正しければXSS起きない * バグがあってもいいからセキュアなプログラムを加工 * 文字列の「型」を意識しよう * http://d.hatena.ne.jp/gnarl <パスワード保存の常識(?)> ECナビ春山さん * GNU/Linux * $id$salt$hashed * saltはユーザごとに異なっている必要がある。 * stretch * ハッシュを繰り返し利用することで、ハッシュ値を求めるのに必要な時間を増大させる * 実質的にパスワード文字数を伸ばす <WordPressのセキュリティ> ログイン管理 * cookie * cookie自体に有効期限を埋め込む * wp_parse_auth_cookie() * 自動ログイン * 自動ログインは有効期限を延長する実装 * wp_set_auth_cookie()で保存される * WordPress2.3.3以前は危険 * マルチサイトではUTF-8に決め打ち * SQLインジェクション対策 * へぼいプラグインではXSSが起きるかも <SoftbankのSSL変更のはなし> * cookieの認証が使えない * ダイジェスト認証が使えない * 注意点 * 独自ヘッダーがこない * 個体識別ID * 端末モデル識別用 * 対策 * 端末判定はUAで * 個体識別IDはhiddenで渡す <ウェブアプリ診断ツール> * LASDECのWeb健康診断