CVE-2026-63077:TeamCityの復旧をCI制御プレーンの信頼再構築として進める
- 8月16日
- 読了時間: 8分
CVE-2026-63077は、TeamCity On-Premisesのagent polling protocolを経由して未認証のリモートコード実行を可能にする脆弱性です。脆弱なサーバーへHTTP(S)で到達できれば、認証や利用者の操作を要しないと説明されています。NVDには、JetBrains CNAが付与したCVSS v3.1の9.8、およびCWE-502が記載されています。
JetBrainsは2026年7月27日に本件を公表し、初回告知時点では実悪用を認識していないとしていました。その後、8月7日の更新では、未修正のTeamCityサーバーを標的とした実悪用および悪用試行の報告を受領したとしています。
本稿では、公開されたJetBrainsおよびNVDの情報で確認できる範囲と、そこから導く復旧上の判断を分けます。焦点は、サーバーへのパッチ適用だけでなく、CI/CDの制御プレーンとして接続するエージェント、設定、資格情報、成果物の信頼をどう再構築するかです。
確認できる範囲:影響、修正版、悪用報告
【事実】JetBrainsは、TeamCity On-Premisesの全バージョンが影響を受けると案内しています。修正版は2025.11.7および2026.1.3です。TeamCity Cloudには必要な対策が適用済みであり、顧客側の対応は不要とされています。導入形態がCloudかOn-Premisesかを最初に確認してください。
【事実】JetBrainsは脆弱性を2026年7月10日に受領し、7月27日に公開しました。初回告知後、8月7日の更新で未修正サーバーに対する実悪用と悪用試行の報告を受領したと公表しています。これは初回告知時点の認識と、その後に受領した報告を区別した時系列です。
【限定】確認したJetBrainsのアドバイザリと更新告知、ならびにNVDの記録には、被害組織名、攻撃者、侵害件数、侵害後の操作、ネットワークIOC、成果物改ざんの実証例は記載されていません。実悪用の報告は緊急対応の根拠ですが、特定の侵害後行為や成果物改ざんを確認済みの事実として扱うべきではありません。
脆弱性:CVE-2026-63077
影響対象:TeamCity On-Premisesの全バージョン
修正版:2025.11.7、2026.1.3
攻撃条件:脆弱なサーバーへのHTTP(S)到達性
認証・利用者操作:不要
CWE:CWE-502(Deserialization of Untrusted Data)
CVSS v3.1:9.8(JetBrains CNA提供、AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
なぜサーバーRCEをCI制御プレーンの問題として扱うのか
【事実】TeamCityの通常設計では、ビルドエージェントは単方向のpolling protocolでサーバーと通信します。公式ドキュメントは、エージェントが接続先サーバーを信頼する必要があり、サーバーを制御できる者は接続済みエージェントで任意コード実行を強制し得ると説明しています。
【推論】このため、サーバーのRCEはサーバープロセスのOS権限だけでは評価しきれません。TeamCityが保持または仲介するサービス接続、アクセストークン、ビルド設定、接続済みエージェント、成果物の生成・配布経路に応じ、調査と復旧の境界が広がり得ます。これは、それらの資産が本件で侵害されたという意味ではなく、侵害疑いがある場合の調査境界を設計するための整理です。
共有エージェントで一般的なビルドと高信頼のリリース処理を混在させる運用では、復旧時に確認すべき範囲が大きくなります。署名鍵やデプロイ資格情報がTeamCityまたは接続先に存在する場合には、それらも条件付きで調査・保護対象に含めます。
信頼伝播の整理:外部HTTP(S)到達性 → TeamCityサーバー → 接続資格情報・ビルド設定 → 接続済みエージェント → 成果物・下流デプロイ
この経路は本件で実害が確認された流れではなく、製品の信頼モデルと運用権限から導く調査上の到達可能性です。
HTTPSによる通信保護は重要ですが、未認証アクセス、入力処理、またはサーバーとエージェント間の信頼境界に対する代替統制ではありません。
封じ込め:更新を基本とし、pluginは代替緩和策として位置付ける
【事実】JetBrainsが示す第一の対策は、2025.11.7または2026.1.3への更新です。直ちに更新できない場合には、TeamCity 2017.1以降を対象とするsecurity patch pluginが提供されています。このpluginはCVE-2026-63077だけを対象とし、他の修正を含むアップグレードの代替ではありません。
【事実】plugin導入後の再起動要件はバージョンで異なります。TeamCity 2017.1から2018.1ではサーバー再起動が必要ですが、2018.2以降では再起動なしで有効化できます。
【提案】本稿ではpluginを、更新までの代替緩和策として位置付けます。未修正で外部公開されているOn-Premisesサーバーは、更新またはplugin適用まで外部アクセスを一時的に制限することを優先します。これはJetBrainsの更新告知でも推奨されています。侵害の疑いがある場合は、封じ込めと証跡保全を考慮し、パッチ適用だけで調査を終了しません。
通常時の選択:2025.11.7または2026.1.3へ更新する。
更新を直ちに実施できない場合:2017.1以降ではsecurity patch pluginを適用し、更新計画を継続する。
2017.1〜2018.1:plugin適用後にサーバー再起動が必要。
2018.2以降:pluginは再起動なしで有効化できる。
外部公開を継続する場合:更新またはplugin適用までのアクセス制限を検討する。
検知:確定IOCではなく調査トリアージとして扱う
【事実】JetBrainsは今回固有の調査上の兆候として、TeamCityサーバーログの`com.thoughtworks.xstream.converters.ConversionException`と、未承認エージェント一覧にある`scan`で始まる名前のエージェントを挙げています。いずれも調査開始の手掛かりであり、単独で侵害を確定するIOCとして扱うべきではありません。
【事実】`scan`で始まる未承認エージェントに表示される日付は、悪用試行の時刻を意味するとは限りません。JetBrainsは、時刻の判断には関連ログのタイムスタンプを使うよう案内しています。
【提案】兆候を見つけた場合は、例外ログ、エージェント承認履歴、ビルド実行履歴、設定変更、plugin変更、サービス接続およびトークン利用の記録を同じ時間軸で確認します。兆候が見つからないことだけで侵害なしとは結論付けず、外部到達性と未修正期間を踏まえて調査範囲を決めます。
優先確認:サーバーログの`com.thoughtworks.xstream.converters.ConversionException`
優先確認:未承認エージェントに存在する`scan*`という名前
時刻確認:未承認エージェント画面の日付ではなく、関連ログのタイムスタンプを参照する。
横断確認:エージェント承認、ビルド設定、plugin、サービス接続、トークン、成果物・キャッシュの変更記録を突き合わせる。
復旧判断表:「最後に信頼できる成果物」を決める
【事実】JetBrainsのTeamCity侵害調査ガイダンスでは、侵害期間中に接続していたエージェントについて、改変ビルドの実行、plugin導入、またはAgent Terminal経由の操作があればリスク下にあるとしています。疑いのあるエージェントはネットワークから隔離し、既知の正常状態への復元、または消去・再導入を検討するよう案内されています。このガイダンスはCVE-2024-27198を例にした一般的な対応であり、CVE-2026-63077で観測済みの手法を示すものではありません。
【事実】同ガイダンスは、サービス接続資格情報、ユーザー資格情報、アクセストークン、認証モジュール、プロジェクトおよびビルド設定、plugin、ツールを調査対象に含めています。サービス資格情報のローテーションと、外部サービス側における不審操作の監査も推奨しています。エージェントまたは設定が改変された可能性がある場合には、侵害開始から現在までの成果物とビルドキャッシュを安全でないものとして扱う検討が必要です。
【提案】復旧の完了条件を「サーバーを修正した時刻」だけに置かず、「最後に信頼できるビルドはいつか」を決める作業を独立させます。以下の対応関係を使うと、何を根拠に信頼を回復するかを整理できます。
TeamCityサーバー:確認対象は公開到達性、設定変更、plugin、認証モジュールです。復旧判断は修正版への更新またはplugin適用だけでなく、侵害疑いの有無と証跡確認を含めます。
接続エージェント:確認対象は侵害期間中の接続、改変ビルド、plugin導入、Agent Terminal経由の操作です。疑いがあれば隔離し、既知の正常状態への復元または消去・再導入を検討します。
資格情報とサービス接続:確認対象はサービス資格情報、ユーザー資格情報、アクセストークン、外部サービス側の不審操作です。復旧判断はローテーションと外部側の監査を組み合わせます。
ビルド設定・plugin・ツール:確認対象は信頼できるベースラインとの差分です。設定をバージョン管理している場合、その履歴は差分確認の根拠になります。
成果物とビルドキャッシュ:エージェントまたは設定の改変が疑われる場合、侵害開始時点から現在までを再評価の対象とします。再ビルド、利用可能な署名・来歴情報の検証は、信頼回復の根拠を補強します。
平時の改善を復旧根拠につなげる
【提案】OWASPは、ビルド環境の侵害、CI/CDシステムの悪用、署名証明書の窃取、ビルドキャッシュ汚染などをソフトウェア供給網の脅威として挙げています。本件の復旧で来歴情報や署名を確認する意義は、侵害疑いの期間に生成された成果物を無条件に信頼せず、再ビルドや検証の根拠を持つためです。
【提案】ビルド設定のバージョン管理、ビルド環境のネットワーク分離、短命かつ隔離されたエージェント、リリース処理用の分離されたエージェントプールは、平時の防御だけでなく、侵害後に再評価する範囲を限定するためにも役立ちます。NIST SSDFは、未検知・未対処の脆弱性が悪用された場合の影響低減と、再発原因への対処を含む安全な開発実践を示しています。
一般開発ジョブと高信頼のリリース処理を、同一の共有エージェントに混在させない。
ビルド設定の変更履歴を保持し、信頼できるベースラインとの差分を確認可能にする。
ビルド環境をネットワーク面で分離し、短命で隔離されたエージェントを活用する。
成果物の再評価時に利用できるよう、署名および来歴情報の生成・検証を運用に組み込む。
まとめ
CVE-2026-63077について、JetBrainsは未修正のTeamCity On-Premisesサーバーを標的とした実悪用および悪用試行の報告を受領したと公表しています。まずは2025.11.7または2026.1.3への更新を優先し、更新できない場合にはsecurity patch pluginを代替緩和策として検討します。
ただし、サーバーの修正だけでは復旧の終点になりません。侵害の疑いがある場合には、サーバーがエージェントを制御し得る信頼モデルを前提に、資格情報、設定、接続エージェント、成果物、ビルドキャッシュの調査境界を設計する必要があります。
公開情報で確認できない攻撃者、被害規模、侵害後の操作を推測で補わず、公開された調査上の兆候、自組織の公開到達性、接続権限、成果物経路を根拠に、「最後に信頼できる成果物」を判断することが重要です。
参考資料
https://blog.jetbrains.com/teamcity/2026/07/cve-2026-63077/
https://blog.jetbrains.com/teamcity/2026/08/cve-2026-63077-update/
https://nvd.nist.gov/vuln/detail/CVE-2026-63077
https://www.jetbrains.com/help/teamcity/security-notes.html
https://www.jetbrains.com/teamcity/features/security/
https://blog.jetbrains.com/teamcity/2024/03/investigating-a-compromised-teamcity-on-premises-server/
https://cheatsheetseries.owasp.org/cheatsheets/Software_Supply_Chain_Security_Cheat_Sheet.html
https://csrc.nist.gov/pubs/sp/800/218/final


