{"id":"CVE-2026-71367","kind":"vulnerability","aliases":["CVE-2026-71367"],"related":[],"title":"AWX: WebSocket lets any logged-in user read other organizations' job status","description":"An incorrect authorization vulnerability was found in AWX's WebSocket consumer. The consumer_access() function only enforces access controls for object-level event groups (job_events, workflow_events, ad_hoc_command_events) but does not restrict subscriptions to global broadcast groups such as 'jobs-status_changed'. When an authenticated user subscribes to a global broadcast group, the server accepts the subscription without verifying that the user has permission to view the associated resources. In multi-organization deployments, this allows a low-privilege user in one organization to receive real-time job status metadata from all organizations, including job IDs, status transitions, timestamps, and infrastructure topology details such as instance group names, bypassing the organization isolation enforced by the REST API.","summary":"AWX, the open-source Ansible automation controller, does not check permissions on one of its global WebSocket broadcast groups, so an authenticated user can subscribe to it. The subscriber then receives job IDs, status changes, timestamps and instance group names from every organization, bypassing the isolation the REST API enforces.","severity":"medium","cvss":4.3,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["ansible","awx","infrastructure","kubernetes","self-hosted"],"not_affected_if":["managed-hosting","single-organization"],"how_to_check":"- Check the AWX version in use against the affected ranges in the NVD entry (https://nvd.nist.gov/vuln/detail/CVE-2026-71367)\n- Confirm whether the deployment has multiple organizations with users in different organizations","fix":null,"status":"open","published_at":"2026-11-12T14:17:30+00:00","first_seen_at":"2026-11-12T14:38:37+00:00","triaged_at":"2026-11-12T14:39:12+00:00","updated_at":"2026-11-12T14:39:12+00:00","category":"infrastructure","confidence":0.6,"triage":{"at":"2026-11-12T14:39:12Z","model":"claude-haiku-5-5","output":{"fix":"unknown","reach":"network","title":"AWX: WebSocket lets any logged-in user read other organizations' job status","impact":"low","summary":"AWX, the open-source Ansible automation controller, does not check permissions on one of its global WebSocket broadcast groups, so an authenticated user can subscribe to it. The subscriber then receives job IDs, status changes, timestamps and instance group names from every organization, bypassing the isolation the REST API enforces.","audience":"businesses","category":"infrastructure","nicknames":[],"who_cares":["awx","ansible","self-hosted","kubernetes"],"confidence":0.6,"fix_status":"unknown","needs_auth":"yes","worst_case":"low-privilege user reads cross-organization job status metadata","analyst_note":"Find the affected and fixed AWX versions from the NVD entry or the AWX release notes and confirm the consumer_access fix.","how_to_check":"- Check the AWX version in use against the affected ranges in the NVD entry (https://nvd.nist.gov/vuln/detail/CVE-2026-71367)\n- Confirm whether the deployment has multiple organizations with users in different organizations\n- unknown","plain_action":"","product_name":"","needs_analyst":true,"not_affected_if":["single-organization","managed-hosting"],"who_is_affected":"Multi-organization AWX deployments where some users belong to organizations that should not see each other's jobs. Single-organization deployments have less to lose, since the data exposed is cross-organization. The sources give no affected version range.","user_interaction":"no","product_ecosystem":"","needs_special_setup":"unknown","severity_if_unknown":"medium"},"cost_usd":0.00075,"input_tokens":4689,"output_tokens":563,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-2026':15A,18A '-71367':16A,19A 'accept':138C 'access':91C,95C 'ad':107C 'allow':159C 'ansibl':20B,32B 'api':76B,202C 'associ':151C 'authent':49B,128C 'author':80C 'autom':33B 'awx':1A,21B,27B,85C 'broadcast':45B,118C,134C 'bypass':71B,194C 'chang':62B,125C 'check':37B 'command':109C 'consum':88C,90C 'control':34B,96C 'cve':14A,17A 'deploy':157C 'detail':188C 'enforc':77B,94C,198C 'event':101C,104C,106C,110C 'everi':69B 'found':83C 'function':92C 'global':43B,117C,133C 'group':46B,66B,102C,119C,135C,192C 'hoc':108C 'host':26B 'id':60B,181C 'includ':179C 'incorrect':79C 'infrastructur':22B,186C 'instanc':65B,191C 'isol':73B,197C 'job':12A,59B,103C,123C,173C,180C 'jobs-status':122C 'kubernet':23B 'let':3A 'level':100C 'log':6A 'logged-in':5A 'low':162C 'low-privileg':161C 'metadata':175C 'multi':155C 'multi-organ':154C 'name':67B,193C 'object':99C 'object-level':98C 'one':40B,166C 'open':30B 'open-sourc':29B 'organ':11A,70B,156C,167C,178C,196C 'permiss':38B,147C 'privileg':163C 'read':9A 'real':171C 'real-tim':170C 'receiv':58B,169C 'resourc':152C 'rest':75B,201C 'restrict':114C 'self':25B 'self-host':24B 'server':137C 'sourc':31B 'status':13A,61B,124C,174C,182C 'subscrib':52B,56B,130C 'subscript':115C,140C 'time':172C 'timestamp':63B,184C 'topolog':187C 'transit':183C 'user':8A,50B,129C,145C,164C 'verifi':142C 'view':149C 'vulner':81C 'websocket':2A,44B,87C 'without':141C 'workflow':105C","nicknames":[],"mitigations":[],"who_affected":"Multi-organization AWX deployments where some users belong to organizations that should not see each other's jobs. Single-organization deployments have less to lose, since the data exposed is cross-organization. The sources give no affected version range.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"none","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["ansible","awx","infrastructure","kubernetes","medium","selfhosted"],"campaign_type":null,"search_a":"'-2026':15A,18A '-71367':16A,19A 'awx':1A 'cve':14A,17A 'job':12A 'let':3A 'log':6A 'logged-in':5A 'organ':11A 'read':9A 'status':13A 'user':8A 'websocket':2A","search_b":"'ansibl':20B,32B 'api':76B 'authent':49B 'autom':33B 'awx':21B,27B 'broadcast':45B 'bypass':71B 'chang':62B 'check':37B 'control':34B 'enforc':77B 'everi':69B 'global':43B 'group':46B,66B 'host':26B 'id':60B 'infrastructur':22B 'instanc':65B 'isol':73B 'job':59B 'kubernet':23B 'name':67B 'one':40B 'open':30B 'open-sourc':29B 'organ':70B 'permiss':38B 'receiv':58B 'rest':75B 'self':25B 'self-host':24B 'sourc':31B 'status':61B 'subscrib':52B,56B 'timestamp':63B 'user':50B 'websocket':44B","search_c":"'accept':138C 'access':91C,95C 'ad':107C 'allow':159C 'api':202C 'associ':151C 'authent':128C 'author':80C 'awx':85C 'broadcast':118C,134C 'bypass':194C 'chang':125C 'command':109C 'consum':88C,90C 'control':96C 'deploy':157C 'detail':188C 'enforc':94C,198C 'event':101C,104C,106C,110C 'found':83C 'function':92C 'global':117C,133C 'group':102C,119C,135C,192C 'hoc':108C 'id':181C 'includ':179C 'incorrect':79C 'infrastructur':186C 'instanc':191C 'isol':197C 'job':103C,123C,173C,180C 'jobs-status':122C 'level':100C 'low':162C 'low-privileg':161C 'metadata':175C 'multi':155C 'multi-organ':154C 'name':193C 'object':99C 'object-level':98C 'one':166C 'organ':156C,167C,178C,196C 'permiss':147C 'privileg':163C 'real':171C 'real-tim':170C 'receiv':169C 'resourc':152C 'rest':201C 'restrict':114C 'server':137C 'status':124C,174C,182C 'subscrib':130C 'subscript':115C,140C 'time':172C 'timestamp':184C 'topolog':187C 'transit':183C 'user':129C,145C,164C 'verifi':142C 'view':149C 'vulner':81C 'websocket':87C 'without':141C 'workflow':105C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-11-12T14:17:30+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","cvss_by":"secalert@redhat.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-71367","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-71367","severity":null,"published_at":"2026-11-12T14:17:30+00:00","modified_at":"2026-11-12T14:17:30+00:00","first_seen_at":"2026-11-12T14:38:37+00:00","fetched_at":"2026-11-12T14:38:37+00:00","note":null}],"documents":[],"disclosures":[],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}