Apache+mod_perlのCSS予防法 22
ストーリー by Oliver
ユーザを信じるな 部門より
ユーザを信じるな 部門より
k3c 曰く、 "CSSといってもカスケーディングスタイルシートではありません。最近なにかと話題を巻き起こしているクロスサイトスクリプティング脆弱性の方です。Apache+mod_perlで運用しているWebサイトにおいてこの脆弱性を予防する方法がperl.comの記事で紹介されています。Apache::Requestモジュールの代わりにApache::TaintRequestモジュールを使えば、フォームのインプットから自動的に<や>や"やその他アヤシゲな文字をエスケープしてくれるんだそうです。
Apache+mod_perlなWebサイトが増えつづけているようですが、そのうちどれほどがこういう対策に労力を割いているんでしょうか。"
この対処法は本当に使いものになるのか? (スコア:3, すばらしい洞察)
この方法では次の問題が考えられるのではないでしょうか。
問題なのは、クロスサイトスクリプティングのことを考えずに一旦作ってしまったモノに対して、後から緊急に対策をする場合です。入力値に依存しそうなところだけ目を皿にして探して対策するのでは、必ず見落としが出てくるでしょう。そういうときの緊急避難に使えるのが、今回ネタにたれ込まれた方法と言えるかもしれません。がしかし、上に述べたように、必要以上にエスケープしてしまったり、不完全だったりして、使えないのではないでしょうか。
やはり、緊急対策の場合も、すべての文字列出力をエスケープするようにする(タグを出力するところだけ目を皿にして探す)のが妥当のように思えますが、いかがか。
Re:この対処法は本当に使いものになるのか? (スコア:1)
既にデータベースに格納されているものに対しては対策にならない、というのは、その通りです。それはデータベースから引き出す窓口をなるべく少なくして、その部分で除染するとか、そういう対策が必要でしょう。
しかし少なくとも、このモジュールを通しておけばタグはみんなエスケープされる、というものがあれば、その後の設計はかなり楽になると思います。入力はみんな片っ端からそのモジュールを通せばいいわけですから。
あと、当然のことですが、タグだけエスケープしてクロスサイトスクリプティングだけ防げば他の対策は何もしなくていいというわけではないですよね。バッファオーバーフローだって気を付けなきゃいけないし、他にもいろいろありますよね…。
私がこれを紹介したのは、クロスサイトスクリプティング対策の一つとしてこんなのどうですか?というつもりでした。もちろんこれだけでいいというつもりは毛頭ありません。Apache::TaintRequestを使って、かつ出力側でも対策すれば、さらにデータベースの書き込み・読み出しも対策すれば、より心強いのは言うまでもありません。あとからソースコードに手を入れる人がApache::TaintRequestを使わずにApache::Requestを使ってしまう可能性だってあるわけですから。
ちょっと言い訳がましいですが、ワタシの意見としてはこんなところです。
Re:この対処法は本当に使いものになるのか? (スコア:1)
下の方にApache::TaintedRequestそのもののコードがあって、これを見ると、どうやらprintメソッドをオーバーライトして、そこで除染しているようです…失礼しました。
# ちゃんと全部読み直してから反応せい>自分
CSSという略(微妙におふとぴ) (スコア:2, 参考になる)
このトピックスもひょっとしてApacheでカスケーディングスタイルシートの適用を予防すると勘違い・・・する人はいないか。流石に。
#でもCSS対処法って書いたらあるいはperlでスタイルシートを生成することだと・・・思わないか。
で、個人的にはXSSって呼んでみたらいいんじゃないかなと思うんですがどうでしょうね。使われて広まわらなければどうしようもないですが。
/.configure;oddmake;oddmake install
XSS (スコア:2, 参考になる)
Googleで"Cross Site Scripting"を検索すると、コメント執筆段階で;
Re:XSS (スコア:1)
ご指摘ありがとうございます。タイトルの文字数には制限があるようで、ここでタイトルにクロスサイトスクリプティングと書くと過去の経験から言ってタブン制限を越えてしまうと思ったので、タイトルではCSSと書き、本文で注釈を付けました。
XSSというのは思いつきもしませんでした。うむ、これからはそう略することにします。でも、どっちにしても、当分、本文で一度は「クロスサイトスクリプティング」と注釈せねばならぬのでしょうね…そもそもメディアに全然出ないもんなあ、この言葉…ぶつぶつ…。
Re:XSS (スコア:1)
Re:XSS (スコア:1)
Re:XSS (スコア:1, 参考になる)
"XSS"って呼称はいいですね。自分も使おうっと。
これは、日本語訳 [hotwired.co.jp]もあります。 クロスサイトスクリプティング問題の説明としても優れたものだと思います。
/.は大丈夫? (スコア:1)
ここ(slashdot)もPerlを使っていると思いますが、対策は十分なのでしょうか?
>そのうちどれほどがこういう対策に労力を割いているんでしょうか。
という言葉は、/.にも向けられるべきと思うが、いかがかな?
#/.は対策をしていないとはどこにも書いていないが、対策済みとも書いていないんだよな。ちょっと不安。
Re:/.は大丈夫? (スコア:1)
/.-J [srad.jp](いや、OSDN Japanもか?)の対応がかなりアレゲな気がするのは私だけでしょうか。
やぱし、直したらちゃんと皆さんへお詫びと説明をしないといけないとおもいます。 [osdn.co.jp]
Re:/.は大丈夫?(-1:flamebeit) (スコア:0)
という疑いを拭いきれない。
/.-Jにご執心のようですね。
#Tea Roomは毎日拝見しております。
Re:/.は大丈夫?(-1:flamebeit) (スコア:1)
SourceForge の見られ方とか、責任分岐点のあり方とか、
かなりの意識の違いがあるとしか思えない。
/.-Jも/.もスクリプトを前提としてはいないでしょ。
「なもの、ブラウザの責任だ」といいたいに違いない。
勝手にデータを渡すのは、ブラウザだよ?
「IE(NN/NC)よ、そんなけったいな要求を通してくれるな」と
考えるのが普通では無かろうか。
けったいな要求を通すものを前提として動くなら、
それなりの対策は必要でしょうが。
免責 (スコア:3, 参考になる)
当サイトではJavaScriptなどのブラウザスクリプトを使用していないため、スクリプトをオフに設定しても正常に動作します。また、利用者がスクリプトをオフにしていることを前提として、安全対策をしているため、スクリプトをオンにしていることによって生ずるいかなる事故についても、当サイトは責任を負いません。当サイトをスクリプトをオンでご利用される方は自己責任でお願いします。
Re:免責 (スコア:1)
ScriptKidの感情論を演じてみたと言うことでお許し下さい
Re:免責 (スコア:1)
それと、 JavaScript は使われています。 JavaScript がオフでも正常に動作するというのは正しいですが。
ぼくはスクリプトを見て、スクリプトの目的は HTML ファイルがキャッシュに入っていても広告だけは毎回ダウンロードし直させることだと思いましたが、違う意図かもしれません(失礼、 SLASH のコードを読んだことはありません)。
(スレッド違いますが) XSS という略語は紛らわしくなくていいですね。今まで CSS と書くのも躊躇して、結局毎回「クロスサイトスクリプティング」と書いていたので、 XSS 採用決定。広まって定着してほしいです(世の中に XSS という略語が広まるより、 XSS がなくなってくれたほうが格段に嬉しいですが、現実的なほうで……)。
鵜呑みにしてみる?
Re:/.は大丈夫? (スコア:3, 参考になる)
(それ以前にも、 パターンA [sourceforge.net]、 パターンB [sourceforge.net]、 パターンC [sourceforge.net] と3回も指摘があったにもかかわらず。さらに言うと、jbeefがslashdot.jpに連絡した2件 [srad.jp]はこれらとも別パターンなので、少なくとも5パターンが過去にあったのかな。)
そして、その修正から6時間後、さらに新たにクロスサイトスクリプティング脆弱性が指摘 [sourceforge.net]されています。 このときようやく問題点を正しく理解なさったようで、このときは、
という反応があり、そして、 ご本人からBUGTRAQへ報告がなされる [securityfocus.com]こととなったようです。 取り急ぎ訳:でも (スコア:0)
ということは (スコア:0)
適当にあしらっておいて、適当に満足させておいてあげたほうがいいかも知れない、ということだね。よくわかったよ。
Re:ああ、こういうのを (スコア:0)
満足するのは自己顕示欲ではなく、好奇心だ。
もし、自分がアカウントを持っていサイトに 入力フォームがあるなら、CSS に関する脆弱性を 調査してみたいと思うだろう。
わずかではあっても、自分に成りすまされるのは 誰だって良くは思わないはずだ。
Re:ああ、こういうのを (スコア:0)
反証を期待していたのに、私怨っぽい厨ばかりひっかかる。
具体的な反論はないのか? [srad.jp]