{"id":"GHSA-wpxj-44w3-2j6x","summary":"Nautobot: REST API permits creation of GenericForeignKey references to objects that the user should not be able to reference","details":"### Impact\n\nIn the case of inter-object references via `GenericForeignKey` (a pattern allowing an object to reference another object that may belong to one of several different \"content types\" or database tables), when creating or updating an object containing a `GenericForeignKey`, Nautobot's REST API failed to enforce user \"view\" permissions when determining whether a given reference to another object would be valid. \n\nAs a concrete example, a user:\n\n- who has permission to create or update `ImageAttachment` records\n- but who lacks permission to view (some or all) `Device` records\n- _but who knows (via some other mechanism) the UUID of a specific `Device` that they do not otherwise have access to_\n\ncould create via the REST API an `ImageAttachment` linked to that specific `Device`.\n\nOther models that use `GenericForeignKey` and may be writable via the REST API, and hence have a similar vulnerability to `ImageAttachment`, may include:\n\n- `ApprovalWorkflow`\n- `Cable`\n- `ConfigContext`\n- `ContactAssociation`\n- `DataCompliance`\n- `Device`\n- `ExportTemplate`\n- `GraphQLQuery`\n- `Note`\n- `ObjectMetadata`\n- `RelationshipAssociation`\n- `StaticGroupAssociation`\n- `VirtualMachine`\n\nAdditionally, any Nautobot Apps that provide models with a REST API and use GenericForeignKey may have a similar vulnerability for their models.\n\n### Patches\n\nA general-purpose fix has been implemented in Nautobot 2.4.33 and 3.1.2, which ensures correct application of \"view\" permissions when creating or modifying object references via `GenericForeignKey` throughout the REST API. Individual models/views/serializers generally will not require any specific code changes to benefit from this fix.\n\n### Workarounds\n\nNo known workarounds at this time.\n\n### References\n\n- 2.4.33 (\u003ca href=\"https://github.com/nautobot/nautobot/commit/9918bdb9bcf1eb42cda72c344f420a64ef7665f1\"\u003epatch\u003c/a\u003e)\n- 3.1.2 (\u003ca href=\"https://github.com/nautobot/nautobot/commit/36cde7148a207234de6212ec074f321dbc9d1b5b\"\u003epatch\u003c/a\u003e)","aliases":["CVE-2026-44794","PYSEC-2026-2225"],"modified":"2026-07-13T07:26:41.685580208Z","published":"2026-05-13T15:30:46Z","database_specific":{"github_reviewed_at":"2026-05-13T15:30:46Z","nvd_published_at":"2026-05-28T18:16:33Z","cwe_ids":["CWE-862"],"severity":"MODERATE","github_reviewed":true},"references":[{"type":"WEB","url":"https://github.com/nautobot/nautobot/security/advisories/GHSA-wpxj-44w3-2j6x"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-44794"},{"type":"WEB","url":"https://github.com/nautobot/nautobot/commit/36cde7148a207234de6212ec074f321dbc9d1b5b"},{"type":"WEB","url":"https://github.com/nautobot/nautobot/commit/9918bdb9bcf1eb42cda72c344f420a64ef7665f1"},{"type":"PACKAGE","url":"https://github.com/nautobot/nautobot"},{"type":"WEB","url":"https://github.com/nautobot/nautobot/releases/tag/v2.4.33"},{"type":"WEB","url":"https://github.com/nautobot/nautobot/releases/tag/v3.1.2"}],"affected":[{"package":{"name":"nautobot","ecosystem":"PyPI","purl":"pkg:pypi/nautobot"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"3.0.0a2"},{"fixed":"3.1.2"}]}],"versions":["3.0.0","3.0.0a2","3.0.0a3","3.0.0rc1","3.0.0rc2","3.0.1","3.0.10","3.0.11","3.0.2","3.0.3","3.0.4","3.0.5","3.0.6","3.0.7","3.0.8","3.0.9","3.1.0","3.1.0a1","3.1.0a2","3.1.0a3","3.1.0a4","3.1.0a5","3.1.1"],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/05/GHSA-wpxj-44w3-2j6x/GHSA-wpxj-44w3-2j6x.json"}},{"package":{"name":"nautobot","ecosystem":"PyPI","purl":"pkg:pypi/nautobot"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.4.33"}]}],"versions":["1.0.0","1.0.0a1","1.0.0a2","1.0.0b1","1.0.0b2","1.0.0b3","1.0.0b4","1.0.1","1.0.2","1.0.3","1.1.0","1.1.1","1.1.2","1.1.3","1.1.4","1.1.5","1.1.6","1.2.0","1.2.1","1.2.10","1.2.11","1.2.2","1.2.3","1.2.4","1.2.5","1.2.6","1.2.7","1.2.8","1.2.9","1.3.0","1.3.1","1.3.10","1.3.2","1.3.3","1.3.4","1.3.5","1.3.6","1.3.7","1.3.8","1.3.9","1.4.0","1.4.1","1.4.10","1.4.2","1.4.3","1.4.4","1.4.5","1.4.7","1.4.8","1.4.9","1.5.0","1.5.1","1.5.10","1.5.11","1.5.12","1.5.13","1.5.14","1.5.15","1.5.16","1.5.17","1.5.18","1.5.19","1.5.2","1.5.20","1.5.21","1.5.22","1.5.23","1.5.24","1.5.3","1.5.4","1.5.5","1.5.6","1.5.7","1.5.8","1.5.9","1.6.0","1.6.1","1.6.10","1.6.11","1.6.12","1.6.13","1.6.14","1.6.15","1.6.16","1.6.17","1.6.18","1.6.19","1.6.2","1.6.20","1.6.21","1.6.22","1.6.23","1.6.24","1.6.25","1.6.26","1.6.27","1.6.28","1.6.29","1.6.3","1.6.30","1.6.31","1.6.32","1.6.4","1.6.5","1.6.6","1.6.7","1.6.8","1.6.9","2.0.0","2.0.1","2.0.2","2.0.3","2.0.4","2.0.5","2.0.6","2.1.0","2.1.0b1","2.1.1","2.1.2","2.1.3","2.1.4","2.1.5","2.1.6","2.1.7","2.1.8","2.1.9","2.2.0","2.2.0b1","2.2.1","2.2.2","2.2.3","2.2.4","2.2.5","2.2.6","2.2.7","2.2.8","2.2.9","2.3.0","2.3.0b1","2.3.1","2.3.10","2.3.11","2.3.12","2.3.13","2.3.14","2.3.15","2.3.15b1","2.3.16","2.3.2","2.3.3","2.3.4","2.3.5","2.3.6","2.3.7","2.3.8","2.3.9","2.4.0","2.4.0b1","2.4.1","2.4.10","2.4.11","2.4.12","2.4.13","2.4.14","2.4.15","2.4.16","2.4.17","2.4.18","2.4.19","2.4.2","2.4.20","2.4.21","2.4.22","2.4.23","2.4.24","2.4.25","2.4.26","2.4.27","2.4.28","2.4.29","2.4.3","2.4.30","2.4.31","2.4.32","2.4.4","2.4.5","2.4.6","2.4.7","2.4.8","2.4.9"],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/05/GHSA-wpxj-44w3-2j6x/GHSA-wpxj-44w3-2j6x.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N"}]}