Bug 2553939 (CVE-2026-111456)

Summary: CVE-2026-111456 candlepin: Consumer certificate can register systems in another organization
Product: [Other] Security Response Reporter: OSIDB Bzimport <bzimport>
Component: vulnerabilityAssignee: Product Security <prodsec-ir-bot>
Status: NEW --- QA Contact:
Severity: high Docs Contact:
Priority: high    
Version: unspecifiedCC: anthomas, ehelms, ggainey, jpasqual, juwatts, lblicha, mdellweg, mhulan, nmoumoul, ogajduse, osousa, pcreech, rchan, security-response-team, smallamp, tmalecek, zhunting
Target Milestone: ---Keywords: Security
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: ---
Doc Text:
A missing authorization check has been found in ConsumerResource.setupOwner() function of consumer registration module in the Candlepin package. The registration method checks permission to create a consumer only when the caller is a user. A consumer that authenticates with its identity certificate does not go through that check. A low-privileged network attacker or user who has a valid consumer certificate for one organization can register a new consumer in a different organization by supplying that organization's key. The response includes an identity certificate for the new consumer. With that certificate, the attacker can view the target organization's subscription pools. When the organization is not using simple content access, the attacker can attach that organization's entitlements to the new consumer.
Story Points: ---
Clone Of: Environment:
Last Closed: Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Deadline: 2026-10-27   

Description OSIDB Bzimport 2026-10-16 04:41:37 UTC
ConsumerResource.setupOwner() allows a consumer to be created only after an organization create check, and that check runs only when the caller is a UserPrincipal. POST /candlepin/consumers is annotated SecurityHole, so the normal authorization filter does not run. A caller that authenticates with a consumer identity certificate is a ConsumerPrincipal. The owner query parameter selects the organization, the consumer is stored there, and the API defaults identity-certificate creation to true.

The caller needs a valid consumer identity certificate and the key of the target organization. SSL client authentication is enabled by default.

The report states that a certificate from one organization created a consumer in another, and that the new consumer shows up in the target organization's consumer list. The shipped source confirms that path. The new certificate has the normal permissions of a consumer in the target organization, including listing that organization's pools and attaching its entitlements when the organization is not using simple content access. Those follow-on calls were not demonstrated.

The check was limited to user principals in candlepin 0.4.7 by commit 6f856359b1 on 2011-07-15. Before that commit, setupOwner() called canAccess() for every principal.

The same guard also skips cloud-registration principals when cloud authentication is enabled. Activation-key registration still requires a key that exists in the requested organization.