水無月ばけらのえび日記

bakera.jp > 水無月ばけらのえび日記 > 直しても直しても直らない

直しても直しても直らない

2005年6月7日(火曜日)

直しても直しても直らない

JVN に新ネタ、「JVN#0DC004F6 desknet's におけるクロスサイトスクリプティングの脆弱性 (jvn.jp)」というものがでています。

この問題は、JVN#F88C2C13 (JVN#89DE2014の情報を追加) で対応されたパターン以外のスクリプトが実行可能である問題です。

以前指摘されて修正したはずの問題が別のパターンで可能だったという話のようです。実のところ、ブラウザベースのアプリケーションで HTML メールを安全に表示するというのはメチャクチャ大変なことなので、仕方ないのかなという気もします。

私が経験した事例では、HTML メールではありませんが、こんなケースがありました。

まずは HTML が添付できる掲示板の事例。

それから、また別の HTML が書ける掲示板の事例。

どちらも「修正しました」「修正できていません」と泥沼としか言いようのない経緯をたどり、結局修正できていません。

これらはそもそも「HTML が添付できる」「HTML が書ける」という仕様ですので、危険でない HTML は使用できるようになっていなければなりません。そして特定の危険な組み合わせだけをサニタイズしようとしているわけですが、それがもう茨の道なわけです。後者のケースでは、「HTML では REFC (参照終了区切り子、セミコロン) が省略可能なケースがある」などという知識が要求されているわけですが、そんなマニアックなところまで把握しているプログラマはどのくらいいるのでしょうか。さらには、HTML の仕様書には出ていない MSIE の怪しい挙動に至るまで理解している必要があります。

というわけで、「危険な記述だけをサニタイズする」という発想はもう物凄い茨の道です。直しても直しても次から次へと貫通方法が発見されるというのは、ある意味当然だとさえ思います。

そして思うのですが、上で軽く触れたような「こういうサニタイズではこういう貫通方法があるので駄目」というノウハウがどこかに蓄積されていて、ウェブアプリケーションを作ろうという人たちが自由に参照できる形になっていると、いろいろな人が幸せになれるのかもしれません。「IPA ISEC セキュア・プログラミング講座 (www.ipa.go.jp)」などに出ている事もあるのですが、もっと詳細に知らないと駄目な事ってあると思うのですよね。

……まあ、現状では「そういうのを公開すると一般ユーザが真似する」などと言う人が出てくるのは目に見えているので、難しいのでしょうけれど。

関連する話題: セキュリティ / クロスサイトスクリプティング脆弱性 / IPA / JPCERT/CC / JVN / 情報セキュリティ早期警戒パートナーシップ

最近の日記

関わった本など