Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate to Nautobot API
-
DeliveryIdentify target GitRepository object ID
-
ExploitSend PATCH request setting current_head to malformed value
-
ExecutionTrigger repository sync operation
-
PersistGit checkout fails with invalid commit
-
ImpactRepository unusable until manual remediation
Vulnerability Assessment
| Weakness |
CWE
|
| Exploitation Conditions | Attacker must possess valid Nautobot credentials with Django permissions extras.add_gitrepository or extras.change_gitrepository (typically granted to infrastructure administrators or automation service accounts). Exploitation requires direct REST API access to the /api/extras/git-repositories/ endpoint with the ability to send authenticated PATCH or PUT requests. The GitRepository feature must be enabled and in use for data sources (default in typical Nautobot deployments for config-as-code workflows). Attack succeeds against default API configurations with no special network positioning beyond reaching the Nautobot web service. The vendor notes that users with these permission levels can already cause similar impact by legitimately modifying branch or remote_url fields, indicating the vulnerability extends rather than creates new attack surface for this privilege tier. |
| Impact | Real-world risk is moderate despite the 7.1 CVSS score. The CVSS vector (AV:N/AC:L/PR:L/UI:N) indicates network-accessible exploitation requiring low-privilege authentication with no user interaction. However, the attack requires GitRepository object modification permissions, which are typically restricted to infrastructure/automation administrators rather than general users. The High availability impact (A:H) reflects potential denial of service - malformed current_head values can render repositories unusable until manual remediation. The Low integrity impact (I:L) reflects state confusion rather than code execution. No EPSS or KEV data provided, suggesting no evidence of active exploitation. The vendor advisory notes that users with the same permission level can already cause similar disruption by changing branch or remote_url fields, indicating this vulnerability extends rather than creates an attack surface. Patch availability is confirmed with specific fix versions (2.4.33, 3.1.2) and GitHub commit references. Priority should be guided by how tightly GitRepository permissions are restricted in your deployment - installations following least-privilege principles face lower practical risk than those with broad administrative access. |
| Exploit ScenarioDerived | An authenticated user with GitRepository modification privileges accesses the Nautobot REST API at /api/extras/git-repositories/ and issues a PATCH request setting current_head to a nonexistent commit hash (e.g., all zeros or random hex). On the next repository sync operation, Nautobot's GitRepo helper attempts to checkout this invalid commit, causing git command failures and rendering the repository unusable for data source operations. Alternatively, setting current_head to a valid but outdated commit causes Nautobot to serve stale configuration data while reporting the repository as successfully synced, creating misleading operational state for network automation workflows. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – May 13, 2026
Authenticated users with GitRepository modification privileges in Nautobot can manipulate the current_head field via REST API to force local repository clones to check out arbitrary commits, causing repository state inconsistency or denial of service. The unintended write access stems from improper REST API serializer configuration (CWE-471: Modification of Assumed-Immutable Data). Vendor-released patches in versions 2.4.33 and 3.1.2 add field-level access controls and input validation to prevent manipulation of the internal current_head tracking field. No public exploit identified at time of analysis, though exploitation requires only low-privilege authenticated API access.
RemediationAI
Upgrade to Nautobot version 2.4.33 (for 2.x deployments) or 3.1.2 (for 3.x deployments) which include patches preventing current_head manipulation via commit 9deddfc91ad9260ad17b5e20084e9e2d15be3609 (2.x) and c46f97040b2bde4320be36b23577f19a8bcbd8c3 (3.x). Release artifacts available at https://github.com/nautobot/nautobot/releases/tag/v2.4.33 and https://github.com/nautobot/nautobot/releases/tag/v3.1.2. If immediate patching is not feasible, implement compensating controls by restricting add_gitrepository and change_gitrepository permissions to only essential automation service accounts and senior infrastructure administrators, noting that this reduces but does not eliminate risk since privileged users can still manipulate branch and remote_url fields to cause similar disruption. Audit existing GitRepository objects for anomalous current_head values (should match the latest commit on the configured branch) and review access logs for unauthorized API modifications to /api/extras/git-repositories/ endpoints. Trade-off: restricting permissions may break existing automation workflows that legitimately create/modify repository configurations.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in pypi, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Nautobot is a Network Source of Truth and network automation platform built on Django REST Framework. The vulnerability exists in the GitRepository model's REST API serializer, which incorrectly exposed the current_head field (an internal state tracker for the checked-out commit SHA) as writable. This field should be managed exclusively by Nautobot's GitRepo helper class during legitimate sync operations. The underlying issue is CWE-471 (Modification of Assumed-Immutable Data) - the application assumed current_head would only be modified through controlled code paths but failed to enforce this assumption at the API boundary. The patches introduce validate_git_ref() input validation rejecting whitespace, dash-prefixed values, and malformed commit hashes, plus mark current_head as read-only in the serializer. The affected package is pip/nautobot with CPE pkg:pip/nautobot. Vulnerable versions are <2.4.33 in the 2.x line and >=3.0.0a2,<3.1.2 in the 3.x line.
Know when the next one hits your stack
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:H
Primary rating from Vendor (https://github.com/nautobot/nautobot) · only source for this CVE.
CVSS VectorVendor: https://github.com/nautobot/nautobot
DescriptionCVE.org
Impact
A user with access to add/change a GitRepository record could use the REST API to directly set the current_head field on the record, which was not intended to be user-editable. Doing so could cause Nautobot's local clone(s) of the relevant repository to checkout a commit other than the latest commit on the specified branch (resulting in misleading state), or potentially to be unable to make use of the repository at all (until manually remediated) due to the current_head pointing to a nonexistent commit hash or malformed value.
Patches
The issue has been remediated in Nautobot v2.4.33 and 3.1.2.
Workarounds
Note that many of the same end-result symptoms could be caused by a user with the same level of access simply changing the branch or remote_url of a GitRepository rather than crafting the current_head. Administrators are encouraged to carefully review which users are granted permissions to create and modify GitRepository records.
References
- 2.4.33 (<a href="https://github.com/nautobot/nautobot/commit/9deddfc91ad9260ad17b5e20084e9e2d15be3609">patch</a>)
- 3.1.2 (<a href="https://github.com/nautobot/nautobot/commit/c46f97040b2bde4320be36b23577f19a8bcbd8c3">patch</a>)
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
EUVD-2026-32973
GHSA-p3hx-pwf3-j8wr
NVD
CVE.org
EPSS
Exploit-DB