Apache Tomcat の脆弱性(CVE-2017-12617)について
9月の中頃から少し騒がれていたApache Tomcatのリモートコード実行の脆弱性についてです。
関連する脆弱性は CVE-2017-12615、CVE-2017-12616、CVE-2017-12617 の3つです。 それぞれが順番に出てきて、情報が小出しにされている感じでしたが、結局条件を満たしていれば、影響範囲は割と広いようです。
結構早い段階で検証している方もいたので、PoCはあるということは分かっていました。
Tomcatの一連のRCEの脆弱性について(CVE-2017-12615, CVE-2017-12617) - Cat.6(ねころっく)
脆弱性の内容自体は以下の通りです(サイオスのセキュリティブログから)。
Tomcatの複数の脆弱性 ( CVE-2017-12617, CVE-2017-12615 , CVE-2017-12616 ) — | サイオスOSS | サイオステクノロジー
CVE-2017-12617
リモートからの任意のコード実行の可能性
重要度 - Important
影響するバージョン : 9.0.0.M1 to 9.0.0, 8.5.0 to 8.5.22, 8.0.0.RC1 to 8.0.46, 7.0.0 to 7.0.81
サーバ上の設定でHTTP PUTが有効になった状態(つまり、readonly initialisationパラメータをfalseに設定している時)でで動作している際に、特別に細工されたリクエストにより、サーバにJSPファイルをアップロードすることが可能です。このJSPにコードを仕込むことで、サーバ上で任意のコードを実行することが可能になります。
9/19に公開されたCVE-2017-12615に対する修正では、この問題は解決されませんでした。
CVE-2017-12615
リモートからの任意のコード実行の可能性
重要度 - Important
影響するバージョン : Windows:
7.0.0 to 7.0.79 Windows上でHTTP PUTが有効になった状態(つまり、readonly initialisationパラメータをfalseに設定している時)でで動作している際に、特別に細工されたリクエストにより、サーバにJSPファイルをアップロードすることが可能です。このJSPにコードを仕込むことで、サーバ上で任意のコードを実行することが可能になります。
この修正は実際には、リリース時のチェックの関係で7.0.81に加えられているため、更新する際には7.0.81にする必要が有ります。
CVE-2017-12616
情報流出の可能性
重要度 - Important
影響するバージョン : 7.0.0 to 7.0.80
VirtualDirContextを使用している際に、セキュリティ制限をバイパスすることが出来ます。これにより、特別に細工されたリクエストを用いてVirtualDirContextにより提供されるJSPリソースのソースコードを見る事が可能になります。
CVE-2017-12617 の検証
Linux環境でTomcatのリモートコード実行を行ってみました。 readonlyパラメータをfalseにしておくと、PUTメソッドでファイルがアップロードできます。
検証環境
設定ファイルの変更
Tomcatの「conf/web.xml」ファイルでreadonlyパラメータをfalseにします。
攻撃コードの実行
脆弱な Tomat サーバに対してPUTメソッドでファイルを設置します。
テストのファイルをPUTし、アクセスすると、ファイルが作成されていることが分かります。
JSPファイルをアップロードすることで任意のコード実行が可能です。
アップロードしたファイルにアクセスして、「whoami」を実行してみます。
コマンドの実行結果が返ってきました。
ちなみに、脆弱な設定になっていないTomcatサーバへPUTをしようとしても403が返ってきます。
脆弱性の内容としてはPUTによるファイルアップロードが実態のようです。JSPファイルをアップロードしてコード実行が行うことができますが、バックドアをアップロードしてコード実行を行うのは一般的な攻撃手法なので、なぜリモートコード実行の脆弱性なのかが分かりません。
検証してみた感想としては、これただのPUTじゃんという思いが強いのですが、PUTが可能ということ自体が重大な脆弱性であるので、アップデートするなり適切な対処をしましょう。
参考
Tomcatの複数の脆弱性 ( CVE-2017-12617, CVE-2017-12615 , CVE-2017-12616 ) — | サイオスOSS | サイオステクノロジー
Apache Tomcatに含まれる脆弱性(CVE-2017-12617)に関する脆弱性検証レポート | NTTデータ先端技術株式会社
Tomcatの一連のRCEの脆弱性について(CVE-2017-12615, CVE-2017-12617) - Cat.6(ねころっく)