Inbound TCP Agent Protocol/3 authentication bypass in Jenkins
High severity
GitHub Reviewed
Published
May 24, 2022
to the GitHub Advisory Database
•
Updated Dec 13, 2023
Package
Affected versions
< 2.204.2
>= 2.205, < 2.214
Patched versions
2.204.2
2.214
Description
Published by the National Vulnerability Database
Jan 29, 2020
Published to the GitHub Advisory Database
May 24, 2022
Reviewed
Dec 16, 2022
Last updated
Dec 13, 2023
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 totrue
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.
References