Bug 2511903 (CVE-2026-71367) - CVE-2026-71367 awx: WebSocket broadcast groups leak cross-organization job metadata
Summary: CVE-2026-71367 awx: WebSocket broadcast groups leak cross-organization job me...
Keywords:
Status: NEW
Alias: CVE-2026-71367
Product: Security Response
Classification: Other
Component: vulnerability
Version: unspecified
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Product Security
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2026-08-06 04:59 UTC by OSIDB Bzimport
Modified: 2026-11-12 13:23 UTC (History)
9 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed:
Embargoed:


Attachments (Terms of Use)

Description OSIDB Bzimport 2026-08-06 04:59:45 UTC
AWX WebSocket subscriptions skip RBAC checks for global broadcast groups. The consumer_access() function in awx/main/access.py maps only object-level event groups to access classes:

class_map = {
    'job_events': JobAccess,
    'workflow_events': WorkflowJobAccess,
    'ad_hoc_command_events': AdHocCommandAccess,
}
return class_map.get(group_name)

When a client subscribes to a broadcast group such as 'jobs-status_changed', group_name is 'jobs', so consumer_access() returns None. The consumer in awx/main/consumers.py only runs user_can_see_object_id() when the access class is not None; otherwise it adds the user to the requested group unconditionally:

access_cls = consumer_access(group_name)
if access_cls is not None:
    if not await self.user_can_see_object_id(user_access, oid):
        continue
new_groups.add(name)

The job model emits global status updates to 'jobs-status_changed' including job IDs, status changes, timestamps, and instance_group_name. In multi-organization deployments, a low-privilege user from one organization can receive real-time status metadata for jobs in all organizations that are otherwise hidden by the REST API.


Note You need to log in before you can comment on or make changes to this bug.