デブサミ2009「Webセキュリティ攻守攻防パネルディスカッション "Webアプリケーション/Ajaxセキュリティ徹底バトル"」メモ

豪華な登壇者を迎えたことと、デブサミ2009のA会場の最後のセッションということもあって、ものすごく盛り上がっていました。


Webセキュリティ攻守攻防パネルディスカッション「Webアプリケーション/Ajaxセキュリティ徹底バトル」

登壇者

モデレータ

  • 竹迫良範 氏

パネラー

  • はせがわようすけ 氏
  • はまちちゃん 氏
  • 大垣靖男 氏
  • 徳丸浩 氏

id:Hamachiya2さん(はまちちゃん)

インフルエンザにかかって3日目。
従って、このセッションを聴講する方はリスクを伴う、とのことw (脆弱性w)

Namazuプロジェクトの昔話

2001/11/25。
NamazuプロジェクトのMLに、高木先生から脆弱性の報告が来た。
しかも、MLはオープンになっている公開MLだった。
2日後に緊急リリース、そして非公開のMLを作成した。

XSSについて

  • 信頼できないWebサイトでのXSS対策は無意味
  • イントラネットだからこそ、XSSには気をつける

JSONによる秘密情報の漏洩

JSON Hijacking

  • prototypeの"__defineSetter__"を使って処理、そしてJSONをHTMLとして読みとる
  • JSONの一部をUTF-7で書いて、メールのSubjectに記述

オープンな脆弱性の指摘

  • LACのJSOC(セキュリティ監視センター)では多数の攻撃を把握
    • XSSは国内初、いたずら目的ばかり
    • 運営者は「少しでも違法性があるなら訴えたい」
      • 訴えること自体が時間の無駄
        • 本物のクラッカーは捕まらないし、捕まるようなクラッカーはたいしたことない

オープンに指摘するメリットはない、IPAに報告しましょう、とのこと。

オープンソースWebアプリケーションの脆弱性

  • オープンソース=安全、は間違い
  • クローズドソース=安全、も間違い
  • OSSのプロジェクトで、コードレビューされていないソースコードはある

PHPを避けるべき3つの理由

  • 言語処理系としてマルチバイト文字列対応していない
    • 拡張モジュールで対応
    • 文字エンコードのデフォルトがライブラリごとに異なる
  • 文書化されていない仕様
  • サポートライフサイクルが短い
    • PHPを使う場合は、常にバージョンアップに追随する決意が必要

ブラウザとバグと仕様の境界

  • ブラウザベンダは「仕様です」の方向で、話が行きがち
  • ブラウザベンダの窓口へ、フィードバック・報告を積極的に送るべし

UTF-7誤認識を利用したXSSは、まだ有効化?

  • まだ有効(IE6/7/8)
  • レスポンスヘッダで、charsetを付ける
    • Shift_jIS, EUC-JP, UTF-8
    • これ以外のcharset名はXSSする可能性がある
  • 自分で作ったページ以外にも、エラーページなどは注意する(401/404など)

WAFってどう?

  • HTTPリバースプロキシ方式で、Webアプリの攻撃から防御するツール
    • WAF (Web Application Firewall)
  • WAFの防御戦略
    • 入力値検証
      • ホワイト/ブラックリスト
        • ホワイトリストは問題点があり、ブラックリストが本命
        • ブラックリストは使う場所を選ばない
        • ブラックリストの管理が面倒なのがベンダ側
      • 不正な文字エンコード
  • 画面遷移の検証
  • 値の保護
    • Cookie, Hidden

WAFをどう使うか

  • 基本はプログラミング上の対策
    • WAFはあくまで保険程度

WAFのデモ

  • ログインIDに"'"(シングルクォート)
    • SQLインジェクション
    • WAFを使うと、リバースプロキシの段階でとめてくれる
      • (デモでは、500で検知したっぽい)
  • パスワードに"a or a=a"
    • WAFで止めてくれた
  • UTF-7誤認識
    • WAFで止めてくれた
      • (ダイアログで検知したっぽい)

開発者は、"WAF"の存在は無いものとして開発しましょう。
運用者は、より安全にするために"WAF"を導入しましょう。

その他

  • .NET Framework(.aspx)を使っていると、結構堅牢なパターンが多い
  • CMSの脆弱性で圧倒的に多いのはプラグイン部分


# 質疑でパネラーの方の回答から経験則っぽいものをメモった。