VYPR
Moderate severityNVD Advisory· Published Sep 25, 2019· Updated Aug 4, 2024

CVE-2019-10414

CVE-2019-10414

Description

Jenkins Git Changelog Plugin <=2.17 stored credentials unencrypted in job config.xml files, exposing them to users with Extended Read or filesystem access.

AI Insight

LLM-synthesized narrative grounded in this CVE's description and references.

Jenkins Git Changelog Plugin <=2.17 stored credentials unencrypted in job config.xml files, exposing them to users with Extended Read or filesystem access.

Vulnerability

Overview

Jenkins Git Changelog Plugin version 2.17 and earlier stored credentials (such as Jira username/password) unencrypted in job config.xml files on the Jenkins master [1][4]. This occurred because the plugin's GitChangelogConfig class declared fields for jiraPassword, jiraUsername, mediaWikiPassword, etc., without marking them as transient or using Jenkins' credential store [3]. The credentials were persisted as plaintext strings in the job configuration, accessible to any user with Extended Read permission or direct access to the master filesystem [1][4].

Attack

Surface and Exploitation

Exploitation requires either a Jenkins user account with the Extended Read permission (or higher) for the affected job, or the ability to read files from the master's filesystem (e.g., via a compromised node or direct shell access) [1][2]. No authentication bypass is involved—the vulnerability stems from the plugin's failure to protect sensitive data at rest. The attacker can retrieve the plaintext credentials by examining the job's configuration file downloaded via the Jenkins UI or by reading the config.xml file directly on disk [1][4].

Impact

An attacker who obtains the exposed credentials can use them to authenticate to external systems (e.g., Jira, MediaWiki) with the same level of access as the Jenkins job configuration. This could lead to unauthorized data access, modification, or further lateral movement within the connected services [1][4]. The severity is considered medium, as it requires some privileges or access to the master filesystem [1].

Mitigation

The issue is fixed in Git Changelog Plugin version 2.18, released on 2019-09-25 [2]. The fix involves removing the plaintext credential fields and instead relying on Jenkins' credential store (via jiraUsernamePasswordCredentialsId) [3]. Users should upgrade to version 2.18 or later. As of the advisory date, no workaround is mentioned, and the plugin must be updated to eliminate exposure [1][2].

AI Insight generated on May 22, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.

Affected packages

Versions sourced from the GitHub Security Advisory.

PackageAffected versionsPatched versions
de.wellnerbou.jenkins:git-changelogMaven
< 2.182.18

Affected products

2

Patches

1
356243aa6d3f

Remving raw Jira username/password and forcing credentials

