Skip to main content
Vulnerability Database/CVE-2026-83805

CVE-2026-83805: Nautobot Authentication Bypass Vulnerability

CVE-2026-83805 is an authentication bypass flaw in Nautobot that allows unauthorized users to forge approval responses and activate gated workflows. This article covers technical details, affected versions, impact, and mitigation.

Published:

CVE-2026-83805 Overview

CVE-2026-83805 is an authorization flaw in Nautobot, an open-source Network Source of Truth and Network Automation Platform. The ApprovalWorkflowStageResponse create endpoint fails to enforce approver-group membership, object-level change permissions, and the one-response-per-user restriction that the intended approve and deny actions apply. A user holding only the extras.add_approvalworkflowstageresponse permission can submit approved responses directly and attribute them to arbitrary users via writable user and state fields. Forged responses satisfy the min_approvers threshold, approve the workflow, and activate its gated ScheduledJob without a legitimate approver. The issue affects versions 3.0.0 through 3.1.7 and is fixed in 3.1.8.

Critical Impact

An authenticated low-privileged user can forge approval records to activate gated scheduled jobs, bypassing multi-party approval controls on network automation workflows.

Affected Products

  • Nautobot versions 3.0.0 through 3.1.7
  • Nautobot deployments using ApprovalWorkflow for ScheduledJob gating
  • Nautobot instances granting users the extras.add_approvalworkflowstageresponse permission

Discovery Timeline

  • 2026-09-22 - CVE-2026-83805 published to the National Vulnerability Database (NVD)
  • 2026-09-23 - Last updated in NVD database

Technical Details for CVE-2026-83805

Vulnerability Analysis

The vulnerability is a broken access control issue classified under [CWE-285] Improper Authorization. Nautobot exposes a generic Django REST Framework create endpoint for the ApprovalWorkflowStageResponse model. This endpoint bypasses the business logic implemented by the dedicated approve and deny actions.

The intended workflow requires an approver to belong to a designated approver group and to hold change permission on the object under review. It also restricts each approver to a single response per stage. The generic create endpoint enforces none of these constraints. Only the extras.add_approvalworkflowstageresponse model permission is checked.

Because the serializer exposes the user and state fields as writable, an attacker can craft a POST request that records an approved response attributed to another user. Once enough forged responses meet the min_approvers threshold, the workflow transitions to an approved state and releases the gated ScheduledJob for execution.

Root Cause

The root cause is missing authorization logic on the generic create endpoint for ApprovalWorkflowStageResponse. The developers concentrated approval controls in the approve and deny action handlers but left the underlying create route reachable with only the base model permission. Writable serializer fields for user and state compound the flaw by allowing attribution spoofing.

Attack Vector

Exploitation requires an authenticated Nautobot session with the extras.add_approvalworkflowstageresponse permission. The attacker issues one or more POST requests to the generic ApprovalWorkflowStageResponse endpoint. Each request sets state to approved and user to a legitimate approver identity. When the number of forged responses reaches min_approvers, the workflow approves and the associated ScheduledJob executes with its configured privileges. See the GitHub Security Advisory GHSA-q4c5-2j6f-r476 for reference details.

Detect Identity Attacks the Moment Authentication Fails

Singularity™ Identity surfaces credential misuse, lateral movement, and privilege escalation in real time, so you can contain the breach before it spreads.

Stop Identity Attacks

Detection Methods for CVE-2026-83805

Indicators of Compromise

  • POST requests to the generic ApprovalWorkflowStageResponse create endpoint originating from accounts that are not members of the configured approver group.
  • ApprovalWorkflowStageResponse records whose created_by identity differs from the user field they attribute the response to.
  • Multiple approved responses on a single workflow stage originating from the same source IP or session within a short window.
  • ScheduledJob activations preceded by approvals that were not submitted through the standard approve UI or API action.

Detection Strategies

  • Audit Nautobot database records to identify ApprovalWorkflowStageResponse rows where the submitting user lacks change permission on the reviewed object.
  • Correlate web server access logs with application audit logs to flag direct POSTs to the generic create endpoint rather than the approve or deny actions.
  • Alert on any ScheduledJob execution whose workflow approval history contains responses attributed to users who did not authenticate in that time window.

Monitoring Recommendations

  • Forward Nautobot application and audit logs to a centralized analytics platform for retention and correlation.
  • Baseline normal approval submission patterns per user and alert on deviations such as bulk approvals or off-hours activity.
  • Monitor privilege assignments involving extras.add_approvalworkflowstageresponse and review any grants of that permission.

How to Mitigate CVE-2026-83805

Immediate Actions Required

  • Upgrade Nautobot to version 3.1.8 or later, which contains the authorization fix.
  • Review and revoke the extras.add_approvalworkflowstageresponse permission from any user or group that does not require it.
  • Audit historical ApprovalWorkflowStageResponse records and ScheduledJob executions since deployment of 3.0.0 for signs of forged approvals.

Patch Information

The fix ships in Nautobot 3.1.8. The corrective changes are contained in GitHub Commit 8682707 and released via the GitHub Release v3.1.8. The patch enforces approver-group membership, object change permissions, and the one-response-per-user restriction on the generic create endpoint.

Workarounds

  • If immediate upgrade is not feasible, remove the extras.add_approvalworkflowstageresponse permission from all non-administrative roles.
  • Restrict network access to the Nautobot API so that only trusted operators can reach the ApprovalWorkflowStageResponse endpoint.
  • Temporarily disable use of ApprovalWorkflow-gated ScheduledJob objects until the patched version is deployed.
bash
# Upgrade Nautobot to the patched release
pip install --upgrade 'nautobot==3.1.8'
nautobot-server migrate
nautobot-server post_upgrade
systemctl restart nautobot nautobot-worker

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.