脆弱性Ghostcat(Apache Tomcatの脆弱性CVE-2020-1938) の脅威について
Webアプリケーションの開発などでよく用いられるJavaの実行環境ソフトウェアApacheTomcatにおいて、
脆弱性の実証コードが多数確認され、誰でも簡単に実行可能な状態であることが明らかになっています。
記事のタイミングが遅くなってしまいましたが、依然、脅威度は高いと思いますので、公開します。
目次
何が問題なの?
脆弱性の実証コードが公開されている
ソースコード共有サイトGithub上にすでに多数のPoCコード(脆弱性の実証コード)が確認されており、誰もが簡単に攻撃を行うことが簡単な状況です。
以下、実証コードの例
GitHub - 0nise/CVE-2020-1938: CVE-2020-1938
GitHub - laolisafe/CVE-2020-1938: CVE-2020-1938漏洞复现
GitHub - YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi: Tomcat-Ajp协议文件读取漏洞
脆弱性の該当箇所がデフォルトで有効になっている
今回の脆弱性は、Apache JServ Protocol (AJP)が通常のWeb通信で用いられるHTTP/HTTPSなどよりも信頼性の高い通信として扱ってしまい、本来アクセスできないサーバ上のコンテンツに、外部からアクセスできてしまうことにあります。
そして、このAJPがデフォルトで有効になっているため、対象のソフトウェアすべてにおいて設定の見直し、もしくはバージョンアップが必要になります。
影響範囲が広い
影響範囲が広く、2010年に公開された7系以降のバージョンすべてが対象になっています。
なお、米国のセキュリティベンダtenableなどによると、Apache Tomcat 6系においてもAJPがデフォルトで有効になっており、同様にして脆弱であることを注意喚起しています。
今回、6系の言及がないのは、すでにApache Tomcat6.xがサポートされていないことによるものだと推測されます。
脆弱性悪用の例
以下のような例も動画で公開されていました。
Apache Tomcat AJP Vulnerability (CNVD-2020-10487/CVE-2020-1938 ) .This vulnerability was discovered by a security researcher of Chaitin Tech .
— Henry Chen (@chybeta) 2020年2月20日
You can read any webapps files or include a file to RCE .JUST A POC-GIF with no DETAILS
Tomcat has fix this vulnerability ,UPDATE! pic.twitter.com/Jauc5zPF3a
ただ、ピンと来なかったので、PoCの一部から抜粋します。
- ファイルの読み込み
ここでは、"/WEB-INF/web.xml"を読み込みその結果を表示しています。
このWEB-INF配下のファイルは、通常外部からは見ることができず、外部に公開しない情報はここに格納することが多いです。
https://github.com/00theway/Ghostcat-CNVD-2020-1
- ファイルの実行
ここでは、サーバ上のa.txtというファイルに記載した文字列"pwn by 00theway"が実行されている様子がわかります。
これに関連して、セキュリティリサーチャーのツイッター上で、もし、Webサイトでファイルアップロード機能を許可している場合、そのファイルがドキュメントルート内に保存され、AJP ポートに直接到達できれば、外部からの任意のコード実行も可能であると言及しています。
just for clarify: CVE-2020-1938 is NOT a default Remote Code Execution vul. It is a LFI. So, IF you can:
— Joao Matos (@joaomatosf) 2020年2月21日
1) upload files via an APP feature &
2) these files are saved inside the document root (eg. webapps/APP/... &
3) reach the AJP port directly;
Thus, it can be turned in RCE.
脆弱性の修正プログラム
公式サイトにて脆弱性の修正プログラムが公開されていますので、該当する方は適用を推奨します。