8 files changed · +46 265
  • CHANGELOG.md+20 1 modified
    @@ -1,8 +1,27 @@
     # Changelog
     Changelog of Git Changelog Plugin.
     
    +## Unreleased
    +### Jira SECURITY-1574   
    +
    +**Remving raw Jira username/password and forcing credentials**
    +
    + * Also removing MediaWiki support. Because of security reasons in combination with, probably, few users. There should probably be another MediaWiki publisher plugin to do that.
    + * SECURITY-1574
    +
    +[91c67b171ff72fe](https://github.com/jenkinsci/git-changelog-plugin/commit/91c67b171ff72fe) Tomas Bjerre *2019-09-13 18:10:17*
    +
    +
    +### No issue
    +
    +**doc**
    +
    +
    +[3ac4b9b7b25e2d5](https://github.com/jenkinsci/git-changelog-plugin/commit/3ac4b9b7b25e2d5) Tomas Bjerre *2019-06-15 12:36:10*
    +
    +
     ## 2.17
    -### GitHub [#34](https://github.com/jenkinsci/git-changelog-plugin/issues/34) please fix needed JAXB dependency for openjdk11  
    +### GitHub [#34](https://github.com/jenkinsci/git-changelog-plugin/issues/34) please fix needed JAXB dependency for openjdk11    *bug*  
     
     **Removing dependency on javax.xml #34**
     
    
  • pom.xml+2 2 modified
    @@ -14,9 +14,9 @@
             <java.level>8</java.level>
             <maven.javadoc.skip>true</maven.javadoc.skip>
             <fmt>2.9</fmt>
    -        <violations.version>1.19</violations.version>
    +        <violations.version>1.21</violations.version>
             <changelog-lib>1.91</changelog-lib>
    -        <changelog-plugin>1.59</changelog-plugin>
    +        <changelog-plugin>1.60</changelog-plugin>
         </properties>
     
         <groupId>de.wellnerbou.jenkins</groupId>
    
  • src/main/java/org/jenkinsci/plugins/gitchangelog/config/GitChangelogConfigHelper.java+2 3 modified
    @@ -28,7 +28,7 @@ public enum FROMTYPE {
         ref("ref");
         private final String reference;
     
    -    FROMTYPE(String ref) {
    +    FROMTYPE(final String ref) {
           this.reference = ref;
         }
     
    @@ -54,7 +54,6 @@ public static GitChangelogConfig createNewConfig() {
         config.setUntaggedName(DEFAULT_UNTAGGED_NAME);
         config.setCreateFileTemplateContent(getResourceAsString("fileTemplateDefault.mustache"));
         config.setShowSummaryTemplateContent(getResourceAsString("summaryTemplateDefault.mustache"));
    -    config.setMediaWikiTemplateContent(getResourceAsString("mediaWikiTemplateDefault.mustache"));
     
         final List<CustomIssue> customIssues = new ArrayList<>();
         customIssues.add(new CustomIssue("", "", "", ""));
    @@ -64,7 +63,7 @@ public static GitChangelogConfig createNewConfig() {
         return config;
       }
     
    -  private static String getResourceAsString(String filename) {
    +  private static String getResourceAsString(final String filename) {
         try {
           return CharStreams.toString(
               new InputStreamReader(
    
  • src/main/java/org/jenkinsci/plugins/gitchangelog/config/GitChangelogConfig.java+2 143 modified
    @@ -30,19 +30,10 @@ public class GitChangelogConfig implements Serializable {
       private boolean ignoreCommitsWithoutIssue;
       private String ignoreTagsIfNameMatches;
       private String jiraIssuePattern;
    -  private String jiraPassword;
    +  private transient String jiraPassword;
       private String jiraServer;
    -  private String jiraUsername;
    +  private transient String jiraUsername;
       private String jiraUsernamePasswordCredentialsId;
    -  private boolean useJiraUsernamePasswordCredentialsId;
    -  private String mediaWikiPassword;
    -  private String mediaWikiTemplateContent;
    -  private String mediaWikiTemplateFile;
    -  private String mediaWikiTitle;
    -  private String mediaWikiUrl;
    -  private String mediaWikiUsername;
    -  private boolean mediaWikiUseTemplateContent;
    -  private boolean mediaWikiUseTemplateFile;
       private String noIssueName;
       private String readableTagName;
       private boolean showSummary;
    @@ -60,7 +51,6 @@ public class GitChangelogConfig implements Serializable {
       private boolean useGitHub;
       private boolean useIgnoreTagsIfNameMatches;
       private boolean useJira;
    -  private boolean useMediaWiki;
       private boolean useReadableTagName;
       private boolean useSubDirectory;
       private String gitHubApiTokenCredentialsId;
    @@ -99,15 +89,6 @@ public GitChangelogConfig(
           final String jiraServer,
           final String jiraUsername,
           final String jiraUsernamePasswordCredentialsId,
    -      final boolean useJiraUsernamePasswordCredentialsId,
    -      final String mediaWikiPassword,
    -      final String mediaWikiTemplateContent,
    -      final String mediaWikiTemplateFile,
    -      final String mediaWikiTitle,
    -      final String mediaWikiUrl,
    -      final String mediaWikiUsername,
    -      final boolean mediaWikiUseTemplateContent,
    -      final boolean mediaWikiUseTemplateFile,
           final String noIssueName,
           final String readableTagName,
           final boolean showSummary,
    @@ -125,7 +106,6 @@ public GitChangelogConfig(
           final boolean useGitHub,
           final boolean useIgnoreTagsIfNameMatches,
           final boolean useJira,
    -      final boolean useMediaWiki,
           final boolean useReadableTagName,
           final boolean useSubDirectory,
           final String gitHubApiTokenCredentialsId,
    @@ -157,15 +137,6 @@ public GitChangelogConfig(
         this.jiraServer = jiraServer;
         this.jiraUsername = jiraUsername;
         this.jiraUsernamePasswordCredentialsId = jiraUsernamePasswordCredentialsId;
    -    this.useJiraUsernamePasswordCredentialsId = useJiraUsernamePasswordCredentialsId;
    -    this.mediaWikiPassword = mediaWikiPassword;
    -    this.mediaWikiTemplateContent = mediaWikiTemplateContent;
    -    this.mediaWikiTemplateFile = mediaWikiTemplateFile;
    -    this.mediaWikiTitle = mediaWikiTitle;
    -    this.mediaWikiUrl = mediaWikiUrl;
    -    this.mediaWikiUsername = mediaWikiUsername;
    -    this.mediaWikiUseTemplateContent = mediaWikiUseTemplateContent;
    -    this.mediaWikiUseTemplateFile = mediaWikiUseTemplateFile;
         this.noIssueName = noIssueName;
         this.readableTagName = readableTagName;
         this.showSummary = showSummary;
    @@ -183,7 +154,6 @@ public GitChangelogConfig(
         this.useGitHub = useGitHub;
         this.useIgnoreTagsIfNameMatches = useIgnoreTagsIfNameMatches;
         this.useJira = useJira;
    -    this.useMediaWiki = useMediaWiki;
         this.useReadableTagName = useReadableTagName;
         this.useSubDirectory = useSubDirectory;
         this.gitHubApiTokenCredentialsId = gitHubApiTokenCredentialsId;
    @@ -260,30 +230,6 @@ public String getJiraUsername() {
         return this.jiraUsername;
       }
     
    -  public String getMediaWikiPassword() {
    -    return this.mediaWikiPassword;
    -  }
    -
    -  public String getMediaWikiTemplateContent() {
    -    return this.mediaWikiTemplateContent;
    -  }
    -
    -  public String getMediaWikiTemplateFile() {
    -    return this.mediaWikiTemplateFile;
    -  }
    -
    -  public String getMediaWikiTitle() {
    -    return this.mediaWikiTitle;
    -  }
    -
    -  public String getMediaWikiUrl() {
    -    return this.mediaWikiUrl;
    -  }
    -
    -  public String getMediaWikiUsername() {
    -    return this.mediaWikiUsername;
    -  }
    -
       public String getNoIssueName() {
         return this.noIssueName;
       }
    @@ -332,14 +278,6 @@ public boolean isIgnoreCommitsWithoutIssue() {
         return this.ignoreCommitsWithoutIssue;
       }
     
    -  public boolean isMediaWikiUseTemplateContent() {
    -    return this.mediaWikiUseTemplateContent;
    -  }
    -
    -  public boolean isMediaWikiUseTemplateFile() {
    -    return this.mediaWikiUseTemplateFile;
    -  }
    -
       public boolean isShowSummary() {
         return this.showSummary;
       }
    @@ -372,10 +310,6 @@ public boolean isUseJira() {
         return this.useJira;
       }
     
    -  public boolean isUseMediaWiki() {
    -    return this.useMediaWiki;
    -  }
    -
       public boolean isUseReadableTagName() {
         return this.useReadableTagName;
       }
    @@ -520,46 +454,6 @@ public void setJiraUsername(final String jiraUsername) {
         this.jiraUsername = jiraUsername;
       }
     
    -  @DataBoundSetter
    -  public void setMediaWikiPassword(final String mediaWikiPassword) {
    -    this.mediaWikiPassword = mediaWikiPassword;
    -  }
    -
    -  @DataBoundSetter
    -  public void setMediaWikiTemplateContent(final String mediaWikiTemplateContent) {
    -    this.mediaWikiTemplateContent = mediaWikiTemplateContent;
    -  }
    -
    -  @DataBoundSetter
    -  public void setMediaWikiTemplateFile(final String mediaWikiTemplateFile) {
    -    this.mediaWikiTemplateFile = mediaWikiTemplateFile;
    -  }
    -
    -  @DataBoundSetter
    -  public void setMediaWikiTitle(final String mediaWikiTitle) {
    -    this.mediaWikiTitle = mediaWikiTitle;
    -  }
    -
    -  @DataBoundSetter
    -  public void setMediaWikiUrl(final String mediaWikiUrl) {
    -    this.mediaWikiUrl = mediaWikiUrl;
    -  }
    -
    -  @DataBoundSetter
    -  public void setMediaWikiUsername(final String mediaWikiUsername) {
    -    this.mediaWikiUsername = mediaWikiUsername;
    -  }
    -
    -  @DataBoundSetter
    -  public void setMediaWikiUseTemplateContent(final boolean mediaWikiUseTemplateContent) {
    -    this.mediaWikiUseTemplateContent = mediaWikiUseTemplateContent;
    -  }
    -
    -  @DataBoundSetter
    -  public void setMediaWikiUseTemplateFile(final boolean mediaWikiUseTemplateFile) {
    -    this.mediaWikiUseTemplateFile = mediaWikiUseTemplateFile;
    -  }
    -
       @DataBoundSetter
       public void setNoIssueName(final String noIssueName) {
         this.noIssueName = noIssueName;
    @@ -645,11 +539,6 @@ public void setUseJira(final boolean useJira) {
         this.useJira = useJira;
       }
     
    -  @DataBoundSetter
    -  public void setUseMediaWiki(final boolean useMediaWiki) {
    -    this.useMediaWiki = useMediaWiki;
    -  }
    -
       @DataBoundSetter
       public void setUseReadableTagName(final boolean useReadableTagName) {
         this.useReadableTagName = useReadableTagName;
    @@ -709,16 +598,6 @@ public void setJiraUsernamePasswordCredentialsId(final String jiraUsernamePasswo
         this.jiraUsernamePasswordCredentialsId = jiraUsernamePasswordCredentialsId;
       }
     
    -  @DataBoundSetter
    -  public void setUseJiraUsernamePasswordCredentialsId(
    -      final boolean useJiraUsernamePasswordCredentialsId) {
    -    this.useJiraUsernamePasswordCredentialsId = useJiraUsernamePasswordCredentialsId;
    -  }
    -
    -  public boolean isUseJiraUsernamePasswordCredentialsId() {
    -    return useJiraUsernamePasswordCredentialsId;
    -  }
    -
       public String getJiraUsernamePasswordCredentialsId() {
         return jiraUsernamePasswordCredentialsId;
       }
    @@ -775,24 +654,6 @@ public String toString() {
             + jiraUsername
             + ", jiraUsernamePasswordCredentialsId="
             + jiraUsernamePasswordCredentialsId
    -        + ", useJiraUsernamePasswordCredentialsId="
    -        + useJiraUsernamePasswordCredentialsId
    -        + ", mediaWikiPassword="
    -        + mediaWikiPassword
    -        + ", mediaWikiTemplateContent="
    -        + mediaWikiTemplateContent
    -        + ", mediaWikiTemplateFile="
    -        + mediaWikiTemplateFile
    -        + ", mediaWikiTitle="
    -        + mediaWikiTitle
    -        + ", mediaWikiUrl="
    -        + mediaWikiUrl
    -        + ", mediaWikiUsername="
    -        + mediaWikiUsername
    -        + ", mediaWikiUseTemplateContent="
    -        + mediaWikiUseTemplateContent
    -        + ", mediaWikiUseTemplateFile="
    -        + mediaWikiUseTemplateFile
             + ", noIssueName="
             + noIssueName
             + ", readableTagName="
    @@ -827,8 +688,6 @@ public String toString() {
             + useIgnoreTagsIfNameMatches
             + ", useJira="
             + useJira
    -        + ", useMediaWiki="
    -        + useMediaWiki
             + ", useReadableTagName="
             + useReadableTagName
             + ", useSubDirectory="
    
  • src/main/java/org/jenkinsci/plugins/gitchangelog/GitChangelogDescriptor.java+1 15 modified
    @@ -59,7 +59,7 @@ public boolean isApplicable(
       }
     
       @Override
    -  public Publisher newInstance(StaplerRequest req, JSONObject formData)
    +  public Publisher newInstance(final StaplerRequest req, final JSONObject formData)
           throws hudson.model.Descriptor.FormException {
         final GitChangelogConfig c = new GitChangelogConfig();
         c.setUseConfigFile(formData.getBoolean("useConfigFile"));
    @@ -79,10 +79,6 @@ public Publisher newInstance(StaplerRequest req, JSONObject formData)
         c.setUseJira(formData.getBoolean("useJira"));
         c.setJiraServer(formData.getString("jiraServer"));
         c.setJiraIssuePattern(formData.getString("jiraIssuePattern"));
    -    c.setJiraUsername(formData.getString("jiraUsername"));
    -    c.setJiraPassword(formData.getString("jiraPassword"));
    -    c.setUseJiraUsernamePasswordCredentialsId(
    -        formData.getBoolean("useJiraUsernamePasswordCredentialsId"));
         c.setJiraUsernamePasswordCredentialsId(formData.getString("jiraUsernamePasswordCredentialsId"));
     
         c.setUseGitHub(formData.getBoolean("useGitHub"));
    @@ -104,20 +100,10 @@ public Publisher newInstance(StaplerRequest req, JSONObject formData)
         c.setUntaggedName(formData.getString("untaggedName"));
         c.setUseReadableTagName(formData.getBoolean("useReadableTagName"));
         c.setReadableTagName(formData.getString("readableTagName"));
    -    c.setUseMediaWiki(formData.getBoolean("useMediaWiki"));
    -    c.setMediaWikiUsername(formData.getString("mediaWikiUsername"));
    -    c.setMediaWikiPassword(formData.getString("mediaWikiPassword"));
    -    c.setMediaWikiTitle(formData.getString("mediaWikiTitle"));
    -    c.setMediaWikiUrl(formData.getString("mediaWikiUrl"));
         c.setUseFile(formData.getBoolean("useFile"));
         c.setFile(formData.getString("file"));
         c.setShowSummary(formData.getBoolean("showSummary"));
     
    -    c.setMediaWikiUseTemplateFile(formData.getBoolean("mediaWikiUseTemplateFile"));
    -    c.setMediaWikiTemplateFile(formData.getString("mediaWikiTemplateFile"));
    -    c.setMediaWikiUseTemplateContent(formData.getBoolean("mediaWikiUseTemplateContent"));
    -    c.setMediaWikiTemplateContent(formData.getString("mediaWikiTemplateContent"));
    -
         c.setCreateFileUseTemplateFile(formData.getBoolean("createFileUseTemplateFile"));
         c.setCreateFileTemplateFile(formData.getString("createFileTemplateFile"));
         c.setCreateFileUseTemplateContent(formData.getBoolean("createFileUseTemplateContent"));
    
  • src/main/java/org/jenkinsci/plugins/gitchangelog/perform/GitChangelogPerformer.java+14 24 modified
    @@ -23,18 +23,18 @@ public static void performerPerform(
           final GitChangelogConfig configUnexpanded,
           final Run<?, ?> build,
           final TaskListener listener,
    -      FilePath workspace) {
    +      final FilePath workspace) {
         try {
    -      EnvVars env = build.getEnvironment(listener);
    +      final EnvVars env = build.getEnvironment(listener);
           final GitChangelogConfig config = expand(configUnexpanded, env);
           listener.getLogger().println("---");
           listener.getLogger().println("--- Git Changelog ---");
           listener.getLogger().println("---");
     
           setApiTokenCredentials(config, listener);
     
    -      RemoteCallable remoteTask = new RemoteCallable(workspace.getRemote(), config);
    -      RemoteResult remoteResult = workspace.act(remoteTask);
    +      final RemoteCallable remoteTask = new RemoteCallable(workspace.getRemote(), config);
    +      final RemoteResult remoteResult = workspace.act(remoteTask);
           if (!isNullOrEmpty(remoteResult.getLeftSideTitle())) {
             build.addAction(
                 new GitChangelogLeftsideBuildDecorator(
    @@ -44,7 +44,7 @@ public static void performerPerform(
             build.addAction(new GitChangelogSummaryDecorator(remoteResult.getSummary()));
           }
           doLog(listener, INFO, remoteResult.getLog());
    -    } catch (Exception e) {
    +    } catch (final Exception e) {
           doLog(listener, SEVERE, e.getMessage(), e);
         }
       }
    @@ -53,25 +53,26 @@ private static void setApiTokenCredentials(
           final GitChangelogConfig configExpanded, final TaskListener listener) {
         if (configExpanded.isUseGitHubApiTokenCredentials()) {
           final String getApiTokenCredentialsId = configExpanded.getGitHubApiTokenCredentialsId();
    -      String token = findSecretString(getApiTokenCredentialsId).orElse(null);
    +      final String token = findSecretString(getApiTokenCredentialsId).orElse(null);
           configExpanded.setGitHubToken(token);
         }
         if (configExpanded.isUseGitLabApiTokenCredentials()) {
           final String getApiTokenCredentialsId = configExpanded.getGitLabApiTokenCredentialsId();
    -      String token = findSecretString(getApiTokenCredentialsId).orElse(null);
    +      final String token = findSecretString(getApiTokenCredentialsId).orElse(null);
           configExpanded.setGitLabToken(token);
         }
    -    if (configExpanded.isUseJiraUsernamePasswordCredentialsId()) {
    +    if (configExpanded.isUseJira()) {
           final String getApiTokenCredentialsId = configExpanded.getJiraUsernamePasswordCredentialsId();
    -      StandardUsernamePasswordCredentials token =
    +      final StandardUsernamePasswordCredentials token =
               findSecretUsernamePassword(getApiTokenCredentialsId).orElse(null);
           configExpanded.setJiraUsername(token.getUsername());
           configExpanded.setJiraPassword(token.getPassword().getPlainText());
         }
       }
       /** Makes sure any Jenkins variable, used in the configuration fields, are evaluated. */
    -  private static GitChangelogConfig expand(GitChangelogConfig config, EnvVars environment) {
    -    GitChangelogConfig c = new GitChangelogConfig();
    +  private static GitChangelogConfig expand(
    +      final GitChangelogConfig config, final EnvVars environment) {
    +    final GitChangelogConfig c = new GitChangelogConfig();
     
         c.setUseConfigFile(config.isUseConfigFile());
         c.setConfigFile(environment.expand(config.getConfigFile()));
    @@ -91,7 +92,6 @@ private static GitChangelogConfig expand(GitChangelogConfig config, EnvVars envi
         c.setJiraIssuePattern(environment.expand(config.getJiraIssuePattern()));
         c.setJiraUsername(environment.expand(config.getJiraUsername()));
         c.setJiraPassword(environment.expand(config.getJiraPassword()));
    -    c.setUseJiraUsernamePasswordCredentialsId(config.isUseJiraUsernamePasswordCredentialsId());
         c.setJiraUsernamePasswordCredentialsId(
             environment.expand(config.getJiraUsernamePasswordCredentialsId()));
     
    @@ -118,16 +118,6 @@ private static GitChangelogConfig expand(GitChangelogConfig config, EnvVars envi
         c.setUseIgnoreTagsIfNameMatches(config.isUseIgnoreTagsIfNameMatches());
         c.setIgnoreTagsIfNameMatches(environment.expand(config.getIgnoreTagsIfNameMatches()));
     
    -    c.setUseMediaWiki(config.isUseMediaWiki());
    -    c.setMediaWikiUsername(environment.expand(config.getMediaWikiUsername()));
    -    c.setMediaWikiPassword(environment.expand(config.getMediaWikiPassword()));
    -    c.setMediaWikiTitle(environment.expand(config.getMediaWikiTitle()));
    -    c.setMediaWikiUrl(environment.expand(config.getMediaWikiUrl()));
    -    c.setMediaWikiUseTemplateFile(config.isMediaWikiUseTemplateFile());
    -    c.setMediaWikiTemplateFile(environment.expand(config.getMediaWikiTemplateFile()));
    -    c.setMediaWikiUseTemplateContent(config.isMediaWikiUseTemplateContent());
    -    c.setMediaWikiTemplateContent(environment.expand(config.getMediaWikiTemplateContent()));
    -
         c.setUseFile(config.isUseFile());
         c.setFile(environment.expand(config.getFile()));
         c.setCreateFileUseTemplateFile(config.isCreateFileUseTemplateFile());
    @@ -141,8 +131,8 @@ private static GitChangelogConfig expand(GitChangelogConfig config, EnvVars envi
         c.setShowSummaryUseTemplateContent(config.isShowSummaryUseTemplateContent());
         c.setShowSummaryTemplateContent(environment.expand(config.getShowSummaryTemplateContent()));
     
    -    List<CustomIssue> expandedCi = new ArrayList<>();
    -    for (CustomIssue ci : config.getCustomIssues()) {
    +    final List<CustomIssue> expandedCi = new ArrayList<>();
    +    for (final CustomIssue ci : config.getCustomIssues()) {
           expandedCi.add(
               new CustomIssue( //
                   environment.expand(ci.getName()), //
    
  • src/main/java/org/jenkinsci/plugins/gitchangelog/perform/RemoteCallable.java+2 23 modified
    @@ -32,7 +32,7 @@ public class RemoteCallable extends MasterToSlaveCallable<RemoteResult, IOExcept
     
       private final String workspacePath;
     
    -  public RemoteCallable(String workspacePath, GitChangelogConfig config) {
    +  public RemoteCallable(final String workspacePath, final GitChangelogConfig config) {
     
         this.workspacePath = workspacePath;
         this.config = config;
    @@ -148,27 +148,6 @@ public RemoteResult call() throws IOException {
             remoteResult.setSummary(gitChangelogApiBuilder.render());
           }
     
    -      if (this.config.isUseMediaWiki()) {
    -        if (this.config.isMediaWikiUseTemplateFile()
    -            && !isNullOrEmpty(this.config.getMediaWikiTemplateFile())) {
    -          gitChangelogApiBuilder.withTemplatePath(
    -              this.workspacePath + "/" + this.config.getMediaWikiTemplateFile());
    -        }
    -        if (this.config.isMediaWikiUseTemplateContent()
    -            && !isNullOrEmpty(this.config.getMediaWikiTemplateContent())) {
    -          gitChangelogApiBuilder.withTemplateContent(this.config.getMediaWikiTemplateContent());
    -        }
    -        final String mediaWikiFullUrl =
    -            this.config.getMediaWikiUrl() + "/index.php/" + this.config.getMediaWikiTitle();
    -        logString.append("Posting changelog to ").append(mediaWikiFullUrl);
    -        gitChangelogApiBuilder.toMediaWiki( //
    -            this.config.getMediaWikiUsername(), //
    -            this.config.getMediaWikiPassword(), //
    -            this.config.getMediaWikiUrl(), //
    -            this.config.getMediaWikiTitle());
    -        remoteResult.setLeftSide(this.config.getMediaWikiTitle(), mediaWikiFullUrl);
    -      }
    -
           if (this.config.isUseFile()) {
             if (this.config.isCreateFileUseTemplateFile()
                 && !isNullOrEmpty(this.config.getCreateFileTemplateFile())) {
    @@ -193,5 +172,5 @@ public RemoteResult call() throws IOException {
       }
     
       @Override
    -  public void checkRoles(RoleChecker checker) throws SecurityException {}
    +  public void checkRoles(final RoleChecker checker) throws SecurityException {}
     }
    
  • src/main/resources/org/jenkinsci/plugins/gitchangelog/GitChangelogRecorder/config.jelly+3 54 modified
    @@ -207,49 +207,6 @@
       </f:block>
     </f:section>
     
    -<f:section title="Post to MediaWiki page">
    -  <f:block>
    -    <table>
    -      <f:optionalBlock checked="${config.useMediaWiki}" name="useMediaWiki" title="Create MediaWiki page" inline="true">
    -        <f:entry title="Username">
    -          <f:textbox name="mediaWikiUsername" value="${config.mediaWikiUsername}"/>
    -        </f:entry>
    -        <f:description>
    -         Leave empty if authentication not needed.
    -        </f:description>
    -        <f:entry title="Password">
    -          <f:password name="mediaWikiPassword" value="${config.mediaWikiPassword}"/>
    -        </f:entry>
    -        <f:description>
    -         Leave empty if authentication not needed.
    -        </f:description>
    -        <f:entry title="MediaWiki URL">
    -          <f:textbox name="mediaWikiUrl" value="${config.mediaWikiUrl}"/>
    -        </f:entry>
    -        <f:entry title="Title">
    -          <f:textbox name="mediaWikiTitle" value="${config.mediaWikiTitle}"/>
    -        </f:entry>
    -        <f:optionalBlock checked="${config.mediaWikiUseTemplateFile}" name="mediaWikiUseTemplateFile" title="Use a template file from workspace" inline="true">
    -          <f:entry title="Filename">
    -            <f:textbox name="mediaWikiTemplateFile" value="${config.mediaWikiTemplateFile}"/>
    -          </f:entry>
    -          <f:description>
    -            If you template is in source control, you may point it out here. Relative to workspace.
    -          </f:description>
    -        </f:optionalBlock>
    -        <f:optionalBlock checked="${config.mediaWikiUseTemplateContent}" name="mediaWikiUseTemplateContent" title="Configure template here" inline="true">
    -          <f:entry title="Content">
    -            <f:textarea name="mediaWikiTemplateContent" value="${config.mediaWikiTemplateContent}" style="width: 500px; height: 200px"/>
    -          </f:entry>
    -          <f:description>
    -            Context is documented <a target="_blank" href="https://github.com/tomasbjerre/git-changelog-lib">here</a>.
    -          </f:description>
    -        </f:optionalBlock>
    -      </f:optionalBlock>
    -    </table>
    -  </f:block>
    -</f:section>
    -
     <f:section title="Jira">
       <f:block>
         <table>
    @@ -268,18 +225,10 @@
              Leave blank to use default.
             </f:description>
     
    -        <f:optionalBlock checked="${config.useJiraUsernamePasswordCredentialsId}" name="useJiraUsernamePasswordCredentialsId" title="Use credentials" inline="true">
    -          <f:entry title="Credential" field="jiraUsernamePasswordCredentialsId">
    -            <c:select default="${config.jiraUsernamePasswordCredentialsId}" />
    -          </f:entry>
    -        </f:optionalBlock>
    -        
    -        <f:entry title="Username">
    -          <f:textbox name="jiraUsername" value="${config.jiraUsername}"/>
    -        </f:entry>
    -        <f:entry title="Password">
    -          <f:password name="jiraPassword" value="${config.jiraPassword}"/>
    +        <f:entry title="Credential" field="jiraUsernamePasswordCredentialsId">
    +          <c:select default="${config.jiraUsernamePasswordCredentialsId}" />
             </f:entry>
    +        
           </f:optionalBlock>
           <f:description>
            With Jira credentials you can have the {{title}} variable populated with title from Jira issues.
    

Vulnerability mechanics

Generated on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.

References

5

News mentions

0

No linked articles in our index yet.