CVE-2022-34179

7.5 HIGH

📋 TL;DR

The Jenkins Embeddable Build Status Plugin before version 2.0.4 has a path traversal vulnerability that allows attackers without proper permissions to access arbitrary SVG files on the Jenkins controller file system. Attackers can exploit this by manipulating the 'style' query parameter to read sensitive files. All Jenkins instances using vulnerable plugin versions are affected.

💻 Affected Systems

Products:
  • Jenkins Embeddable Build Status Plugin
Versions: 2.0.3 and earlier
Operating Systems: All platforms running Jenkins
Default Config Vulnerable: ⚠️ Yes
Notes: All Jenkins installations with the vulnerable plugin version are affected regardless of configuration.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Attackers could read sensitive configuration files, credentials, or other critical system files stored on the Jenkins controller, potentially leading to full system compromise.

🟠

Likely Case

Unauthenticated or low-privileged users reading sensitive Jenkins configuration files, build logs, or credentials stored in accessible locations.

🟢

If Mitigated

Limited file access restricted to SVG files in specific directories with proper file permissions.

🌐 Internet-Facing: HIGH - Jenkins instances exposed to the internet are directly vulnerable to unauthenticated attacks.
🏢 Internal Only: MEDIUM - Internal attackers or compromised accounts could exploit this to escalate privileges or access sensitive data.

🎯 Exploit Status

Public PoC: ⚠️ Yes
Weaponized: LIKELY
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

Exploitation requires only HTTP requests with manipulated query parameters. No authentication needed for internet-facing instances.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 2.0.4

Vendor Advisory: https://www.jenkins.io/security/advisory/2022-06-22/#SECURITY-2792

Restart Required: Yes

Instructions:

1. Access Jenkins web interface as administrator. 2. Navigate to Manage Jenkins > Manage Plugins. 3. Go to Available tab. 4. Search for 'Embeddable Build Status Plugin'. 5. Check the update box and install version 2.0.4 or later. 6. Restart Jenkins after installation.

🔧 Temporary Workarounds

Disable vulnerable endpoint

all

Block access to the vulnerable SVG endpoint using web server configuration or firewall rules.

# For Apache: RewriteRule ^/plugin/embeddable-build-status/.*\.svg$ - [F]
# For Nginx: location ~ ^/plugin/embeddable-build-status/.*\.svg$ { return 403; }

Restrict network access

linux

Limit Jenkins controller access to trusted networks only.

# Firewall rule example: iptables -A INPUT -p tcp --dport 8080 -s trusted_network -j ACCEPT
# iptables -A INPUT -p tcp --dport 8080 -j DROP

🧯 If You Can't Patch

  • Implement strict network segmentation to isolate Jenkins from untrusted networks
  • Apply strict file system permissions to limit readable files on Jenkins controller

🔍 How to Verify

Check if Vulnerable:

Check plugin version in Jenkins web interface: Manage Jenkins > Manage Plugins > Installed tab, search for 'Embeddable Build Status Plugin'.

Check Version:

curl -s http://jenkins-host/pluginManager/api/json?depth=1 | grep -o '"embeddable-build-status":{[^}]*' | grep -o '"version":"[^"]*'

Verify Fix Applied:

Verify plugin version is 2.0.4 or later in the Installed plugins list. Test by attempting to access SVG files with path traversal payloads.

📡 Detection & Monitoring

Log Indicators:

  • HTTP requests with 'style' parameter containing '../' sequences
  • Access to unexpected SVG files or error responses from the plugin

Network Indicators:

  • HTTP GET requests to /plugin/embeddable-build-status/*.svg with unusual query parameters
  • Multiple failed attempts to access restricted files

SIEM Query:

source="jenkins_access.log" AND uri_path="/plugin/embeddable-build-status/" AND (query="*../*" OR status=403 OR status=404)

🔗 References

📤 Share & Export