CVE-2020-2099
Inbound TCP Agent Protocol/3 authentication bypass in Jenkins
Jenkins 2.213 and earlier, LTS 2.204.1 and earlier improperly reuses encryption key parameters in the Inbound TCP Agent Protocol/3, allowing unauthorized attackers with knowledge of agent names to obtain the connection secrets for those agents, which can be used to connect to Jenkins, impersonating those agents.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- Low
- Availability
- Low
Exploit likelihood
What each source reports
NVD Score used
8.6
Jenkins 2.213 and earlier, LTS 2.204.1 and earlier improperly reuses encryption key parameters in the Inbound TCP Agent Protocol/3, allowing unauthorized attackers with knowledge of agent names to obtain the connection secrets for those agents, which can be used to connect to Jenkins, impersonating those agents.
- Record
CVE-2020-2099- CVSS 3.1
- 8.6 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:L - CVSS 2.0
- 7.5 High
AV:N/AC:L/Au:N/C:P/I:P/A:P - Weakness
- CWE-330
- Updated
- 2026-11-02
CVE List No score
Jenkins 2.213 and earlier, LTS 2.204.1 and earlier improperly reuses encryption key parameters in the Inbound TCP Agent Protocol/3, allowing unauthorized attackers with knowledge of agent names to obtain the connection secrets for those agents, which can be used to connect to Jenkins, impersonating those agents.
- Record
CVE-2020-2099- Updated
- 2026-11-02
EUVDEUVD-2022-5008 No score
Jenkins 2.213 and earlier, LTS 2.204.1 and earlier improperly reuses encryption key parameters in the Inbound TCP Agent Protocol/3, allowing unauthorized attackers with knowledge of agent names to obtain the connection secrets for those agents, which can be used to connect to Jenkins, impersonating those agents.
- Record
EUVD-2022-5008- Updated
- 2026-11-03
GitHub AdvisoriesGHSA-qp4f-2w67-c8hw
8.6
Inbound TCP Agent Protocol/3 authentication bypass in Jenkins
Jenkins 2.213 and earlier, LTS 2.204.1 and earlier includes support for the Inbound TCP Agent Protocol/3 for communication between controller and agents. While this protocol has been deprecated in 2018 and was recently removed from Jenkins in 2.214, it could still easily be enabled in Jenkins LTS 2.204.1, 2.213, and older.
This protocol incorrectly reuses encryption parameters which allow an unauthenticated remote attacker to determine the connection secret. This secret can then be used to connect attacker-controlled Jenkins agents to the Jenkins controller.
Jenkins 2.204.2 no longer allows for the use of Inbound TCP Agent Protocol/3 by default. The system property jenkins.slaves.JnlpSlaveAgentProtocol3.ALLOW_UNSAFE can be set to true to allow enabling the Inbound TCP Agent Protocol/3 in Jenkins 2.204.2, but doing so is strongly discouraged.
Inbound TCP Agent Protocol/3 was removed completely from Jenkins 2.214 and will not be part of Jenkins LTS after the end of the 2.204.x line.
- Record
GHSA-qp4f-2w67-c8hw- CVSS 3.0
- 8.6 High
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:L - Weakness
- CWE-323, CWE-330
- Updated
- 2026-11-02
OSV
8.6
Jenkins 2.213 and earlier, LTS 2.204.1 and earlier improperly reuses encryption key parameters in the Inbound TCP Agent Protocol/3, allowing unauthorized attackers with knowledge of agent names to obtain the connection secrets for those agents, which can be used to connect to Jenkins, impersonating those agents.
- Record
CVE-2020-2099- CVSS 3.1
- 8.6 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:L - Updated
- 2026-11-02
OSVGHSA-qp4f-2w67-c8hw
8.6
Inbound TCP Agent Protocol/3 authentication bypass in Jenkins
Jenkins 2.213 and earlier, LTS 2.204.1 and earlier includes support for the Inbound TCP Agent Protocol/3 for communication between controller and agents. While this protocol has been deprecated in 2018 and was recently removed from Jenkins in 2.214, it could still easily be enabled in Jenkins LTS 2.204.1, 2.213, and older.
This protocol incorrectly reuses encryption parameters which allow an unauthenticated remote attacker to determine the connection secret. This secret can then be used to connect attacker-controlled Jenkins agents to the Jenkins controller.
Jenkins 2.204.2 no longer allows for the use of Inbound TCP Agent Protocol/3 by default. The system property jenkins.slaves.JnlpSlaveAgentProtocol3.ALLOW_UNSAFE can be set to true to allow enabling the Inbound TCP Agent Protocol/3 in Jenkins 2.204.2, but doing so is strongly discouraged.
Inbound TCP Agent Protocol/3 was removed completely from Jenkins 2.214 and will not be part of Jenkins LTS after the end of the 2.204.x line.
- Record
GHSA-qp4f-2w67-c8hw- CVSS 3.0
- 8.6 High
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:L - Weakness
- CWE-323, CWE-330
- Updated
- 2026-11-02
OSVRHBA-2020:0402
8.6
Red Hat Bug Fix Advisory: OpenShift Container Platform 3.11 bug fix update
- Record
RHBA-2020:0402- CVSS 3.1
- 8.6 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:L - Updated
- 2026-11-02
OSVRHBA-2020:0675
8.6
Red Hat Bug Fix Advisory: OpenShift Container Platform 4.3.5 packages update
- Record
RHBA-2020:0675- CVSS 3.1
- 8.6 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:L - Updated
- 2026-11-02
OSVBIT-jenkins-2020-2099 No score
Jenkins 2.213 and earlier, LTS 2.204.1 and earlier improperly reuses encryption key parameters in the Inbound TCP Agent Protocol/3, allowing unauthorized attackers with knowledge of agent names to obtain the connection secrets for those agents, which can be used to connect to Jenkins, impersonating those agents.
- Record
BIT-jenkins-2020-2099- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
org.jenkins-ci.main:jenkins-coreMaven |
before 2.204.2 | 2.204.2 |
org.jenkins-ci.main:jenkins-coreMaven |
2.205 up to 2.214 | 2.214 |
jenkinsBitnami |
before 2.218.1 | 2.218.1 |
org.jenkins-ci.main:jenkins-coreMaven |
before 2.204.2, plus listed versions 1.3961.3971.3981.3991.400 Show 45 moreShow less1.4011.4031.4041.4051.4061.4071.4081.4091.409.11.409.21.409.31.4101.4111.4121.4131.4141.4151.4161.4171.4181.4191.4201.4211.4221.4231.4241.424.11.424.21.424.31.424.41.424.51.424.61.4251.4261.4271.4281.4291.4301.4311.4321.4331.4341.4351.4361.437 |
2.204.2 |
org.jenkins-ci.main:jenkins-coreMaven |
2.205 up to 2.214, plus listed versions 2.2062.2072.2082.2092.2102.2112.2122.213 |
2.214 |
atomic-enterprise-service-catalogRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 1:3.11.170-1.git.1.91db82e.el7 | 1:3.11.170-1.git.1.91db82e.el7 |
atomic-enterprise-service-catalog-svcatRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 1:3.11.170-1.git.1.91db82e.el7 | 1:3.11.170-1.git.1.91db82e.el7 |
atomic-openshiftRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:3.11.170-1.git.0.00cac56.el7 | 0:3.11.170-1.git.0.00cac56.el7 |
atomic-openshift-clientsRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:3.11.170-1.git.0.00cac56.el7 | 0:3.11.170-1.git.0.00cac56.el7 |
atomic-openshift-clients-redistributableRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:3.11.170-1.git.0.00cac56.el7 | 0:3.11.170-1.git.0.00cac56.el7 |
Show 41 moreShow less
| Package | Affected | Fixed |
|---|---|---|
atomic-openshift-cluster-autoscalerRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:3.11.170-1.git.1.0a0df6a.el7 | 0:3.11.170-1.git.1.0a0df6a.el7 |
atomic-openshift-deschedulerRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:3.11.170-1.git.1.9ad83f2.el7 | 0:3.11.170-1.git.1.9ad83f2.el7 |
atomic-openshift-docker-excluderRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:3.11.170-1.git.0.00cac56.el7 | 0:3.11.170-1.git.0.00cac56.el7 |
atomic-openshift-dockerregistryRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:3.11.170-1.git.1.55fab05.el7 | 0:3.11.170-1.git.1.55fab05.el7 |
atomic-openshift-excluderRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:3.11.170-1.git.0.00cac56.el7 | 0:3.11.170-1.git.0.00cac56.el7 |
atomic-openshift-hyperkubeRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:3.11.170-1.git.0.00cac56.el7 | 0:3.11.170-1.git.0.00cac56.el7 |
atomic-openshift-hypershiftRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:3.11.170-1.git.0.00cac56.el7 | 0:3.11.170-1.git.0.00cac56.el7 |
atomic-openshift-masterRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:3.11.170-1.git.0.00cac56.el7 | 0:3.11.170-1.git.0.00cac56.el7 |
atomic-openshift-metrics-serverRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:3.11.170-1.git.1.357f177.el7 | 0:3.11.170-1.git.1.357f177.el7 |
atomic-openshift-nodeRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:3.11.170-1.git.0.00cac56.el7 | 0:3.11.170-1.git.0.00cac56.el7 |
atomic-openshift-node-problem-detectorRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:3.11.170-1.git.1.b1f90a6.el7 | 0:3.11.170-1.git.1.b1f90a6.el7 |
atomic-openshift-podRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:3.11.170-1.git.0.00cac56.el7 | 0:3.11.170-1.git.0.00cac56.el7 |
atomic-openshift-sdn-ovsRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:3.11.170-1.git.0.00cac56.el7 | 0:3.11.170-1.git.0.00cac56.el7 |
atomic-openshift-service-idlerRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:3.11.170-1.git.1.8328979.el7 | 0:3.11.170-1.git.1.8328979.el7 |
atomic-openshift-template-service-brokerRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:3.11.170-1.git.0.00cac56.el7 | 0:3.11.170-1.git.0.00cac56.el7 |
atomic-openshift-testsRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:3.11.170-1.git.0.00cac56.el7 | 0:3.11.170-1.git.0.00cac56.el7 |
atomic-openshift-web-consoleRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:3.11.170-1.git.1.3d64e8b.el7 | 0:3.11.170-1.git.1.3d64e8b.el7 |
cri-oRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:1.11.16-0.5.dev.rhaos3.11.git3f89eba.el7 | 0:1.11.16-0.5.dev.rhaos3.11.git3f89eba.el7 |
cri-o-debuginfoRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:1.11.16-0.5.dev.rhaos3.11.git3f89eba.el7 | 0:1.11.16-0.5.dev.rhaos3.11.git3f89eba.el7 |
golang-github-openshift-oauth-proxyRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:3.11.170-1.git.1.b49be83.el7 | 0:3.11.170-1.git.1.b49be83.el7 |
golang-github-prometheus-alertmanagerRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:3.11.170-1.git.1.61d7960.el7 | 0:3.11.170-1.git.1.61d7960.el7 |
golang-github-prometheus-node_exporterRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:3.11.170-1.git.1.51473b7.el7 | 0:3.11.170-1.git.1.51473b7.el7 |
golang-github-prometheus-prometheusRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:3.11.170-1.git.1.227bc98.el7 | 0:3.11.170-1.git.1.227bc98.el7 |
jenkinsRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:2.204.2.1580891656-1.el7 | 0:2.204.2.1580891656-1.el7 |
jenkins-2-pluginsRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:3.11.1579107288-1.el7 | 0:3.11.1579107288-1.el7 |
openshift-ansibleRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:3.11.170-2.git.5.8802564.el7 | 0:3.11.170-2.git.5.8802564.el7 |
openshift-ansible-docsRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:3.11.170-2.git.5.8802564.el7 | 0:3.11.170-2.git.5.8802564.el7 |
openshift-ansible-playbooksRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:3.11.170-2.git.5.8802564.el7 | 0:3.11.170-2.git.5.8802564.el7 |
openshift-ansible-rolesRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:3.11.170-2.git.5.8802564.el7 | 0:3.11.170-2.git.5.8802564.el7 |
openshift-ansible-testRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:3.11.170-2.git.5.8802564.el7 | 0:3.11.170-2.git.5.8802564.el7 |
openshift-enterprise-autohealRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:3.11.170-1.git.1.dfe6c52.el7 | 0:3.11.170-1.git.1.dfe6c52.el7 |
openshift-enterprise-cluster-capacityRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:3.11.170-1.git.1.661684b.el7 | 0:3.11.170-1.git.1.661684b.el7 |
openshift-kuryrRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:3.11.170-1.git.1.7265da1.el7 | 0:3.11.170-1.git.1.7265da1.el7 |
openshift-kuryr-cniRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:3.11.170-1.git.1.7265da1.el7 | 0:3.11.170-1.git.1.7265da1.el7 |
openshift-kuryr-commonRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:3.11.170-1.git.1.7265da1.el7 | 0:3.11.170-1.git.1.7265da1.el7 |
openshift-kuryr-controllerRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:3.11.170-1.git.1.7265da1.el7 | 0:3.11.170-1.git.1.7265da1.el7 |
prometheusRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:3.11.170-1.git.1.227bc98.el7 | 0:3.11.170-1.git.1.227bc98.el7 |
prometheus-alertmanagerRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:3.11.170-1.git.1.61d7960.el7 | 0:3.11.170-1.git.1.61d7960.el7 |
prometheus-node-exporterRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:3.11.170-1.git.1.51473b7.el7 | 0:3.11.170-1.git.1.51473b7.el7 |
python2-kuryr-kubernetesRed Hat:openshift:3.11::el7 From an advisory covering 8 CVEs |
before 0:3.11.170-1.git.1.7265da1.el7 | 0:3.11.170-1.git.1.7265da1.el7 |
jenkinsRed Hat:openshift:4.3::el7 From an advisory covering 7 CVEs |
before 0:2.204.2.1583446818-1.el7 | 0:2.204.2.1583446818-1.el7 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| aliases | EUVD | |
| first indexed | CVE List, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2020-2099 is a high vulnerability (CVSS 8.6) in Jenkins, published January 29, 2020. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 1.01%, the 63rd percentile. Fixed in org.jenkins-ci.main:jenkins-core 2.204.2.
References
jenkins.io/security/advisory/2020-01-29
openwall.com/lists/oss-security/2020/01/29/1
access.redhat.com/errata/RHSA-2020:0681
access.redhat.com/errata/RHSA-2020:0683
access.redhat.com/errata/RHBA-2020:0402
access.redhat.com/errata/RHBA-2020:0675
Show 53 moreShow less
nvd.nist.gov/vuln/detail/CVE-2020-2099
github.com/jenkinsci/jenkins/commit/5054bc6e12e1022993d719f66e289ab1d22ae854
github.com/advisories/GHSA-qp4f-2w67-c8hw
github.com/jenkinsci/jenkins
bugzilla.redhat.com/show_bug.cgi?id=1670380
bugzilla.redhat.com/show_bug.cgi?id=1670587
bugzilla.redhat.com/show_bug.cgi?id=1728856
bugzilla.redhat.com/show_bug.cgi?id=1744900
bugzilla.redhat.com/show_bug.cgi?id=1749765
bugzilla.redhat.com/show_bug.cgi?id=1757314
bugzilla.redhat.com/show_bug.cgi?id=1757938
bugzilla.redhat.com/show_bug.cgi?id=1782695
bugzilla.redhat.com/show_bug.cgi?id=1783764
bugzilla.redhat.com/show_bug.cgi?id=1791667
bugzilla.redhat.com/show_bug.cgi?id=1793628
bugzilla.redhat.com/show_bug.cgi?id=1795930
bugzilla.redhat.com/show_bug.cgi?id=1798365
security.access.redhat.com/data/csaf/v2/advisories/2020/rhba-2020_0402.json
access.redhat.com/security/cve/CVE-2019-11358
bugzilla.redhat.com/show_bug.cgi?id=1701972
cve.org/CVERecord?id=CVE-2019-11358
nvd.nist.gov/vuln/detail/CVE-2019-11358
blog.jquery.com/2019/04/10/jquery-3-4-0-released
drupal.org/sa-core-2019-006
access.redhat.com/security/cve/CVE-2020-2099
bugzilla.redhat.com/show_bug.cgi?id=1797080
cve.org/CVERecord?id=CVE-2020-2099
access.redhat.com/security/cve/CVE-2020-2100
bugzilla.redhat.com/show_bug.cgi?id=1797087
cve.org/CVERecord?id=CVE-2020-2100
nvd.nist.gov/vuln/detail/CVE-2020-2100
access.redhat.com/security/cve/CVE-2020-2101
bugzilla.redhat.com/show_bug.cgi?id=1797084
cve.org/CVERecord?id=CVE-2020-2101
nvd.nist.gov/vuln/detail/CVE-2020-2101
access.redhat.com/security/cve/CVE-2020-2102
bugzilla.redhat.com/show_bug.cgi?id=1797071
cve.org/CVERecord?id=CVE-2020-2102
nvd.nist.gov/vuln/detail/CVE-2020-2102
access.redhat.com/security/cve/CVE-2020-2103
bugzilla.redhat.com/show_bug.cgi?id=1797062
cve.org/CVERecord?id=CVE-2020-2103
nvd.nist.gov/vuln/detail/CVE-2020-2103
access.redhat.com/security/cve/CVE-2020-2104
bugzilla.redhat.com/show_bug.cgi?id=1797065
cve.org/CVERecord?id=CVE-2020-2104
nvd.nist.gov/vuln/detail/CVE-2020-2104
access.redhat.com/security/cve/CVE-2020-2105
bugzilla.redhat.com/show_bug.cgi?id=1797068
cve.org/CVERecord?id=CVE-2020-2105
nvd.nist.gov/vuln/detail/CVE-2020-2105
bugzilla.redhat.com/show_bug.cgi?id=1804814
security.access.redhat.com/data/csaf/v2/advisories/2020/rhba-2020_0675.json
Left out here: 530 versions. The JSON record has them.