CVE-2026-62967
ZTNET privilege bypass: any user can deactivate arbitrary accounts via /api/auth/user/invalidateUser
ZTNET is a ZeroTier web UI for private controllers with multiuser and organization support. Prior to 0.8.0, any authenticated low-privilege user can permanently deactivate another account, including an administrator, through POST /api/auth/user/invalidateUser. In src/pages/api/auth/user/invalidateUser.ts, getServerSession checks only that a session exists and does not compare session.user.id with the client-supplied userId. Supplying a victim's userId and a deviceId for which no matching pair exists in UserDevice makes the handler set the target account's isActive to false. Login is then refused by src/server/auth.ts with account-expired. An attacker needs only a normal authenticated account and the victim's user ID, which may be obtainable from member lists, UI responses, logs, or other application metadata. This can lock administrators out, disrupt organization management, and deny access to any targeted user. This issue is fixed in version 0.8.0.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- Low
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- High
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
8.1
ZTNET privilege bypass: any user can deactivate arbitrary accounts via /api/auth/user/invalidateUser
ZTNET is a ZeroTier web UI for private controllers with multiuser and organization support. Prior to 0.8.0, any authenticated low-privilege user can permanently deactivate another account, including an administrator, through POST /api/auth/user/invalidateUser. In src/pages/api/auth/user/invalidateUser.ts, getServerSession checks only that a session exists and does not compare session.user.id with the client-supplied userId. Supplying a victim's userId and a deviceId for which no matching pair exists in UserDevice makes the handler set the target account's isActive to false. Login is then refused by src/server/auth.ts with account-expired. An attacker needs only a normal authenticated account and the victim's user ID, which may be obtainable from member lists, UI responses, logs, or other application metadata. This can lock administrators out, disrupt organization management, and deny access to any targeted user. This issue is fixed in version 0.8.0.
- Record
CVE-2026-62967- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H - Weakness
- CWE-862
- Updated
- 2026-11-05
EUVDEUVD-2026-114470
8.1
ZTNET is a ZeroTier web UI for private controllers with multiuser and organization support. Prior to 0.8.0, any authenticated low-privilege user can permanently deactivate another account, including an administrator, through POST /api/auth/user/invalidateUser. In src/pages/api/auth/user/invalidateUser.ts, getServerSession checks only that a session exists and does not compare session.user.id with the client-supplied userId. Supplying a victim's userId and a deviceId for which no matching pair exists in UserDevice makes the handler set the target account's isActive to false. Login is then refused by src/server/auth.ts with account-expired. An attacker needs only a normal authenticated account and the victim's user ID, which may be obtainable from member lists, UI responses, logs, or other application metadata. This can lock administrators out, disrupt organization management, and deny access to any targeted user. This issue is fixed in version 0.8.0.
- Record
EUVD-2026-114470- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H - Updated
- 2026-11-05
NVD
8.1
ZTNET is a ZeroTier web UI for private controllers with multiuser and organization support. Prior to 0.8.0, any authenticated low-privilege user can permanently deactivate another account, including an administrator, through POST /api/auth/user/invalidateUser. In src/pages/api/auth/user/invalidateUser.ts, getServerSession checks only that a session exists and does not compare session.user.id with the client-supplied userId. Supplying a victim's userId and a deviceId for which no matching pair exists in UserDevice makes the handler set the target account's isActive to false. Login is then refused by src/server/auth.ts with account-expired. An attacker needs only a normal authenticated account and the victim's user ID, which may be obtainable from member lists, UI responses, logs, or other application metadata. This can lock administrators out, disrupt organization management, and deny access to any targeted user. This issue is fixed in version 0.8.0.
- Record
CVE-2026-62967- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H - Weakness
- CWE-862
- Updated
- 2026-11-05
OSV
8.1
ZTNET privilege bypass: any user can deactivate arbitrary accounts via /api/auth/user/invalidateUser
ZTNET is a ZeroTier web UI for private controllers with multiuser and organization support. Prior to 0.8.0, any authenticated low-privilege user can permanently deactivate another account, including an administrator, through POST /api/auth/user/invalidateUser. In src/pages/api/auth/user/invalidateUser.ts, getServerSession checks only that a session exists and does not compare session.user.id with the client-supplied userId. Supplying a victim's userId and a deviceId for which no matching pair exists in UserDevice makes the handler set the target account's isActive to false. Login is then refused by src/server/auth.ts with account-expired. An attacker needs only a normal authenticated account and the victim's user ID, which may be obtainable from member lists, UI responses, logs, or other application metadata. This can lock administrators out, disrupt organization management, and deny access to any targeted user. This issue is fixed in version 0.8.0.
- Record
CVE-2026-62967- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H - Weakness
- CWE-862
- Updated
- 2026-11-05
Affected products
History
| Recorded | Changed | Sources |
|---|---|---|
| references | CVE List, EUVD, NVD | |
| facts | NVD, OSV | |
| first indexed | CVE List, EUVD, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-62967 is a high vulnerability (CVSS 8.1) in Sinamics Ztnet, published October 30, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.37%, the 31st percentile. No source names a fixed version.
References
github.com/sinamics/ztnet/security/advisories/GHSA-vqfc-cmp9-c33q
github.com/sinamics/ztnet/pull/941
github.com/sinamics/ztnet/commit/7966af6e62aa5778d3a698cee97053fdcb07d742
github.com/sinamics/ztnet/releases/tag/v0.8.0
github.com/CVEProject/cvelistV5/tree/main/cves/2026/62xxx/CVE-2026-62967.json
nvd.nist.gov/vuln/detail/CVE-2026-62967