CVE-2026-63077
CVE-2026-63077
概要
JetBrains TeamCityにリモートコード実行のクリティカル脆弱性(CVE-2026-63077)
脆弱性情報(NVD)
- 深刻度: 緊急(CVSS 9.8)
- CVSSベクター:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - CWE: CWE-502
- EPSS: 86.52%(上位 0.3%)
影響を受けるバージョン:
- Jetbrains Teamcity: < 2025.11.7
- Jetbrains Teamcity: >= 2026.1, < 2026.1.3
概要(日本語): CVE: CVE-2026-63077
説明: JetBrains TeamCity の 2026.1.3 および 2025.11.7 より前のバージョンにおいて、エージェントポーリングプロトコルを介して、認証されていないリモートコード実行が可能でした。
原文: In JetBrains TeamCity before 2026.1.3, 2025.11.7 unauthenticated remote code execution was possible via the agent polling protocol
技術詳細
脆弱性の概要
TeamCityのエージェントポーリングプロトコルにおいて、Javaの安全でないデシリアライゼーション(CWE-502)が存在し、認証されていない攻撃者が細工したシリアライズドオブジェクトを送信することで任意のコードをリモートで実行可能です。影響を受けるバージョンは2026.1.3未満および2025.11.7未満のすべてのTeamCityサーバーです。
根本原因
エージェントがサーバーにタスク要求を行うポーリング通信の処理において、信頼できないデータを適切な検証なしにデシリアライズする実装が存在します。この処理が認証を必要とせずに公開されているため、外部から悪意のあるシリアライズドペイロードを注入され、任意のコードが実行されます。
攻撃シナリオ
- 攻撃者は標的のTeamCityサーバーが稼働するホストのエージェントポーリング用エンドポイント(具体的なパスは情報不足)を特定します。
- ysoserial等のツールを用いて、コマンド実行用のガジェットチェーンを含むシリアライズドJavaオブジェクトを生成します。
- 生成したペイロードをHTTP POSTリクエスト等で該当エンドポイントに送信します。
- サーバー側でペイロードがデシリアライズされ、攻撃者の指定したコマンドがTeamCityプロセスの権限で実行され、サーバーが完全に制御されます。
検出方法
ブラックボックステスト
注意: 具体的なエンドポイントは情報不足ですが、エージェントポーリング通信は通常HTTP上で行われます。以下の例はテストの概念を示します。実際のエンドポイントは調査が必要です。
- テスト方法: 悪意のあるシリアライズドペイロードを送信し、応答や挙動を観測します。
- curlコマンド例(エンドポイントを仮定):
curl -X POST -H "Content-Type: application/octet-stream" --data-binary @payload.ser https://<TeamCityホスト>/agent/pollpayload.serはysoserial等で生成したファイルです。 - 確認ポイント: 応答遅延、DNS/HTTPコールバックの受信、またはサーバー上でのコマンド実行結果(ファイル作成など)を確認します。ペイロードに
curl http://<your-server>/<unique-id>を含め、アウトオブバンドで検出する方法が有効です。
ホワイトボックステスト
- ソースコード確認方法: TeamCityサーバーのエージェント通信処理を担当するクラスを調査します。
- grepコマンド例:
特にエージェントポーリングに関連するハンドラ(例:grep -r "ObjectInputStream" --include="*.java" <TeamCityサーバーソースパス> grep -r "readObject" --include="*.java" <TeamCityサーバーソースパス>AgentPollingController等)内で、入力ストリームを直接デシリアライズしている箇所がないか確認します。該当処理が認証チェックなしで行われている場合、脆弱性が存在します。
対策
恒久的対策
- パッチ適用: 修正済みのバージョン(2026.1.3 または 2025.11.7)へアップグレードします。
- アップグレード手順(例):
- 公式サイトから該当バージョンのインストーラをダウンロードします。
- サーバーを停止し、既存のインストールディレクトリをバックアップします。
- インストーラを実行し、既存のデータディレクトリを指定してアップグレードします。
- サーバーを起動し、正常に動作することを確認します。
- コマンド例(Linux環境・インストーラ形式に依存):
systemctl stop teamcity ./TeamCity-2026.1.3.sh --install-dir /opt/TeamCity systemctl start teamcity
暫定対策
パッチ適用が即座に行えない場合、以下の軽減策を実施します。
- ネットワークアクセス制御: エージェントポーリングに使用されるポート(デフォルト: 8111)を信頼できるエージェントのIPアドレスのみに制限します。ファイアウォールやセキュリティグループで設定します。
- WAF/リバースプロキシ: デシリアライゼーション攻撃パターン(例:
ac ed 00 05で始まるJavaシリアライズドストリーム)をブロックするルールを適用します。 - サービスアカウントの最小権限化: TeamCityサーバープロセスを実行するOSユーザーの権限を制限し、被害を局限化します。
- 監視: 異常なエージェントポーリングリクエスト(通常と異なるサイズ、頻度、送信元)を検知するログ監視を強化します。
参考リンク
- www.jetbrains.com
Vendor Advisory - www.cisa.gov
US Government Resource
言及日
VulnCheck KEV
- 製品: JetBrains TeamCity
- CISA KEV 掲載: ✅ あり
- ランサムウェア悪用: Unknown
PoC / Exploit
- initial-access: GitHub(sfewer-r7/CVE-2026-63077) / VulnCheck XDB
- initial-access: GitHub(BoredHackerBlog/teamcity-CVE-2026-63077-pcap) / VulnCheck XDB
- initial-access: GitHub(AnggaTechI/CVE-2026-63077) / VulnCheck XDB