CVE Catalog

CVE-2026-76648

HighCVSS 8.5
Published: Updated: Translated: NVD NIST

Summary

In CopyAPIView (awx/awx/api/generics.py:873), permission_classes = (IsAuthenticated,) is set, so DRF's get_object() performs no object-level RBAC. The get() handler explicitly guards with request.user.can_access(obj._class_, 'read', obj), but post() does not — it only checks can_access(model, 'add', create_kwargs_check) and can_access(model, 'copy_related', obj). For JobTemplate, can_add and can_copy_related do not imply read permission on the source job template.

Risk Assessment

An authenticated user without read permission on the source JobTemplate can copy that template, gaining access to its contents and potentially related resources. This may lead to unauthorized information disclosure and privilege escalation.

Recommendation

Upgrade AWX to a version containing the fix that adds a read permission check in the post() handler of CopyAPIView.

Other vulnerabilities in AWX

See all
Original NVD description (English source)

CopyAPIView (awx/awx/api/generics.py:873) sets permission_classes = (IsAuthenticated,), so DRF's get_object() performs no object-level RBAC. The get() handler (lines 988–991) explicitly guards with request.user.can_access(obj._class_, 'read', obj) — but post() (lines 1001–1010) does not. POST only checks: can_access(model, 'add', create_kwargs_check) can_access(model, 'copy_related', obj) For JobTemplate, can_add (awx/awx/main/access.py:1465–1520) gates on inventory.use_role + project.use_role + execution_environment.read_role — resource-level roles that do not imply read on the source JT — and can_copy_related (1522–1534) checks only credentials.use_role. None of these imply the caller can read the source JT.

Vulnerability data from NVD (NIST) · CISA KEV · EPSS