Skip to main content
← All vulnerabilities
CVE-2026-62967

ZTNET privilege bypass: any user can deactivate arbitrary accounts via /api/auth/user/invalidateUser

Published
Last modified
published
Not listed in CISA KEV
Specific setups only
Fix
Fixed in 0.8.0
None on Exploit-DB, Metasploit or GitHub

Summary

ZTNET, a web interface for managing ZeroTier private network controllers, is affected. Any logged-in user with low privileges can deactivate other accounts, including administrator accounts, which locks those users out and disrupts organization management.

Summarized by anthropic/claude-haiku-5.5. Verify details against the original sources.

Read the original description

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.

Timeline

  1. CVE published
  2. First seen by cve.now

Affected versions

  • sinamics ztnet

    fixed in 0.8.0

References 4

GitHub · sinamics/ztnet