Unicode / UTF-8エンコードされたディレクトリトラバーサル
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/11/30 13:29 UTC 版)
「ディレクトリトラバーサル」の記事における「Unicode / UTF-8エンコードされたディレクトリトラバーサル」の解説
正規化問題。 UTF-8はブルース・シュナイアー (Bruce Schneier) とジェフリー・シュトレイフリング (Jeffrey Streifling) によるCryptogram Newsletter July 2000において脆弱性と攻撃媒介の源として注目された。 Microsoftが自社のWebサーバにUnicode対応を追加したとき、../ をエンコードするための新しい方法が彼らのソースコードに入り込み、ディレクトリトラバーサル防止の試みが迂回されてしまう原因となった。その結果、 %c1%1c %c0%9v %c0%af のような複数のパーセントエンコードが / や \ の文字に変換された。 これはなぜかというと、パーセントエンコードはMicrosoftのWebサーバにより、対応する8ビット文字にデコードされたからである。WindowsとDOSはASCIIを基にした正規化された8ビット文字集合を伝統的に使っていたため、これは歴史的には正しい動作だった。 しかしながら、初期のUTF-8は正規化されていなかったものの、今や数種類の文字列が、同じ文字列に変換されうる文字列エンコーディングになった。MicrosoftはUTF-8を正規化することなくトラバーサル対策チェックを行っていたため、(HEX) C0AF と (HEX) 2F が文字列比較を行うとき同じ文字となることに気付かなかった。 「Unicode正規化」も参照
※この「Unicode / UTF-8エンコードされたディレクトリトラバーサル」の解説は、「ディレクトリトラバーサル」の解説の一部です。
「Unicode / UTF-8エンコードされたディレクトリトラバーサル」を含む「ディレクトリトラバーサル」の記事については、「ディレクトリトラバーサル」の概要を参照ください。
- Unicode / UTF-8エンコードされたディレクトリトラバーサルのページへのリンク