CVE-2026-83805: Nautobot: Authorization bypass in approval workflow REST API allows self-approval and unauthorized activation of scheduled jobs
Impact This is an authorization bypass that escalates into unauthorized server-side job execution.
1. Primary impact - self-approval: The approver checks (approver-group membership, change permission on the object under review, one-response-per-user) are enforced only in the approve/deny actions on ApprovalWorkflowStage. The generic ApprovalWorkflowStageResponse create endpoint enforces none of them, so a user holding only extras.addapprovalworkflowstageresponse can POST approved responses directly and drive a stage past its minapprovers threshold with no legitimate approver involved. The serializer also exposes user and state as writable, letting the attacker attribute responses to arbitrary users.
2. Escalated impact job activation: Because the approval workflow gates a ScheduledJob, self-approval does not stop at the approval record. Stage approval cascades through ApprovalWorkflow.save() to onworkflowapproved(), which sets the target job to enabled/active.
Patches
Fixed in Nautobot v3.1.8
Workarounds Restrict the extras.addapprovalworkflowstageresponse permission so that no untrusted user holds it; approval responses should only ever be created via the stage approve/deny actions. There is no configuration flag that disables the generic create endpoint prior to the patch.
Other sources
Nautobot is a Network Source of Truth and Network Automation Platform. From 3.0.0 until 3.1.8, the generic ApprovalWorkflowStageResponse create endpoint does not enforce approver-group membership, change permission on the object under review, or the one-response-per-user restriction applied by the intended approve and deny actions. A user with only extras.addapprovalworkflowstageresponse can submit approved responses directly, while writable user and state fields permit responses to be attributed to arbitrary users. These forged responses can satisfy minapprovers, approve the workflow, and activate its gated ScheduledJob without a legitimate approver. This issue is fixed in version 3.1.8.
— MITRE
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
pip/nautobotto a version that resolves this vulnerability.Fixed in 3.1.8 - Upgrade
Upgrade
Nautobotto a version that resolves this vulnerability.Fixed in 3.1.8 - Configuration
Restrict the extras.add_approvalworkflowstageresponse permission so that no untrusted user holds it; create approval responses only via the stage approve/deny actions.
Nautobot approval workflow extras.add_approvalworkflowstageresponse permission = restricted to no untrusted users
Event History
Frequently Asked Questions
Who can exploit this issue?
Any authenticated user granted the extras.add_approvalworkflowstageresponse permission can exploit the vulnerable create endpoint. They do not need membership in an approver group or change permission on the object under review.
What can an attacker do through the vulnerable endpoint?
An attacker can submit forged approved workflow-stage responses, including responses attributed to arbitrary users. Those responses can satisfy the required minimum approver count, approve a workflow, and activate a ScheduledJob that the workflow gates.
Are normal approval safeguards sufficient to prevent exploitation?
No. The vulnerable generic create endpoint does not enforce the approver-group, object change-permission, or one-response-per-user checks used by the intended approve and deny actions.
How can this be remediated?
Upgrade Nautobot to version 3.1.8, which fixes the issue. The affected versions are 3.0.0 through versions before 3.1.8.