The vulnerability, CVE-2025-53678, stems from the insecure storage of a sensitive JWT token by the Jenkins User1st uTester Plugin. The root cause is the use of a standard java.lang.String to store the jwtToken within the io.jenkins.plugins.user1st.utester.UTesterPlugin class, which is a GlobalConfiguration extension.
My analysis of the plugin's source code, specifically the UTesterPlugin.java file, confirms this. Jenkins persists the configuration of such classes to an XML file. For sensitive data, the hudson.util.Secret class should be used, as it ensures the data is encrypted on the filesystem. The plugin fails to do this.
The primary vulnerable function is io.jenkins.plugins.user1st.utester.UTesterPlugin.configure. This method is called when a Jenkins administrator saves the plugin's settings. It directly extracts the JWT token from the incoming request data (json.getString("jwtToken")) and assigns it to the jwtToken String field. The subsequent call to save() writes this plaintext token to the io.jenkins.plugins.user1st.utester.UTesterPlugin.xml configuration file on the Jenkins controller.
Other methods like the constructor UTesterPlugin(String, String) and the setter setJwtToken(String) also contribute to the vulnerability by providing mechanisms to set this sensitive token as a plaintext String, which is then persisted insecurely. Any user with access to the Jenkins controller's filesystem can therefore read this token, compromising the integration with the uTester service.