【Tomcat】Tomcat の readonlyパラメータについて

■ はじめに

https://blogs.yahoo.co.jp/dk521123/37059239.html
で、Tomcat 脆弱性「CVE-2017-12617」(「CVE-2017-12615」「CVE-2017-12616」も同じ原因)に触れた。
その脆弱性と、それに関わるTomcat の readonlyパラメータについて、調べてみた

Tomcat 脆弱性「CVE-2017-12617」

http://jvn.jp/vu/JVNVU99259676/ (CVE-2017-12615, CVE-2017-12616, CVE-2017-12617)
http://jvn.jp/vu/JVNVU99259676/index.html (CVE-2017-12615, CVE-2017-12617)
上記に関するニュース
http://www.security-next.com/086349
http://internet.watch.impress.co.jp/docs/news/1082834.html
https://oss.sios.com/security/tomcat-security-vulnerabiltiy-20170920
http://gihyo.jp/admin/serial/01/infrasec/0038

影響範囲

 * readonlyパラメータが「false」に設定され、HTTP PUTメソッドが有効になっている場合

起こりうる影響

 * 特定の条件下で JSP ファイルをアップロードされる
 * 情報漏えい
 * 遠隔からの任意のコード実行

対応策

 * 最新版のTomcatをインストールする
できない場合は...
 * readonlyパラメータを「true」にし、HTTP PUTリクエストを受け付けないよう設定する
  => ただし、CVE-2017-12616(Apache Tomcat 7.0.0 ~ 7.0.80)については
     readonlyパラメータがtrueであっても発現する

■ readonlyパラメータ

 * 「読み込み専用」かどうかを設定。
  => PUT / DELETE といった HTTP コマンドを拒否するかどうかを示す
 * デフォルトは「true」
 * readonlyパラメータを true にすることで、ファイルのアップロードを可能にする

$CATALINA_HOME/conf/web.xml

<servlet>
  <init-param>
    <param-name>readonly</param-name>
    <param-value>true</param-value>
   </init-param>
   ... 略 ...