SECUAD 6/18

cutxout2005-06-18

Internetweek2004 VPN 再考

  • SSLVPN
    • Reverse Proxy
      • Clientless
      • 対応アプリケーションはWebベースのみ
    • JAVA Applet (Port forwarding)
      • Hostsを書き換えて、アプリケーションのトラフィックlocalhostに向ける
      • Webアプリケーション以外は固定ポートのみ
    • ActiveX (L2 Cupsule)
      • 仮想L2 I/F
      • ほぼ全てのアプリケーションでOK
    • Other
      • SOCKS
  • SoftEther

セキュアWebプログラミング

  • XSS
    • 手順
      1. ユーザが悪意あるWebサイトを閲覧したときに,
      2. 出力されるWebページに悪意あるスクリプトが埋め込まれており,
      3. まだそのスクリプトは効果を発揮せずに標的Webサイトへ転送され,
      4. 標的Webサイトの「スクリプトを排除しない欠陥」を介して,スクリプトが効果を発揮する形でブラウザへ戻ってきて,
      5. スクリプトがブラウザで実行され,クッキーが漏洩したり,ファイルが破壊したりといった被害が発生する,
    • 分からないのは、戻ってきたスクリプトが何をするとcookieが漏洩するのかの具体的な流れ。
  • サニタイジング
    • フォーム受付時ではなく、HTML精製時に行う
    • 二重にやると意図しない変換する可能性がある
  • 具体例
    • Text部分
      • & -> &
      • < -> <
      • > -> >
    • TAG属性値
      • & -> &
      • < -> <
      • > -> >
      • ” -> "
      • ’ -> '
        • シングルクオート中のダブルクオート、ダブルクオート中のシングルクオートはサニタイジング不要だが、両方やってももちろんよい
        • 入力データはクオートでくくるべし
    • URL属性値
      • URLで許可されていない文字列の検出 -> 無効化
    英数字
    「;」「/」「?」「:」「@」「&」「=」「+」「$」「,」
    「-」「_」「.」「!」「~」「*」「'」「(」「)」「%」
  • Query String
    • カタカナで「くえりすとりんぐ」と書いてあったので、しばらく理解できなかった。
    • よく漏れる
      • Webサーバのログ
      • Firewallのログ
      • Proxyのログ
      • ブラウザのキャッシュ、history
    • 目的
      • 入力パラメータの送信
      • Webページ感のパラメータ受け渡し
      • Webアプリケーションのパラメータ付きリンク
    • 使ってよいケースとダメなケースを分ける
      • ダメな物
        • パスワード
        • 個人情報
        • Webサーバ、Webアプリケーション経由のシステム構造、データ構造
    • GETでなくPOSTにする。
    • Webページ感のパラメータわたしはセッションを使う。
  • Hidden Field
    • Hiddenを使ったWebページ間のデータ受け渡し
      • ブラウザを経由する
      • ユーザによる変更、改竄を前提に考える必要がある
    • セッションメカニズムを使うべき