Miggo Logo

CVE-2025-64149: Jenkins Publish to Bitbucket Plugin vulnerable to CSRF and missing permissions check

5.4

CVSS Score
3.1

Basic Information

EPSS Score
-
Published
10/29/2025
Updated
10/29/2025
KEV Status
No
Technology
TechnologyJava

Technical Details

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N
Package NameEcosystemVulnerable VersionsFirst Patched Version
org.jenkins-ci.plugins:publish-to-bitbucketmaven<= 0.4

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The vulnerability description for CVE-2025-64149 in the Jenkins Publish to Bitbucket Plugin points to a missing permission check and a CSRF vulnerability in an HTTP endpoint, allowing credential theft. Since no patch is available, the analysis focused on the source code of the latest vulnerable version, 0.4. The file src/main/java/org/jenkinsci/plugins/publishtobitbucket/BitbucketPublisher.java contains a nested class DescriptorImpl, which is standard for Jenkins plugins to handle configuration. Inside this class, the method doTestConnection is exposed as an HTTP endpoint for UI validation. This method takes serverUrl and credentialsId as parameters from the user. The code shows that it retrieves the specified credentials and makes an HTTP GET request to the provided serverUrl with these credentials. There are no permission checks within the method, which aligns with the advisory's claim that users with only Overall/Read permission can exploit it. An attacker can provide their own server URL to capture the credentials sent by Jenkins. The use of a GET request for an action that has side effects (making a web request with credentials) also confirms the CSRF vulnerability mentioned in the advisory. Therefore, org.jenkinsci.plugins.publishtobitbucket.BitbucketPublisher$DescriptorImpl.doTestConnection is identified as the vulnerable function.

Vulnerable functions

org.jenkinsci.plugins.publishtobitbucket.BitbucketPublisher$DescriptorImpl.doTestConnection
src/main/java/org/jenkinsci/plugins/publishtobitbucket/BitbucketPublisher.java
The `doTestConnection` method in the `DescriptorImpl` class is exposed as an HTTP endpoint in Jenkins. This method accepts `serverUrl` and `credentialsId` as query parameters. It lacks any permission checks, allowing any user with basic read access to invoke it. The method retrieves credentials specified by `credentialsId` and makes an HTTP request to the user-provided `serverUrl`, including the credentials in the Authorization header. This allows an attacker to set up a malicious server and provide its URL as `serverUrl` to capture the credentials. Additionally, since the endpoint is triggered by a GET request, it is vulnerable to Cross-Site Request Forgery (CSRF).

WAF Protection Rules

WAF Rule

J*nkins Pu*lis* to *it*u*k*t Plu*in *.* *n* **rli*r *o*s not p*r*orm * p*rmission ****k in *n *TTP *n*point. T*is *llows *tt**k*rs wit* Ov*r*ll/R*** p*rmission to *onn**t to *n *tt**k*r-sp**i*i** *TTP URL usin* *tt**k*r-sp**i*i** *r***nti*ls I*s o*t

Reasoning

T** vuln*r**ility **s*ription *or *V*-****-***** in t** J*nkins Pu*lis* to *it*u*k*t Plu*in points to * missin* p*rmission ****k *n* * *SR* vuln*r**ility in *n *TTP *n*point, *llowin* *r***nti*l t***t. Sin** no p*t** is *v*il**l*, t** *n*lysis *o*us*