HighVulnerabilityPatch available

JetBrains TeamCity CVE-2026-106218 and CVE-2026-106219: Kotlin DSL sandbox escape to server RCE and Git submodule local file read

A Kotlin DSL sandbox escape gives code execution on TeamCity servers, and Git submodule URLs could read local repos. Update to TeamCity 2026.2.1.

Published
Updated
Fixed in
TeamCity 2026.1.3 or 2025.11.7 (CVE-2026-106218); 2026.2.1 (CVE-2026-106219)
Exploitation
No exploitation reported for CVE-2026-106218 or CVE-2026-106219; the earlier CVE-2026-63077 has been in CISA KEV since 5 August 2026

Live scores

CVE-2026-106218
EPSS
0.003
low predicted chance of attack
VEDAS
0.053
little exploit evidence
On CISA KEV
Not listed
Detection rule
None yet

Live scores

CVE-2026-106219
EPSS
0.007
low predicted chance of attack
VEDAS
0.049
little exploit evidence
On CISA KEV
Not listed
Detection rule
None yet

Live scores

CVE-2026-63077
EPSS
0.936
very likely to be attacked soon
VEDAS
0.989
strong exploit evidence
On CISA KEV
Yes, since 2026-08-05
Detection rule
Nuclei · Suricata
EPSS (chance of attack)
100.1CVE-2026-63077 EPSS over time2026-082026-11-01
VEDAS (exploit evidence)
100.9CVE-2026-63077 VEDAS over time2026-082026-11-01

Thin horizontal line: the “likely” (EPSS 0.10) or “strong” (VEDAS 0.90) threshold. Shaded “no data” areas are periods when cve-scores did not publish.

What happened

On 6 October 2026, JetBrains published two TeamCity CVEs. Both need a logged-in user (CVSS PR:L) (CVE-2026-106218; CVE-2026-106219):

  • CVE-2026-106218 (CVSS 8.8): a Kotlin DSL sandbox escape “leading to RCE on the server”. Fixed in 2026.1.3 and 2025.11.7. Those are the July builds that also fixed CVE-2026-63077, so the bug was patched months before it was disclosed.
  • CVE-2026-106219 (CVSS 6.5): missing validation of Git submodule URLs “allowed reading local repositories on the server”. Fixed in 2026.2.1.

TeamCity’s Kotlin DSL is the code form of project configuration, usually kept in a repository as versioned settings. The server compiles and runs it, inside a sandbox, to produce the build configuration. An escape means that a user who can change that DSL may be able to run code on the server itself, with access to everything TeamCity stores.

JetBrains does not publish technical details for these CVEs. CISA’s ADP marks exploitation as “none” for both, and neither is in KEV (CISA KEV). TeamCity 2026.2.1 and 2026.1.5 came out on 5 October and fix 41 and 27 security problems respectively (JetBrains blog; 2026.2.1 release notes; 2026.1.5 release notes).

The earlier, exploited bug. CVE-2026-63077 (CVSS 9.8) lets an unauthenticated attacker run OS commands through the agent polling protocol. It was fixed in 2025.11.7 and 2026.1.3 on 27 July, with a security patch plugin for 2017.1 and later (JetBrains). On 7 August JetBrains reported active and attempted exploitation of unpatched servers (JetBrains). CISA added it to KEV on 5 August and marks it as known to be used in ransomware (CISA KEV).

Am I affected?

Server versionCVE-2026-106218CVE-2026-106219CVE-2026-63077 (exploited)
Before 2025.11.7, or 2026.1 before 2026.1.3AffectedAffectedAffected
2025.11.7 or later 2025.11.x; 2026.1.3 or later 2026.1.xFixedAffected per the CVE recordFixed
2026.2.0FixedAffectedFixed
2026.2.1 or laterFixedFixedFixed

The CVE-2026-106219 record names only 2026.2.1 as fixed. It does not say whether 2026.1.5 contains the fix, so we treat 2026.1.x as affected.

The version appears in the footer of the TeamCity web UI. Over the REST API:

bash
curl -s -H "Authorization: Bearer $TEAMCITY_TOKEN" https://teamcity.example.com/app/rest/server/version

If your server was ever below 2026.1.3 or 2025.11.7, check for CVE-2026-63077. JetBrains says to search the server logs for these messages (JetBrains):

bash
# Possible attempted or successful exploit before patching
grep -r 'com.thoughtworks.xstream.converters.ConversionException' <TeamCity_home>/logs/

# Attempt blocked after patching
grep -r 'com.thoughtworks.xstream.security.ForbiddenClassException' <TeamCity_home>/logs/

Also review the list of unauthorized build agents for unexpected entries, especially names that start with scan. JetBrains says the date shown for such an agent is not the attack time; use the log timestamps.

What to do now

  1. Update to TeamCity 2026.2.1 or later. Use the built-in automatic update, the installer, or the updated Docker image (JetBrains blog). On 2026.1.x, 2026.1.5 is the newest bug-fix release, but see the caveat above for CVE-2026-106219.
  2. Do not rely on the CVE-2026-63077 patch plugin. JetBrains says it addresses only that one CVE. It does nothing for CVE-2026-106218 or CVE-2026-106219 (JetBrains).
  3. Limit who can change Kotlin DSL settings until you have updated. Review who can edit project settings and who can push to the repositories and branches that hold versioned settings. That is our inference from the bug; JetBrains has published no workaround.
  4. Keep TeamCity off the internet. JetBrains recommends limiting network access to trusted networks, using a VPN for remote access, running the server with minimum OS privileges, and keeping it on a host separate from build agents (JetBrains).
  5. If the CVE-2026-63077 log check finds ConversionException before you patched, treat the server as compromised. JetBrains says a successful exploit could expose stored credentials and “compromise the integrity of build artifacts and downstream CI/CD pipelines”. Rebuild the server, rotate the secrets it stores (VCS tokens, cloud keys, deployment credentials), and review recent build artifacts. Remove unauthorized agents named scan*.

Sources