Automated Threat Modeling

Quick Look: CVE-2026-6912 Privilege Escalation via Self-Writable Cognito Attribute in AWS Ops Wheel

A brief summary of CVE-2026-6912, a high-severity privilege escalation in AWS Ops Wheel v2 where authenticated users can give themselves deployment admin privileges through an unrestricted Cognito custom attribute.

CVE Analysis

6 min read

ZeroPath CVE Analysis
ZeroPath CVE Analysis

2026-04-24

Quick Look: CVE-2026-6912 Privilege Escalation via Self-Writable Cognito Attribute in AWS Ops Wheel
Experimental AI-Generated Content

This CVE analysis is an experimental publication that is completely AI-generated. The content may contain errors or inaccuracies and is subject to change as more information becomes available. We are continuously refining our process.

If you have feedback, questions, or notice any errors, please reach out to us.

[email protected]

Introduction

A misconfigured Amazon Cognito User Pool Client in AWS Ops Wheel v2 lets any authenticated user grant themselves full deployment admin privileges with a single API call. That gives the user complete administrative control over the application. They can read, modify, and delete all data across tenants and manage every Cognito user account in the deployment.

AWS Ops Wheel is an open-source tool that helps teams make random selections with a virtual spinning wheel. Development and operations teams use it for lightweight decision making, and it is deployed into customer AWS accounts via CloudFormation. Because the infrastructure lives entirely in customer accounts, AWS cannot push a central fix. Each deployment must be updated individually.

Technical Information

Root Cause: Unrestricted Cognito WriteAttributes

CVE-2026-6912 falls under CWE-915: Improperly Controlled Modification of Dynamically Determined Object Attributes. In affected AWS Ops Wheel v2 deployments, the Cognito UserPoolClient was configured without WriteAttributes restrictions, so the client placed no limits on which custom attributes an authenticated user could modify on their own profile.

The custom attributes in the User Pool included custom:deployment_admin and custom:wheel_group_id. The application's authorization logic uses these attributes to determine a user's privilege level. Because the UserPoolClient did not restrict client-side writes, any authenticated user could set them freely.

Attack Flow

The exploitation path is straightforward:

  1. An attacker authenticates to the AWS Ops Wheel v2 application with any valid account in the Cognito User Pool.
  2. The attacker sends a crafted UpdateUserAttributes API call directly to the Cognito service and sets the custom:deployment_admin attribute on their own user profile.
  3. On later requests, the application's authorization logic reads the now-modified attribute and treats the attacker as a deployment admin.
  4. With admin privileges, the attacker can read, modify, and delete all application data across tenants, and can manage Cognito user accounts within the deployment User Pool.

The CVSS v3.1 score of 8.8 reflects the attack's characteristics: a network-based vector, low attack complexity, low privileges required (any authenticated user), no user interaction, and high impact on confidentiality, integrity, and availability.

How PR 165 Addresses the Flaw

The fix in PR 165 adds several layers of defense:

  1. The Cognito UserPoolClient now has a WriteAttributes restriction that explicitly blocks client-side writes to custom:deployment_admin and custom:wheel_group_id. Authenticated users can no longer modify these security-sensitive attributes through the UpdateUserAttributes API.
  2. As defense in depth, the authorizer, the middleware, and the deployment admin operations now verify the user's email server side against DEPLOYMENT_ADMIN_EMAILS. Even if someone bypassed the attribute restriction, the server-side check would reject unauthorized admin requests.
  3. Admin API calls made by deploy scripts and Lambda functions bypass the WriteAttributes restriction and continue to work normally, so the patch does not break legitimate administrative workflows.

Companion Vulnerability: CVE-2026-6911

AWS addressed a second vulnerability in the same security bulletin. CVE-2026-6911 is missing JWT signature verification in the v2 API, which allows unauthenticated administrative access. PR 164 resolves it. Together, the two vulnerabilities amount to a comprehensive failure of the v2 authentication and authorization stack, and both patches must be applied to close every known escalation path.

Vulnerability IDComponentRoot CausePatchImpact
CVE-2026-6911v2 APIMissing JWT signature verificationPR 164Unauthenticated administrative access
CVE-2026-6912Cognito User PoolImproperly controlled attribute modificationPR 165Authenticated privilege escalation

Affected Systems and Versions

The vulnerability affects all AWS Ops Wheel v2 deployments from PR 147 through PR 163. The v1 API is explicitly noted as not affected.

Any organization running a forked or derivative version of AWS Ops Wheel v2 within this range should assume it is vulnerable unless it has independently restricted Cognito UserPoolClient WriteAttributes.

Vendor Security History

The simultaneous disclosure of CVE-2026-6911 and CVE-2026-6912 shows that the v2 rewrite of AWS Ops Wheel introduced fundamental authentication and authorization weaknesses that v1 did not have. CVE-2026-6911 allowed complete authentication bypass through missing JWT signature verification, and CVE-2026-6912 allowed privilege escalation through unrestricted Cognito attribute writes. Together they are a significant security lapse in the v2 API. AWS did handle the disclosure in a coordinated, structured way and published clear remediation guidance.

References

Detect & fix
what others miss

Works with
  • GitHub
  • GitLab
  • Bitbucket
  • Azure DevOps Services
  • Gerrit
  • CVS
  • Jira
  • Linear
  • Slack
  • Security Compass
Explore integrations
Security magnifying glass visualization