Catching bugs in VMware: Carbon Black Cloud Workload Appliance and vRealize Operations Manager

We discussed this vulnerability during Episode 123 on 28 February 2022

Multiple bugs in Carbon Black and vRealize Operations Manager, authentication bypassing through proxy trickery, server-side request forgery, credential leaking, and ultimately RCE.

VMWare Carbon Black - Authentication Bypass

Two core issues leading to an authentication bypass, first being that the SERVICE_USER role is overly permissive. Any service could generate a JWT that had all permissions, regardless of what the service actually needed. This was exposed on an internal endpoint /acs/api/v1/service-token/{serviceName}. Getting access to this internal endpoint was the more interesting issue.

This endpoint under normal circumstances could not be reached from external sources, the front end Envoy proxy that handling incoming requests would route /acs/ routes to the correct place, but there was a particular rule in place rewriting requests matching /acs/api/v1/service-token/ so it wouldn’t be found. The problem is that Envoy by default would not normalize URLs, whereas the receiving Tomcat server would. So by encoding one of the characters in the path, they could craft a url that would get routed for /acs/ but not match the service-token rule: /acs/api/v1/%72ervice-token/.... Granting them a SERVICE_USER token.

VMware vRealize Operations Manager

Server-Side Request Forgery

Pretty standard SSRF here, the casa/nodes/thumbprints endpoint would take an array of addresses, and respond with the page contents. With no checks it could be directed to internal endpoints such as 127.0.01/casa/private/security/passwordsync to reveal administrative password hashes.

Credentials Leak

Using the same SSRF, by making a request to an attacker controlled server, the Authorization header would include a super-user’s credentials that could be replayed against other endpoints.

Password Reset

The password reset endpoint at PUT /casa.os/slice/user only required a username and new password, no additional verification to ensure you know the current password (likely by design to allow administrators to change user credentials). This could be abused to change the admin account and login over SSH for RCE.

Path Traversal

A straight forward path traversal using the /casa/private/config/slice/ha/certificate API one could directly upload a .jsp webshell and include path traversal in the name to write it into the webroot if they know the location.