mediumCVSS 4.4Vulnerability

GHSA-rxmp-8h9v-56cx

## Summary A race condition vulnerability allows authenticated admin-privileged users to escalate to owner privilege. ## Details The vulnerability exists in the `updateUser` function, which is connected to the `/users/{userId}` PUT request. This function then calls the `SaveOrAddUsers` function, which checks the user's permissions on two separate occasions. The first check verifies whether the initiator is an admin or owner and rejects the request if the initiator is not. The second check retrieves the user role details from the database again and saves them in a variable called `initiatorUser`. ### `SaveOrAddUsers` Function **Location:** `netbird/management/server/user.go` — Line 556 ![SaveOrAddUsers function code showing the two separate permission checks](https://github.com/user-attachments/assets/821e79a2-ad3e-45d7-a952-daf5422c1801) Afterwards, the `validateUserUpdate` function is called, which checks if the initiator has permission to update that specific user's role. This validation is lacking, as it assumes the initiator is an admin or owner. In the case that the initiator is a regular user, these conditions do not apply, and the target can be updated to owner even when the initiator holds only a user role. ### `validateUserUpdate` Function **Location:** `netbird/management/server/user.go` — Line 862 ![validateUserUpdate function code showing the insufficient permission validation logic](https://github.com/user-attachments/assets/a7e7f2df-ee4c-45b4-9b4d-c71c605dbaaa) In summary, if the initiator's permission is **admin** at the first check and gets dropped to **user** at the second check, the initiator can update a user to **owner**. ## Proof of Concept It is possible to create the following attack: The initiator (`old_admin`) creates two different accounts — one with a **user** role and another with an **admin** role. These will be referred to as `new_user` and `new_admin` from here on. Two different requests are needed: 1. **Request 1** — U

Properties

ghsa_id
GHSA-rxmp-8h9v-56cx
severity
medium
summary
NetBird has Race Condition on UpdateUser Function, Resulting in Privilege Escalation From Admin to Owner
cvss_score
4.4
cve_id
GHSA-rxmp-8h9v-56cx
cvss_vector
CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:U/C:N/I:H/A:N
is_ghsa_only
true
ghsa_published
2026-04-01T21:03:00Z
source_url
https://github.com/advisories/GHSA-rxmp-8h9v-56cx
ghsa_updated
2026-04-01T21:03:01Z

Related Entities (3)

REPORTED_BY (1)

[Source]GitHub Advisory Database

AFFECTS (1)

[Software]go/github.com/netbirdio/netbird

HAS_WEAKNESS (1)

[Weakness]Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')

Explore deeper with Ninja Signal's threat intelligence graph

GHSA-rxmp-8h9v-56cx (CVSS 4.4) — Ninja Signal Threat Intelligence | Ninja Signal