Miggo Logo

CVE-2025-53675: Jenkins Warrior Framework Plugin vulnerability exposes unencrypted passwords to certain authenticated users

4.3

CVSS Score
3.1

Basic Information

EPSS Score
0.06095%
Published
7/9/2025
Updated
7/9/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:N/A:N
Package NameEcosystemVulnerable VersionsFirst Patched Version
org.jenkins-ci.plugins:warriormaven<= 1.2

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The vulnerability description clearly states that the Warrior Framework Plugin stores passwords unencrypted in job config.xml files. This is a classic Jenkins plugin vulnerability where password fields are stored as plain String objects instead of using the hudson.util.Secret class, which is designed to handle encrypted storage of secrets.

My analysis of the source code of WarriorPluginBuilder.java confirms this. The @DataBoundConstructor for the WarriorPluginBuilder class, which is the main entry point for the plugin's build step configuration, accepts several password parameters (gitConfigPwd, sftpConfigPwd, uploadServerPwd) as String types. These are then stored in String fields within the class.

When a user configures a job using this plugin, Jenkins persists the configuration of the WarriorPluginBuilder instance. The Java serialization to XML that Jenkins performs will write the values of these String fields in cleartext directly into the job's config.xml file.

The vulnerable function is the constructor, as it is responsible for taking the plaintext password from the user configuration and storing it in a field that is not encrypted. The getters for these password fields also contribute to the problem by exposing the plaintext passwords to other parts of the plugin, but the root cause of the storage vulnerability lies in the constructor and the field types.

Vulnerable functions

Only Mi**o us*rs **n s** t*is s**tion

WAF Protection Rules

WAF Rule

J*nkins W*rrior *r*m*work Plu*in *.* *n* **rli*r stor*s p*sswor*s un*n*rypt** in jo* *on*i*.xml *il*s on t** J*nkins *ontroll*r, w**r* t**y **n ** vi*w** *y us*rs wit* It*m/*xt*n*** R*** p*rmission or ****ss to t** J*nkins *ontroll*r *il* syst*m.

Reasoning

T** vuln*r**ility **s*ription *l**rly st*t*s t**t t** W*rrior *r*m*work Plu*in stor*s p*sswor*s un*n*rypt** in jo* `*on*i*.xml` *il*s. T*is is * *l*ssi* J*nkins plu*in vuln*r**ility w**r* p*sswor* *i*l*s *r* stor** *s pl*in `Strin*` o*j**ts inst*** o