水無月ばけらのえび日記

bakera.jp > 水無月ばけらのえび日記 > 2005年のえび日記 > 2005年2月 > 2005年2月17日(木曜日)

2005年2月17日(木曜日)

ASP.NET に XSS?

更新: 2005年2月20日

セキュリティホールmemo (www.st.ryukoku.ac.jp)から、XSS vulnerabilty in ASP.Net [with details] (www.st.ryukoku.ac.jp)というお話。

タイトルだけ見たら ASP.NET 自体にミドルウェアの欠陥として XSS が存在するかのように思えたので焦りましたが、そうではないみたいですね。

ASP.NET には、危険なリクエストを受けると例外をスローする validateRequest という機能があります。これはデフォルトで有効になっていて、プログラマがサニタイズを怠っていても問題が起きにくいようになっています。たとえば、POST されてきたクエリに <script> という文字列が含まれていると、こんなメッセージが出たりするわけです。

危険な可能性のある Request.Form 値がクライアントから検出されました。

説明 : 要求の検証により、危険性のあるクライアント入力値が検出されました。要求の処理は中止されました。この値は、クロス サイト スクリプト攻撃などのアプリケーションのセキュリティ問題を引き起こす可能性があります。ページ ディレクティブか、 構成セクションの validateRequest=false を設定することによって要求の検証を無効にできます。しかしこの場合、アプリケーションですべての入力を明示的に確認することをお勧めします。

ところが、< のかわりに全角の(U+FF1Cの)「<」を使用すると、この検証を通り抜けます。さらに、responseEncoding を windows-1251 (キリル文字) にしていると、これが正規化されて < に変化し、結果的に貫通してしまうという話のようです。

というわけなのですが、プログラマが外部入力値をサニタイズしていれば問題ありません。ASP.NET の機能に甘えず、きっちりサニタイズしておきましょうということで。

※ちなみに、ここではそもそも validateRequest を無効にしてあります。経緯については 掲示板の #138 あたりを参照。

※2005-02-20 追記: これは validateRequest に限った問題ではなく、responseEncoding が windows- 系の場合は全角のものもサニタイズしないといけないですね。CultureInfo.InvariantCulture の話というのは、こういう局面で生きてくるのでしょう。

関連する話題: セキュリティ / ASP.NET / クロスサイトスクリプティング脆弱性

カーネルrootkit

MS研究者、「カーネルrootkits」の脅威を警告 (www.itmedia.co.jp)……だそうで。rootkit って何となく UNIX 系環境と結びついたイメージがありましたが、Windows にもあるのですね。考えてみれば当たり前なのですけれど。

関連する話題: セキュリティ / Windows

URL偽装系新技

更新: 2005年5月12日

セキュリティホールmemoで紹介されていた (www.st.ryukoku.ac.jp)[Full-Disclosure] IE/OE Restricted Zone Status Bar Spoofing (lists.netsys.com)というお話。URL 偽装系の新技ですが、label要素がこう使えるとは盲点でした。

結構驚いたのですが、こんなのを書いてみると……

<p><label for="foo">test</label></p>
<p><a href="http://altba.com" id="foo">test2</a></p>

IE の場合、ラベルの方をクリックしただけで遷移してしまいます。IE は a要素もコントロールとして扱っているということなのでしょうか。

関連する話題: セキュリティ / HTML

ケーブルアンドワイヤレスIDC名称変更

C&W IDC、「日本テレコムIDC」に社名変更 (www.itmedia.co.jp)……だそうで。

まあ別に良いのですが、ドメインも変えたりするのかしら。そうなると DNS まわりでいろいろと面倒なことが……。

※2005-05-12 追記: 案の定 cwidc.net が idc.jp に変更になりました。

関連する話題: 思ったこと

最近の日記

関わった本など