cutmail's blog

write the code

神泉セキュリティ勉強会に参加してきました

いつものように簡単なメモを。

<文字コードに起因する脆弱性とその対策>
超入門
   * 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健康診断