Search
Find a vulnerability
Search criteria
2 vulnerabilities found for ztnet by sinamics
CVE-2026-62967 (GCVE-0-2026-62967)
Vulnerability from nvd – Published: 2026-10-30 20:54 – Updated: 2026-11-05 02:52
VLAI
EPSS
VEX
Title
ZTNET privilege bypass: any user can deactivate arbitrary accounts via /api/auth/user/invalidateUser
Summary
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.
Severity
8.1 (High)
SSVC
Exploitation: poc
Automatable: no
Technical Impact: partial
CISA Coordinator · CISA-ADP (v2.0.3)
Decision recorded 2026-11-05 02:51 UTC
CWE
- CWE-862 - Missing Authorization
Assigner
References
4 references
| URL | Tags |
|---|---|
| https://github.com/sinamics/ztnet/security/adviso… | x_refsource_CONFIRM |
| https://github.com/sinamics/ztnet/pull/941 | x_refsource_MISC |
| https://github.com/sinamics/ztnet/commit/7966af6e… | x_refsource_MISC |
| https://github.com/sinamics/ztnet/releases/tag/v0.8.0 | x_refsource_MISC |
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-62967",
"options": [
{
"Exploitation": "poc"
},
{
"Automatable": "no"
},
{
"Technical Impact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-11-05T02:51:41.328149Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-11-05T02:52:07.605Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"references": [
{
"tags": [
"exploit"
],
"url": "https://github.com/sinamics/ztnet/security/advisories/GHSA-vqfc-cmp9-c33q"
}
],
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"product": "ztnet",
"vendor": "sinamics",
"versions": [
{
"status": "affected",
"version": "\u003c 0.8.0"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "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\u0027s `userId` and a `deviceId` for which no matching pair exists in `UserDevice` makes the handler set the target account\u0027s `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\u0027s 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."
}
],
"metrics": [
{
"cvssV3_1": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "HIGH",
"baseScore": 8.1,
"baseSeverity": "HIGH",
"confidentialityImpact": "NONE",
"integrityImpact": "HIGH",
"privilegesRequired": "LOW",
"scope": "UNCHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H",
"version": "3.1"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-862",
"description": "CWE-862: Missing Authorization",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-10-30T20:54:52.378Z",
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M"
},
"references": [
{
"name": "https://github.com/sinamics/ztnet/security/advisories/GHSA-vqfc-cmp9-c33q",
"tags": [
"x_refsource_CONFIRM"
],
"url": "https://github.com/sinamics/ztnet/security/advisories/GHSA-vqfc-cmp9-c33q"
},
{
"name": "https://github.com/sinamics/ztnet/pull/941",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/sinamics/ztnet/pull/941"
},
{
"name": "https://github.com/sinamics/ztnet/commit/7966af6e62aa5778d3a698cee97053fdcb07d742",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/sinamics/ztnet/commit/7966af6e62aa5778d3a698cee97053fdcb07d742"
},
{
"name": "https://github.com/sinamics/ztnet/releases/tag/v0.8.0",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/sinamics/ztnet/releases/tag/v0.8.0"
}
],
"source": {
"advisory": "GHSA-vqfc-cmp9-c33q",
"discovery": "UNKNOWN"
},
"title": "ZTNET privilege bypass: any user can deactivate arbitrary accounts via /api/auth/user/invalidateUser"
}
},
"cveMetadata": {
"assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"assignerShortName": "GitHub_M",
"cveId": "CVE-2026-62967",
"datePublished": "2026-10-30T20:54:52.378Z",
"dateReserved": "2026-07-14T22:48:09.780Z",
"dateUpdated": "2026-11-05T02:52:07.605Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-62967 (GCVE-0-2026-62967)
Vulnerability from cvelistv5 – Published: 2026-10-30 20:54 – Updated: 2026-11-05 02:52
VLAI
EPSS
VEX
Title
ZTNET privilege bypass: any user can deactivate arbitrary accounts via /api/auth/user/invalidateUser
Summary
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.
Severity
8.1 (High)
SSVC
Exploitation: poc
Automatable: no
Technical Impact: partial
CISA Coordinator · CISA-ADP (v2.0.3)
Decision recorded 2026-11-05 02:51 UTC
CWE
- CWE-862 - Missing Authorization
Assigner
References
4 references
| URL | Tags |
|---|---|
| https://github.com/sinamics/ztnet/security/adviso… | x_refsource_CONFIRM |
| https://github.com/sinamics/ztnet/pull/941 | x_refsource_MISC |
| https://github.com/sinamics/ztnet/commit/7966af6e… | x_refsource_MISC |
| https://github.com/sinamics/ztnet/releases/tag/v0.8.0 | x_refsource_MISC |
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-62967",
"options": [
{
"Exploitation": "poc"
},
{
"Automatable": "no"
},
{
"Technical Impact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-11-05T02:51:41.328149Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-11-05T02:52:07.605Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"references": [
{
"tags": [
"exploit"
],
"url": "https://github.com/sinamics/ztnet/security/advisories/GHSA-vqfc-cmp9-c33q"
}
],
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"product": "ztnet",
"vendor": "sinamics",
"versions": [
{
"status": "affected",
"version": "\u003c 0.8.0"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "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\u0027s `userId` and a `deviceId` for which no matching pair exists in `UserDevice` makes the handler set the target account\u0027s `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\u0027s 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."
}
],
"metrics": [
{
"cvssV3_1": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "HIGH",
"baseScore": 8.1,
"baseSeverity": "HIGH",
"confidentialityImpact": "NONE",
"integrityImpact": "HIGH",
"privilegesRequired": "LOW",
"scope": "UNCHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H",
"version": "3.1"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-862",
"description": "CWE-862: Missing Authorization",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-10-30T20:54:52.378Z",
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M"
},
"references": [
{
"name": "https://github.com/sinamics/ztnet/security/advisories/GHSA-vqfc-cmp9-c33q",
"tags": [
"x_refsource_CONFIRM"
],
"url": "https://github.com/sinamics/ztnet/security/advisories/GHSA-vqfc-cmp9-c33q"
},
{
"name": "https://github.com/sinamics/ztnet/pull/941",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/sinamics/ztnet/pull/941"
},
{
"name": "https://github.com/sinamics/ztnet/commit/7966af6e62aa5778d3a698cee97053fdcb07d742",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/sinamics/ztnet/commit/7966af6e62aa5778d3a698cee97053fdcb07d742"
},
{
"name": "https://github.com/sinamics/ztnet/releases/tag/v0.8.0",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/sinamics/ztnet/releases/tag/v0.8.0"
}
],
"source": {
"advisory": "GHSA-vqfc-cmp9-c33q",
"discovery": "UNKNOWN"
},
"title": "ZTNET privilege bypass: any user can deactivate arbitrary accounts via /api/auth/user/invalidateUser"
}
},
"cveMetadata": {
"assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"assignerShortName": "GitHub_M",
"cveId": "CVE-2026-62967",
"datePublished": "2026-10-30T20:54:52.378Z",
"dateReserved": "2026-07-14T22:48:09.780Z",
"dateUpdated": "2026-11-05T02:52:07.605Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}