Vulnerability · CVE-2026-76648
CopyAPIView (awx/awx/api/generics.py:873) sets permission_classes = (IsAuthenticated,), so DRF's get_object() performs no object-level RBAC.
Published Sep 23, 2026 · catalog updated Oct 16, 2026 · CopyAPIView (awx/awx/api/generics.py:873) sets permission_classes
Check if you run it
No confirmed exploitation is on record for CVE-2026-76648. EPSS is 0.24%. Act only if a listed version of CopyAPIView (awx/awx/api/generics.py:873) sets permission_classes is installed.
Gaps on this record
- The stored product name is a package slug. The name on this page is taken from the title (CopyAPIView (awx/awx/api/generics.py:873) sets permission_classes).
- No version range is stored. A customer cannot check an installed version against this record.
- No vendor fix or required action is stored. Compare the linked advisory before you change production.
- Severity
- High8.5
- Known exploitation
- Not in CISA/VulnCheck KEV
- EPSS
- 0.24%
- Remediation
- Advisory link
- Affected products
- See sources for product scope
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.
No affected version ranges are stored yet. Use the vendor advisory before you decide this record does not apply.
How to fix CVE-2026-76648
Recommended remediation
A patch or advisory reference is linked. Open the original publisher for availability by product version.
Official advisories
What to do
Three questions, each answered from this record only. Confirm the vendor advisory before you patch.
Should you patch?
No confirmed exploitation is on record for CVE-2026-76648. EPSS is 0.24%. Act only if a listed version of CopyAPIView (awx/awx/api/generics.py:873) sets permission_classes is installed.
Which versions are affected?
Affected version ranges are not on this record. Compare the installed version with the linked vendor advisory before you change production.
What should an analyst verify?
CWE-862: Missing Authorization. EPSS 0.24%. There is no CISA KEV listing. No Exploit-DB or Metasploit reference is linked. Use the source links for the original advisory.
Code
The project this record applies to. Exploit listings stay in References.
No public source repository is identified for this product.
Timeline
Detection, updates, and resolution for this record.
Sep 23, 2026 · NIST NVD
Detected
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 JobT
Oct 16, 2026 · NIST NVD
Updated
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 JobT
Sources
- CVE.orgVulnerability recordCVE-2026-76648
Official CVE identifier
cve.org - FIRST EPSSExploitation probabilityCVE-2026-76648
30-day exploitation probability 0.2%
first.org - NIST NVDVulnerability recordCVE-2026-76648
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) d
nvd.nist.gov
References
Freshness
Last verified in this catalog Oct 18, 2026. Significant claims (KEV, EPSS, CVSS, affected ranges) come from the source rows above — open the original publisher for the authoritative advisory.