濃縮還元オレンジニュース

Tomcatのディレクトリトラバーサル問題の調査ドキュメント「Apache-Tomcatと冗長なUTF-8表現」

Tomcat 6.0.16/5.5.26/4.1.37以下のバージョンにて発生するディレクトリトラバーサルの脆弱性について検証を行ったPDFドキュメントです。

この問題はserver.xmlまたはcontext.xmlに「URIEncoding=⁠UTF-8⁠⁠allowLinking=⁠true⁠⁠」という設定をしていた場合に起こります。Tomcat 4系以外は問題を修正した最新バージョンが公開されていますので、なるべく早めにバージョンアップを行ったほうがよいでしょう。

このドキュメントではまず「冗長なUTF-8表現」について説明しています。冗長なUTF-8表現とは、本来1バイトや2バイトで表現できる文字を2バイト、3バイトで表すことで、現在は仕様として禁止されています。たとえば「.(ピリオド⁠⁠/(スラッシュ⁠⁠」を冗長なUTF-8表現で表すと表1のようになります。

ドキュメントでは、これらを利用して、⁠/../a.htm」というパスでアクセスできない場合でも「/% c0%ae% c0% ae/a.htm」「/% e0% 80%ae% e0% 80% ae/a.htm」というパスに置き換えるとアクセスできてしまう例を示しています。スラッシュを置き換えた場合も同様に「/..% c0% afa.html」「/..% e0% 80% afa.html」でアクセスできてしまいます。

また、TomcatにてOSバイナリの実行プログラムのCGIを許可している設定をしていた場合、⁠/sbin/ifconfig」などの任意のプログラムを実行してしまう問題が起きてしまうことも実証しています。

表1 冗長なUTF-8表現
文字1バイト UTF-82バイト UTF-83バイト UTF-8
.(ピリオド)0x2E0xC0 0xAE0xE0 0x80 0xAE
/(スラッシュ)0x2F0xC0 0xAF0xE0 0x80 0xAF

URLhttp://rocketeer.dip.jp/secProg/Tomcat003.pdf

おすすめ記事

記事・ニュース一覧