Tenable ブログ
ブログ通知を受信するCVE-2020-1938: Ghostcat - Apache Tomcat AJP における実行ファイル読み込み・インクルージョンに関する脆弱性 (CNVD-2020-10487)
Apache Tomcat における脆弱性に対する概念実証型エクスプロイトコードが複数リリースされました。この脆弱性には最近パッチが適用されています。
背景
2月20日、中国の脆弱性情報データベース(CNVD)は、Apache Tomcat の Apache JServ プロトコル(AJP)における重大な脆弱性である CNVD-2020-10487 のセキュリティアドバイザリを公開しました。AJP は、パフォーマンスを向上させるために、アプリケーションサーバー宛てに Web サーバーに送信された要求を処理するように設計されたバイナリプロトコルです。
Ghostcat ロゴ (Chaitin Tech 作成)
Ghostcat と呼ばれるこの脆弱性は Chaitin Tech の研究者らにより発見され、2020年1月3日に Apache Software Foundation に報告されました。
分析
CVE-2020-1938は、Apache Tomcat の AJP コネクタにおける実行ファイル読み込み・インクルージョンに関する脆弱性です。 デフォルトの構成ポートは8009で、デフォルトでは有効になっています。この脆弱性が悪用されるとリモートの認証されていない攻撃者により脆弱なサーバーから Web アプリケーションファイルが読み取られる可能性があります。脆弱なサーバーがファイルのアップロードを許可している場合、攻撃者はさまざまなファイルタイプ内に悪意のある JavaServer Pages(JSP)コードをアップロードし、この脆弱性を悪用してリモートからコードを実行(RCE)する可能性があります。
Apache Tomcat 6、7、8、および9の /conf/server.xml ファイルでは、AJP がデフォルトで有効になっているため、パッチが適用されていないすべての Tomcat のバージョンは Ghostcat に対して脆弱です。
研究コミュニティによる報告
Apache Tomcat AJP Vulnerability (CNVD-2020-10487/CVE-2020-1938 ) .This vulnerability was discovered by a security researcher of Chaitin Tech .
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— Henry Chen (@chybeta) February 20, 2020
Alibaba Cloud のセキュリティ研究者である Henry Chen 氏は、この脆弱性を悪用すると 「Web アプリケーションファイルを読み取ったり、リモートからのコード実行に使用するファイルを含めることができる」ことを確認するツイートを公開しました。Chen 氏は、脆弱性の悪用に成功したことを示す GIF を共有しました。
just for clarify: CVE-2020-1938 is NOT a default Remote Code Execution vul. It is a LFI. So, IF you can:
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.— Joao Matos (@joaomatosf) February 21, 2020
もう一人のセキュリティ研究者、Joao Matos 氏は、ファイルのアップロードを許可している場合等では、アップロードされたファイルが「ドキュメントルート内に保存され」、AJP ポートに直接到達できる場合、リモートからコードが実行される可能性があることを確認しました。
潜在的な影響
2010年の Apache Software Foundation によるブログ記事によると、Apache Tomcat は1000万回以上ダウンロードされています。Apache Tomcat はさまざまなソフトウェアアプリケーションで使用され、多くの場合、組み込み Web サーバーとしてバンドルされています。この脆弱性の潜在的な影響は広範囲ですが、現時点では完全な状況は把握されていません。この脆弱性に関する情報はまだ公開されたばかりですが、今後数週間から数か月にわたって本脆弱性の影響に関する詳細が公開されることでしょう。
概念実証
セキュリティアドバイザリが発行されてから、複数の研究者が GitHub で概念実証型エクスプロイトスクリプト [1, 2, 3, 4, 5] を共有しています。
ソリューション
パッチの可用性
Apache は、Tomcat の以下のバージョンのパッチをリリースしています。
Apache バージョン | 影響を受けるリリースバージョン | 修正済みバージョン |
---|---|---|
Apache Tomcat 9 | 9.0.30 以下 | 9.0.31 |
Apache Tomcat 8 | 8.5.50 and below | 8.5.51 |
Apache Tomcat 7 | 7.0.99 以下 | 7.0.100 |
この脆弱性は Apache Tomcat 6 にも影響を与えると報告されていますが、Apache Tomcat 6 はサポートされていない可能性が高く、Apache はパッチをリリースしていません。この脆弱性から確実に保護するためには、Tomcat の新しいバージョンにアップグレードすることを強くお勧めします。
緩和策
現時点でパッチを適用できない場合は、AJP コネクタがデフォルトで有効になっているため、この脆弱性の悪用を防ぐために以下の緩和策をとることを Chaitin Tech は推薦しています。
Web サイトで AJP コネクタを積極的に使用していない場合は、/conf/server.xmlファイルからコメントアウトします。
ただし、Web サイトで AJP コネクタを使用している場合、AJP コネクタに requiredSecret 属性が含まれていることを確認する必要があります。これはパスワードと同じく強力で一意である必要があります。
更新 2020年2月23日: 上記のセクションは、正しい属性 requiredSecret を参照するように更新されました。
影響を受けているシステムの特定
この脆弱性を識別するための Tenable のプラグインのリストは、リリースされた時点で こちら に表示されます。
詳細情報
- Chaitin Tech Ghostcat ページ
- CVE-2020-1938に関する CNVD セキュリティアドバイザリ (CNVD-2020-10487)
- Apache Tomcat 9.0 Changelog
- Apache Tomcat 8.5 Changelog
- Apache Tomcat 7.0 Changelog
Tenable コミュニティの Tenable セキュリティレスポンスチームに参加してみませんか。
最新のアタックサーフェスを総合的に管理する初のサイバーエクスポージャープラットフォーム、Tenable の詳細情報をご覧ください。
Get a free 30-day trial of Tenable.io Vulnerability Management.
関連記事
- Vulnerability Management