CVE-2026-41011
HighCVSS 8.2Exploitation Probability (EPSS)
Low risk2th percentile - higher than 2% of all known CVEs
Summary
In BOSH (all versions prior to v282.1.12), the PackagePersister.validate_tgz function builds a shell command with a package name from the release.MF file without escaping. The Sequel validation (VALID_ID) runs after the shell command, so an attacker can inject shell commands via metacharacters in the package name.
Risk Assessment
Shell command injection can lead to arbitrary command execution in the context of BOSH, threatening the entire infrastructure.
Recommendation
Update BOSH to version v282.1.12 or later, which includes a fix for command injection.
Other vulnerabilities in BOSH
See all- CVE-2026-41860High
A vulnerability in BOSH allows a local attacker to steal Basic-auth credentials or redirect UAA token requests via MITM. The methods HttpRequestHelper#create_async_endpoint and #send_http_get_request_synchronous hard-code OpenSSL::SSL::VERIFY_NONE, enabling traffic interception between bosh-monitor and the BOSH director or UAA.
- CVE-2026-41859High
A network man-in-the-middle between nats-sync and the BOSH director can steal the director credentials (Basic auth header or UAA client secret) and can tamper with the VM list that is written into the NATS authorization file. Stolen credentials grant administrative director access. UsersSync#bosh_api_response_body builds a Net::HTTP client with verify_mode = OpenSSL::SSL::VERIFY_NONE for every director call (/info, /deployments, /deployments/<name>/vms). Affected versions: BOSH all versions prior to v282.1.9 (inclusive); fixed in v282.1.9 or later.
Original NVD description (English source)
PackagePersister.validate_tgz builds "tar -tf #{tgz} 2>&1" where tgz = File.join(release_dir, 'packages', "#{name}.tgz") and name = package_meta['name'] comes directly from release.MF inside the uploaded tarball. The string is passed to Bosh::Common::Exec.sh, which executes via %x{} — i.e., /bin/sh -c. No Shellwords.escape is applied. The Models::Package Sequel validation (VALID_ID = /^[-0-9A-Za-z_+.]+$/i) would reject the name, but in create_package (lines 74–79) the shell-out in save_package_source_blob runs before package.save, so validation fires too late. Affected versions: - BOSH: all versions prior to v282.1.12 (inclusive); fixed in v282.1.12 or later

