I. 記述
URIはRFC 2396に従って
エンコードされるものである。特にこのRFCは%記号と16進文字を使って
任意のオクテット文字をエンコードする方法を提示している。
RFC 2396からの引用:
エスケープされるオクテットは3文字でエンコードされる。1文字目は
%記号であり、その後にそのオクテットのコードを表す2文字の16進数が
続く。例えば、"%20"はUS-ASCIIのスペース文字を表す。
escaped = "%" hex hex
hex = digit | "A" | "B" | "C" | "D" | "E" | "F"
他のあらゆるウェブサーバと同様に、Microsoft IISは入力されたURIを決まった書式に
デコードする。そこで、エンコードされた記号列
-
A%20Filename%20With%20Spaces
は
-
A Filename With Spaces
にデコードされる。
ところが困ったことにIISは入力されたものによっては二度デコード
してしまう。この2つ目のデコードは余計である。セキュリティチェックは
1つ目のデコードしかチェックしないが、IISは2つ目のデコード結果を
利用するようになっている。1つ目のデコードがセキュリティチェックに
パスし、2つ目のデコード結果が妥当なファイルを指していた場合、
本来そうであるべきでなくとも、そのファイルへのアクセスは許可されて
しまう。さらに詳しい情報は以下で得られる。
- http://www.microsoft.com/technet/security/bulletin/MS01-026.asp
- http://www.nsfocus.com/english/homepage/sa01-02.htm
- http://www.kb.cert.org/vuls/id/789543
ただし、侵入者はIISが行なう唯一のセキュリティチェックである
ファイルシステムが強制するACLを避けて通る
ことはできない。我々はウェブサーバを次の文書群で提供されるガイドライン
に従って設定することを推奨する。
-
http://www.microsoft.com/technet/security/iis5chk.asp
- http://www.microsoft.com/technet/security/iischk.asp
- http://www.microsoft.com/technet/security/tools.asp
こうしたガイドラインに従うことで、この問題に対する危険性(exposure)を減らし、
かつ、まだ現時点では見つかっていない問題にも対処できるであろう。
この問題はNSFocusが発見した。
CVEプロジェクトはこの脆弱性に対して次の識別番号を割り当てている。
-
http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2001-0333
この脆弱性はWeb Server Folder
Directory Traversal Vulnerability,と類似点が多い。Web Server Folder
Directory Traversal Vulnerability,は既に広く付け入られてきた脆弱性
である。これについては次の文書を参照せよ。
-
http://www.kb.cert.org/vuls/id/111677