The leading open-source automation server, Jenkins, provides hundreds of plugins to support building, deploying and automating any project. The Jenkins project has a lot going on between core/plugin development, events and other open-source automation-related activities.
Recently, Jenkins Security Team released an advisory dated 2022-06-30, disclosing 34 security vulnerabilities affecting 29 plugins for the Jenkins project, with four plugins patched as of date, while 25 remain still unpatched.
The 1800+ community-contributed plugins support building, deploying and automating any project.
This advisory announces vulnerabilities in the following Jenkins deliverables:
The flaws include missing or incorrect permission checks, passwords, secrets, API keys, and tokens stored in plain text, Stored XSS, Cross-Site Request Forgery (CSRF) allowing XML external entity (XXE) attacks, and XSS.
As of the publication of this blog, no fixes are available for the plugins mentioned above.
According to the Common Vulnerability Scoring System CVSS, vulnerability scores range from low to high severity, with the impacted plugins having thousands of installations across the globe.
With most high-severity zero-days requiring user interaction to be exploited in low complexity attacks, a staggering 140,000+ Jenkin servers are exposed to the internet, which can become an attacker's target if running an unpatched plugin.
While 25 of the 29 plugins are still waiting to be patched, Jenkins Security Team has released patches for four of the major plugins:
These versions include fixes to the vulnerabilities described above. All prior versions are considered affected by these vulnerabilities unless otherwise indicated.
These vulnerabilities stand a good chance for initial access in reconnaissance attacks allowing them to gain more insight into a targeted company's infrastructure.
You can query Jenkins for available plugins and their version using this Groovy script. You can execute the script from your Jenkins instance's http://<jenkinsurl>/script
page.
1Jenkins.instance.pluginManager.plugins.each{ 2 plugin -> 3 println ("${plugin.getDisplayName()} (${plugin.getShortName()}): ${plugin.getVersion()}") 4}
Or you can also access this page on your Jenkins server dashboard for more details: http://<jenkinsurl>/pluginusage