Search
Find a vulnerability
Search criteria
ⓘ
Use this form to refine search results.
Full-text search supports keyword queries with ranking and filtering.
You can combine vendor, product, and sources to narrow results.
Enable “Apply ordering” to sort by date instead of relevance.
14 vulnerabilities by forgekeep
CVE-2026-63464 (GCVE-0-2026-63464)
Vulnerability from nvd – Published: 2026-09-04 19:44 – Updated: 2026-09-04 19:44
VLAI
EPSS
VEX
Title
Nebula-mesh allows non-admin operators to disable webhook SSRF protection via `allow_private`
Summary
nebula-mesh is a self-hosted control plane for Slack Nebula mesh VPN. From version 0.6.0 to before version 0.7.2, non-admin operators (role user) can set allow_private: true on their own managed webhook subscription (POST/PATCH /api/v1/webhook-subscriptions). No admin check exists on this field. At delivery time, allow_private switches the dispatcher to an unguarded HTTP client, bypassing the private/loopback/link-local SSRF guard — letting a low-privilege operator make the server request internal addresses. This issue has been patched in version 0.7.2.
Severity
7.7 (High)
Assigner
References
3 references
| URL | Tags |
|---|---|
| https://github.com/forgekeep/nebula-mesh/security… | x_refsource_CONFIRM |
| https://github.com/forgekeep/nebula-mesh/commit/f… | x_refsource_MISC |
| https://github.com/forgekeep/nebula-mesh/releases… | x_refsource_MISC |
Impacted products
1 product
| Vendor | Product | Version | |
|---|---|---|---|
| forgekeep | nebula-mesh |
Affected:
>= 0.6.0, < 0.7.2
|
{
"containers": {
"cna": {
"affected": [
{
"product": "nebula-mesh",
"vendor": "forgekeep",
"versions": [
{
"status": "affected",
"version": "\u003e= 0.6.0, \u003c 0.7.2"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "nebula-mesh is a self-hosted control plane for Slack Nebula mesh VPN. From version 0.6.0 to before version 0.7.2, non-admin operators (role user) can set allow_private: true on their own managed webhook subscription (POST/PATCH /api/v1/webhook-subscriptions). No admin check exists on this field. At delivery time, allow_private switches the dispatcher to an unguarded HTTP client, bypassing the private/loopback/link-local SSRF guard \u2014 letting a low-privilege operator make the server request internal addresses. This issue has been patched in version 0.7.2."
}
],
"metrics": [
{
"cvssV3_1": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "NONE",
"baseScore": 7.7,
"baseSeverity": "HIGH",
"confidentialityImpact": "HIGH",
"integrityImpact": "NONE",
"privilegesRequired": "LOW",
"scope": "CHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N",
"version": "3.1"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-862",
"description": "CWE-862: Missing Authorization",
"lang": "en",
"type": "CWE"
}
]
},
{
"descriptions": [
{
"cweId": "CWE-918",
"description": "CWE-918: Server-Side Request Forgery (SSRF)",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-09-04T19:44:10.117Z",
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M"
},
"references": [
{
"name": "https://github.com/forgekeep/nebula-mesh/security/advisories/GHSA-7rx3-5wx3-5v76",
"tags": [
"x_refsource_CONFIRM"
],
"url": "https://github.com/forgekeep/nebula-mesh/security/advisories/GHSA-7rx3-5wx3-5v76"
},
{
"name": "https://github.com/forgekeep/nebula-mesh/commit/f3c54530e388dd21763e548923426e60a8e93ff0",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/forgekeep/nebula-mesh/commit/f3c54530e388dd21763e548923426e60a8e93ff0"
},
{
"name": "https://github.com/forgekeep/nebula-mesh/releases/tag/v0.7.2",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/forgekeep/nebula-mesh/releases/tag/v0.7.2"
}
],
"source": {
"advisory": "GHSA-7rx3-5wx3-5v76",
"discovery": "UNKNOWN"
},
"title": "Nebula-mesh allows non-admin operators to disable webhook SSRF protection via `allow_private`"
}
},
"cveMetadata": {
"assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"assignerShortName": "GitHub_M",
"cveId": "CVE-2026-63464",
"datePublished": "2026-09-04T19:44:10.117Z",
"dateReserved": "2026-07-16T21:37:45.768Z",
"dateUpdated": "2026-09-04T19:44:10.117Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-61699 (GCVE-0-2026-61699)
Vulnerability from nvd – Published: 2026-09-04 19:43 – Updated: 2026-09-04 19:43
VLAI
EPSS
VEX
Title
nebula-mesh: Certificate revocation is never enforced at the mesh
Summary
nebula-mesh is a self-hosted control plane for Slack Nebula mesh VPN. Prior to version 0.7.1, revocation is the only in-band mechanism that isolates a compromised/offboarded host from a Nebula mesh. Because the blocklist never reaches any peer's config.yml, a Blocked host retains full overlay reachability to every peer under its CA (and internal services on the mesh) for up to 30d (agent) / 365d (mobile). An attacker who exfiltrates host.key+host.crt can run stock slackhq/nebula directly, ignore the agent's 403/410 poll responses, and stay connected after the operator revokes the host. Operator-visible state (UI shows blocked, audit log records it) is misleading. This issue has been patched in version 0.7.1.
Severity
8.1 (High)
CWE
Assigner
References
3 references
| URL | Tags |
|---|---|
| https://github.com/forgekeep/nebula-mesh/security… | x_refsource_CONFIRM |
| https://github.com/forgekeep/nebula-mesh/commit/0… | x_refsource_MISC |
| https://github.com/forgekeep/nebula-mesh/releases… | x_refsource_MISC |
Impacted products
1 product
| Vendor | Product | Version | |
|---|---|---|---|
| forgekeep | nebula-mesh |
Affected:
< 0.7.1
|
{
"containers": {
"cna": {
"affected": [
{
"product": "nebula-mesh",
"vendor": "forgekeep",
"versions": [
{
"status": "affected",
"version": "\u003c 0.7.1"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "nebula-mesh is a self-hosted control plane for Slack Nebula mesh VPN. Prior to version 0.7.1, revocation is the only in-band mechanism that isolates a compromised/offboarded host from a Nebula mesh. Because the blocklist never reaches any peer\u0027s config.yml, a Blocked host retains full overlay reachability to every peer under its CA (and internal services on the mesh) for up to 30d (agent) / 365d (mobile). An attacker who exfiltrates host.key+host.crt can run stock slackhq/nebula directly, ignore the agent\u0027s 403/410 poll responses, and stay connected after the operator revokes the host. Operator-visible state (UI shows blocked, audit log records it) is misleading. This issue has been patched in version 0.7.1."
}
],
"metrics": [
{
"cvssV3_1": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "NONE",
"baseScore": 8.1,
"baseSeverity": "HIGH",
"confidentialityImpact": "HIGH",
"integrityImpact": "HIGH",
"privilegesRequired": "LOW",
"scope": "UNCHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N",
"version": "3.1"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-299",
"description": "CWE-299: Improper Check for Certificate Revocation",
"lang": "en",
"type": "CWE"
}
]
},
{
"descriptions": [
{
"cweId": "CWE-672",
"description": "CWE-672: Operation on a Resource after Expiration or Release",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-09-04T19:43:28.633Z",
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M"
},
"references": [
{
"name": "https://github.com/forgekeep/nebula-mesh/security/advisories/GHSA-cm26-5974-52h8",
"tags": [
"x_refsource_CONFIRM"
],
"url": "https://github.com/forgekeep/nebula-mesh/security/advisories/GHSA-cm26-5974-52h8"
},
{
"name": "https://github.com/forgekeep/nebula-mesh/commit/0426e2f224a9b1e2029029bf923c93ed39d21cdb",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/forgekeep/nebula-mesh/commit/0426e2f224a9b1e2029029bf923c93ed39d21cdb"
},
{
"name": "https://github.com/forgekeep/nebula-mesh/releases/tag/v0.7.1",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/forgekeep/nebula-mesh/releases/tag/v0.7.1"
}
],
"source": {
"advisory": "GHSA-cm26-5974-52h8",
"discovery": "UNKNOWN"
},
"title": "nebula-mesh: Certificate revocation is never enforced at the mesh"
}
},
"cveMetadata": {
"assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"assignerShortName": "GitHub_M",
"cveId": "CVE-2026-61699",
"datePublished": "2026-09-04T19:43:28.633Z",
"dateReserved": "2026-07-10T18:36:58.851Z",
"dateUpdated": "2026-09-04T19:43:28.633Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-55513 (GCVE-0-2026-55513)
Vulnerability from nvd – Published: 2026-09-04 19:43 – Updated: 2026-09-04 19:43
VLAI
EPSS
VEX
Title
nebula-mesh: Web UI host creation ignores configured enrollment token TTL and mints 24-hour bearer enrollment tokens
Summary
nebula-mesh is a self-hosted control plane for Slack Nebula mesh VPN. From version 0.3.0 to before version 0.5.0, the nebula-mgmt Web UI host-creation path ignores both the server-wide enrollment_token_ttl security setting and per-network network_config.enrollment_token_ttl overrides. API host creation and token-regeneration paths use the configured TTL resolver, but POST /ui/hosts hardcodes now.Add(24 * time.Hour) for newly minted agent enrollment tokens. In deployments that intentionally reduce enrollment-token lifetime, any authenticated operator who can create a host through the Web UI can still mint a bearer enrollment token valid for about 24 hours. This issue has been patched in version 0.5.0.
Severity
5.4 (Medium)
CWE
- CWE-613 - Insufficient Session Expiration
Assigner
References
3 references
| URL | Tags |
|---|---|
| https://github.com/forgekeep/nebula-mesh/security… | x_refsource_CONFIRM |
| https://github.com/forgekeep/nebula-mesh/commit/5… | x_refsource_MISC |
| https://github.com/forgekeep/nebula-mesh/releases… | x_refsource_MISC |
Impacted products
1 product
| Vendor | Product | Version | |
|---|---|---|---|
| forgekeep | nebula-mesh |
Affected:
>= 0.3.0, < 0.5.0
|
{
"containers": {
"cna": {
"affected": [
{
"product": "nebula-mesh",
"vendor": "forgekeep",
"versions": [
{
"status": "affected",
"version": "\u003e= 0.3.0, \u003c 0.5.0"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "nebula-mesh is a self-hosted control plane for Slack Nebula mesh VPN. From version 0.3.0 to before version 0.5.0, the nebula-mgmt Web UI host-creation path ignores both the server-wide enrollment_token_ttl security setting and per-network network_config.enrollment_token_ttl overrides. API host creation and token-regeneration paths use the configured TTL resolver, but POST /ui/hosts hardcodes now.Add(24 * time.Hour) for newly minted agent enrollment tokens. In deployments that intentionally reduce enrollment-token lifetime, any authenticated operator who can create a host through the Web UI can still mint a bearer enrollment token valid for about 24 hours. This issue has been patched in version 0.5.0."
}
],
"metrics": [
{
"cvssV3_1": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "NONE",
"baseScore": 5.4,
"baseSeverity": "MEDIUM",
"confidentialityImpact": "LOW",
"integrityImpact": "LOW",
"privilegesRequired": "LOW",
"scope": "UNCHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N",
"version": "3.1"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-613",
"description": "CWE-613: Insufficient Session Expiration",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-09-04T19:43:18.876Z",
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M"
},
"references": [
{
"name": "https://github.com/forgekeep/nebula-mesh/security/advisories/GHSA-g4x6-jcvr-9m3g",
"tags": [
"x_refsource_CONFIRM"
],
"url": "https://github.com/forgekeep/nebula-mesh/security/advisories/GHSA-g4x6-jcvr-9m3g"
},
{
"name": "https://github.com/forgekeep/nebula-mesh/commit/514006029e09f1991122b86a80e7b25970bcfa98",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/forgekeep/nebula-mesh/commit/514006029e09f1991122b86a80e7b25970bcfa98"
},
{
"name": "https://github.com/forgekeep/nebula-mesh/releases/tag/v0.5.0",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/forgekeep/nebula-mesh/releases/tag/v0.5.0"
}
],
"source": {
"advisory": "GHSA-g4x6-jcvr-9m3g",
"discovery": "UNKNOWN"
},
"title": "nebula-mesh: Web UI host creation ignores configured enrollment token TTL and mints 24-hour bearer enrollment tokens"
}
},
"cveMetadata": {
"assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"assignerShortName": "GitHub_M",
"cveId": "CVE-2026-55513",
"datePublished": "2026-09-04T19:43:18.876Z",
"dateReserved": "2026-06-16T22:44:22.283Z",
"dateUpdated": "2026-09-04T19:43:18.876Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-55512 (GCVE-0-2026-55512)
Vulnerability from nvd – Published: 2026-09-04 19:41 – Updated: 2026-09-04 19:41
VLAI
EPSS
VEX
Title
nebula-mesh: Unauthenticated OIDC login endpoint allocates unbounded in-memory state entries without rate limiting
Summary
nebula-mesh is a self-hosted control plane for Slack Nebula mesh VPN. From version 0.2.0 to before version 0.5.0, when OIDC is enabled, GET /ui/oidc/login is reachable without authentication and is registered outside the Web UI rate-limited auth routes. Every request creates a fresh random OIDC state value and stores it in an in-memory map for 10m. Expired states are swept lazily, but there is no rate limit or maximum live-state cap on the allocation path. An unauthenticated remote client can therefore grow OIDC.states for the full state TTL, bounded by request throughput rather than by configured auth rate limits. This issue has been patched in version 0.5.0.
Severity
5.3 (Medium)
CWE
- CWE-400 - Uncontrolled Resource Consumption
Assigner
References
3 references
| URL | Tags |
|---|---|
| https://github.com/forgekeep/nebula-mesh/security… | x_refsource_CONFIRM |
| https://github.com/forgekeep/nebula-mesh/commit/b… | x_refsource_MISC |
| https://github.com/forgekeep/nebula-mesh/releases… | x_refsource_MISC |
Impacted products
1 product
| Vendor | Product | Version | |
|---|---|---|---|
| forgekeep | nebula-mesh |
Affected:
>= 0.2.0, < 0.5.0
|
{
"containers": {
"cna": {
"affected": [
{
"product": "nebula-mesh",
"vendor": "forgekeep",
"versions": [
{
"status": "affected",
"version": "\u003e= 0.2.0, \u003c 0.5.0"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "nebula-mesh is a self-hosted control plane for Slack Nebula mesh VPN. From version 0.2.0 to before version 0.5.0, when OIDC is enabled, GET /ui/oidc/login is reachable without authentication and is registered outside the Web UI rate-limited auth routes. Every request creates a fresh random OIDC state value and stores it in an in-memory map for 10m. Expired states are swept lazily, but there is no rate limit or maximum live-state cap on the allocation path. An unauthenticated remote client can therefore grow OIDC.states for the full state TTL, bounded by request throughput rather than by configured auth rate limits. This issue has been patched in version 0.5.0."
}
],
"metrics": [
{
"cvssV3_1": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "LOW",
"baseScore": 5.3,
"baseSeverity": "MEDIUM",
"confidentialityImpact": "NONE",
"integrityImpact": "NONE",
"privilegesRequired": "NONE",
"scope": "UNCHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L",
"version": "3.1"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-400",
"description": "CWE-400: Uncontrolled Resource Consumption",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-09-04T19:41:50.326Z",
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M"
},
"references": [
{
"name": "https://github.com/forgekeep/nebula-mesh/security/advisories/GHSA-m3cx-mwpg-32jg",
"tags": [
"x_refsource_CONFIRM"
],
"url": "https://github.com/forgekeep/nebula-mesh/security/advisories/GHSA-m3cx-mwpg-32jg"
},
{
"name": "https://github.com/forgekeep/nebula-mesh/commit/bc387086cc0e4b9c1654468b7391af19cacfe367",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/forgekeep/nebula-mesh/commit/bc387086cc0e4b9c1654468b7391af19cacfe367"
},
{
"name": "https://github.com/forgekeep/nebula-mesh/releases/tag/v0.5.0",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/forgekeep/nebula-mesh/releases/tag/v0.5.0"
}
],
"source": {
"advisory": "GHSA-m3cx-mwpg-32jg",
"discovery": "UNKNOWN"
},
"title": "nebula-mesh: Unauthenticated OIDC login endpoint allocates unbounded in-memory state entries without rate limiting"
}
},
"cveMetadata": {
"assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"assignerShortName": "GitHub_M",
"cveId": "CVE-2026-55512",
"datePublished": "2026-09-04T19:41:50.326Z",
"dateReserved": "2026-06-16T22:44:22.283Z",
"dateUpdated": "2026-09-04T19:41:50.326Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-53604 (GCVE-0-2026-53604)
Vulnerability from nvd – Published: 2026-09-04 19:40 – Updated: 2026-09-04 19:40
VLAI
EPSS
VEX
Title
nebula-mesh: CA private key not zeroized on web mobile-bundle error paths
Summary
nebula-mesh is a self-hosted control plane for Slack Nebula mesh VPN. Prior to version 0.3.8, the web handler renderMobileBundle passes the real *pki.CAResolver directly into mobilebundle.Build. Inside Build, resolver.LoadByID decrypts the CA's ed25519 private key into a *pki.CAManager, but Build never calls CAManager.Wipe() on any return path. As a result, when a mobile-bundle request goes through the web UI and Build returns — especially on error (missing network, invalid prefix, DB error, signing failure) — the plaintext CA private key remains on the Go heap, unwiped, until garbage collection. An attacker able to read process memory (core dump, swap, memory-scraping) can recover the CA signing key, which would allow minting arbitrary host certificates for the mesh. The API handler already does this correctly: it loads the CAManager, defer caMgr.Wipe(), and wraps it in caManagerResolver. Only the web path is affected. This issue has been patched in version 0.3.8.
Severity
CWE
Assigner
References
3 references
| URL | Tags |
|---|---|
| https://github.com/forgekeep/nebula-mesh/security… | x_refsource_CONFIRM |
| https://github.com/forgekeep/nebula-mesh/commit/1… | x_refsource_MISC |
| https://github.com/forgekeep/nebula-mesh/releases… | x_refsource_MISC |
Impacted products
1 product
| Vendor | Product | Version | |
|---|---|---|---|
| forgekeep | nebula-mesh |
Affected:
< 0.3.8
|
{
"containers": {
"cna": {
"affected": [
{
"product": "nebula-mesh",
"vendor": "forgekeep",
"versions": [
{
"status": "affected",
"version": "\u003c 0.3.8"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "nebula-mesh is a self-hosted control plane for Slack Nebula mesh VPN. Prior to version 0.3.8, the web handler renderMobileBundle passes the real *pki.CAResolver directly into mobilebundle.Build. Inside Build, resolver.LoadByID decrypts the CA\u0027s ed25519 private key into a *pki.CAManager, but Build never calls CAManager.Wipe() on any return path. As a result, when a mobile-bundle request goes through the web UI and Build returns \u2014 especially on error (missing network, invalid prefix, DB error, signing failure) \u2014 the plaintext CA private key remains on the Go heap, unwiped, until garbage collection. An attacker able to read process memory (core dump, swap, memory-scraping) can recover the CA signing key, which would allow minting arbitrary host certificates for the mesh. The API handler already does this correctly: it loads the CAManager, defer caMgr.Wipe(), and wraps it in caManagerResolver. Only the web path is affected. This issue has been patched in version 0.3.8."
}
],
"metrics": [
{
"cvssV4_0": {
"attackComplexity": "LOW",
"attackRequirements": "NONE",
"attackVector": "NETWORK",
"baseScore": 7.1,
"baseSeverity": "HIGH",
"privilegesRequired": "LOW",
"subAvailabilityImpact": "NONE",
"subConfidentialityImpact": "NONE",
"subIntegrityImpact": "NONE",
"userInteraction": "NONE",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N",
"version": "4.0",
"vulnAvailabilityImpact": "NONE",
"vulnConfidentialityImpact": "HIGH",
"vulnIntegrityImpact": "NONE"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-212",
"description": "CWE-212: Improper Removal of Sensitive Information Before Storage or Transfer",
"lang": "en",
"type": "CWE"
}
]
},
{
"descriptions": [
{
"cweId": "CWE-316",
"description": "CWE-316: Cleartext Storage of Sensitive Information in Memory",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-09-04T19:40:51.423Z",
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M"
},
"references": [
{
"name": "https://github.com/forgekeep/nebula-mesh/security/advisories/GHSA-2p2f-px33-4vv5",
"tags": [
"x_refsource_CONFIRM"
],
"url": "https://github.com/forgekeep/nebula-mesh/security/advisories/GHSA-2p2f-px33-4vv5"
},
{
"name": "https://github.com/forgekeep/nebula-mesh/commit/1f1ab9aa8472239763d967e3d50a3cd53a1a79b9",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/forgekeep/nebula-mesh/commit/1f1ab9aa8472239763d967e3d50a3cd53a1a79b9"
},
{
"name": "https://github.com/forgekeep/nebula-mesh/releases/tag/v0.3.8",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/forgekeep/nebula-mesh/releases/tag/v0.3.8"
}
],
"source": {
"advisory": "GHSA-2p2f-px33-4vv5",
"discovery": "UNKNOWN"
},
"title": "nebula-mesh: CA private key not zeroized on web mobile-bundle error paths"
}
},
"cveMetadata": {
"assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"assignerShortName": "GitHub_M",
"cveId": "CVE-2026-53604",
"datePublished": "2026-09-04T19:40:51.423Z",
"dateReserved": "2026-06-09T19:39:52.404Z",
"dateUpdated": "2026-09-04T19:40:51.423Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-53603 (GCVE-0-2026-53603)
Vulnerability from nvd – Published: 2026-09-04 19:40 – Updated: 2026-09-04 19:40
VLAI
EPSS
VEX
Title
nebula-mesh: Operator session tokens stored in plaintext in the database
Summary
nebula-mesh is a self-hosted control plane for Slack Nebula mesh VPN. Prior to version 0.3.8, Operator session tokens are stored in plaintext in the operator_sessions table (the token column is the PRIMARY KEY). The session token is a 32-byte random hex value sent directly in a cookie and valid for 24 hours. Anyone who can read the database (backup, snapshot, file copy, or SQL-level disclosure) obtains every active session token and can hijack operator sessions directly, with no further authentication. This issue has been patched in version 0.3.8.
Severity
CWE
Assigner
References
3 references
| URL | Tags |
|---|---|
| https://github.com/forgekeep/nebula-mesh/security… | x_refsource_CONFIRM |
| https://github.com/forgekeep/nebula-mesh/commit/7… | x_refsource_MISC |
| https://github.com/forgekeep/nebula-mesh/releases… | x_refsource_MISC |
Impacted products
1 product
| Vendor | Product | Version | |
|---|---|---|---|
| forgekeep | nebula-mesh |
Affected:
< 0.3.8
|
{
"containers": {
"cna": {
"affected": [
{
"product": "nebula-mesh",
"vendor": "forgekeep",
"versions": [
{
"status": "affected",
"version": "\u003c 0.3.8"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "nebula-mesh is a self-hosted control plane for Slack Nebula mesh VPN. Prior to version 0.3.8, Operator session tokens are stored in plaintext in the operator_sessions table (the token column is the PRIMARY KEY). The session token is a 32-byte random hex value sent directly in a cookie and valid for 24 hours. Anyone who can read the database (backup, snapshot, file copy, or SQL-level disclosure) obtains every active session token and can hijack operator sessions directly, with no further authentication. This issue has been patched in version 0.3.8."
}
],
"metrics": [
{
"cvssV4_0": {
"attackComplexity": "LOW",
"attackRequirements": "NONE",
"attackVector": "NETWORK",
"baseScore": 7.1,
"baseSeverity": "HIGH",
"privilegesRequired": "LOW",
"subAvailabilityImpact": "NONE",
"subConfidentialityImpact": "NONE",
"subIntegrityImpact": "NONE",
"userInteraction": "NONE",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N",
"version": "4.0",
"vulnAvailabilityImpact": "NONE",
"vulnConfidentialityImpact": "HIGH",
"vulnIntegrityImpact": "NONE"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-312",
"description": "CWE-312: Cleartext Storage of Sensitive Information",
"lang": "en",
"type": "CWE"
}
]
},
{
"descriptions": [
{
"cweId": "CWE-522",
"description": "CWE-522: Insufficiently Protected Credentials",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-09-04T19:40:31.548Z",
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M"
},
"references": [
{
"name": "https://github.com/forgekeep/nebula-mesh/security/advisories/GHSA-q4vm-pq3q-8wgq",
"tags": [
"x_refsource_CONFIRM"
],
"url": "https://github.com/forgekeep/nebula-mesh/security/advisories/GHSA-q4vm-pq3q-8wgq"
},
{
"name": "https://github.com/forgekeep/nebula-mesh/commit/7cb01bab281ded557f8b6c81dab5f48d4c10182e",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/forgekeep/nebula-mesh/commit/7cb01bab281ded557f8b6c81dab5f48d4c10182e"
},
{
"name": "https://github.com/forgekeep/nebula-mesh/releases/tag/v0.3.8",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/forgekeep/nebula-mesh/releases/tag/v0.3.8"
}
],
"source": {
"advisory": "GHSA-q4vm-pq3q-8wgq",
"discovery": "UNKNOWN"
},
"title": "nebula-mesh: Operator session tokens stored in plaintext in the database"
}
},
"cveMetadata": {
"assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"assignerShortName": "GitHub_M",
"cveId": "CVE-2026-53603",
"datePublished": "2026-09-04T19:40:31.548Z",
"dateReserved": "2026-06-09T19:39:52.404Z",
"dateUpdated": "2026-09-04T19:40:31.548Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-53602 (GCVE-0-2026-53602)
Vulnerability from nvd – Published: 2026-09-04 19:40 – Updated: 2026-09-04 19:50
VLAI
EPSS
VEX
Title
nebula-mesh - Host revocation is not durable: blocked/offboarded hosts can regain a valid certificate
Summary
nebula-mesh is a self-hosted control plane for Slack Nebula mesh VPN. Prior to version 0.3.7, two related authorization gaps let a host that should no longer be trusted obtain a fresh, valid Nebula certificate, because nebula-mgmt does not re-evaluate revocation/authorization state at certificate issuance time — only at poll time. Firstly, the blocklist is not enforced at sign / re-enroll time. internal/api/enroll.go:128 calls caMgr.Sign(...) without consulting the blocklist. The blocklist is only checked in the poll path (internal/api/updates.go:57, fingerprintInBlocklist). The blocklist is keyed by certificate fingerprint (internal/store/sqlite.go), so a re-enrollment produces a new fingerprint that is not in the blocklist. Secondly, renewal does not re-validate operator / CA status. Auto-renewal at poll time (internal/api/updates.go:285-319, signHostCert) reads host.Name, host.Groups, host.NebulaIPs from the DB and re-signs without checking whether the owning operator is still active or the CA still valid. DisableOperator (internal/store/sqlite_operators.go) revokes sessions and API keys but does not retire the operator's CAs, and pki/signer.go checks only CA cert time-expiry, not operator/CA status. This issue has been patched in version 0.3.7.
Severity
SSVC
Exploitation: none
Automatable: no
Technical Impact: partial
CISA Coordinator · CISA-ADP (v2.0.3)
Decision recorded 2026-09-04 19:49 UTC
Assigner
References
3 references
| URL | Tags |
|---|---|
| https://github.com/forgekeep/nebula-mesh/security… | x_refsource_CONFIRM |
| https://github.com/forgekeep/nebula-mesh/issues/178 | x_refsource_MISC |
| https://github.com/forgekeep/nebula-mesh/releases… | x_refsource_MISC |
Impacted products
1 product
| Vendor | Product | Version | |
|---|---|---|---|
| forgekeep | nebula-mesh |
Affected:
< 0.3.7
|
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-53602",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-09-04T19:49:54.943637Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-09-04T19:50:03.057Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"product": "nebula-mesh",
"vendor": "forgekeep",
"versions": [
{
"status": "affected",
"version": "\u003c 0.3.7"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "nebula-mesh is a self-hosted control plane for Slack Nebula mesh VPN. Prior to version 0.3.7, two related authorization gaps let a host that should no longer be trusted obtain a fresh, valid Nebula certificate, because nebula-mgmt does not re-evaluate revocation/authorization state at certificate issuance time \u2014 only at poll time. Firstly, the blocklist is not enforced at sign / re-enroll time. internal/api/enroll.go:128 calls caMgr.Sign(...) without consulting the blocklist. The blocklist is only checked in the poll path (internal/api/updates.go:57, fingerprintInBlocklist). The blocklist is keyed by certificate fingerprint (internal/store/sqlite.go), so a re-enrollment produces a new fingerprint that is not in the blocklist. Secondly, renewal does not re-validate operator / CA status. Auto-renewal at poll time (internal/api/updates.go:285-319, signHostCert) reads host.Name, host.Groups, host.NebulaIPs from the DB and re-signs without checking whether the owning operator is still active or the CA still valid. DisableOperator (internal/store/sqlite_operators.go) revokes sessions and API keys but does not retire the operator\u0027s CAs, and pki/signer.go checks only CA cert time-expiry, not operator/CA status. This issue has been patched in version 0.3.7."
}
],
"metrics": [
{
"cvssV4_0": {
"attackComplexity": "LOW",
"attackRequirements": "NONE",
"attackVector": "NETWORK",
"baseScore": 6.9,
"baseSeverity": "MEDIUM",
"privilegesRequired": "NONE",
"subAvailabilityImpact": "NONE",
"subConfidentialityImpact": "NONE",
"subIntegrityImpact": "NONE",
"userInteraction": "NONE",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N",
"version": "4.0",
"vulnAvailabilityImpact": "NONE",
"vulnConfidentialityImpact": "NONE",
"vulnIntegrityImpact": "LOW"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-862",
"description": "CWE-862: Missing Authorization",
"lang": "en",
"type": "CWE"
}
]
},
{
"descriptions": [
{
"cweId": "CWE-285",
"description": "CWE-285: Improper Authorization",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-09-04T19:40:16.908Z",
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M"
},
"references": [
{
"name": "https://github.com/forgekeep/nebula-mesh/security/advisories/GHSA-339v-266x-79xr",
"tags": [
"x_refsource_CONFIRM"
],
"url": "https://github.com/forgekeep/nebula-mesh/security/advisories/GHSA-339v-266x-79xr"
},
{
"name": "https://github.com/forgekeep/nebula-mesh/issues/178",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/forgekeep/nebula-mesh/issues/178"
},
{
"name": "https://github.com/forgekeep/nebula-mesh/releases/tag/v0.3.7",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/forgekeep/nebula-mesh/releases/tag/v0.3.7"
}
],
"source": {
"advisory": "GHSA-339v-266x-79xr",
"discovery": "UNKNOWN"
},
"title": "nebula-mesh - Host revocation is not durable: blocked/offboarded hosts can regain a valid certificate"
}
},
"cveMetadata": {
"assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"assignerShortName": "GitHub_M",
"cveId": "CVE-2026-53602",
"datePublished": "2026-09-04T19:40:16.908Z",
"dateReserved": "2026-06-09T19:39:52.404Z",
"dateUpdated": "2026-09-04T19:50:03.057Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-63464 (GCVE-0-2026-63464)
Vulnerability from cvelistv5 – Published: 2026-09-04 19:44 – Updated: 2026-09-04 19:44
VLAI
EPSS
VEX
Title
Nebula-mesh allows non-admin operators to disable webhook SSRF protection via `allow_private`
Summary
nebula-mesh is a self-hosted control plane for Slack Nebula mesh VPN. From version 0.6.0 to before version 0.7.2, non-admin operators (role user) can set allow_private: true on their own managed webhook subscription (POST/PATCH /api/v1/webhook-subscriptions). No admin check exists on this field. At delivery time, allow_private switches the dispatcher to an unguarded HTTP client, bypassing the private/loopback/link-local SSRF guard — letting a low-privilege operator make the server request internal addresses. This issue has been patched in version 0.7.2.
Severity
7.7 (High)
Assigner
References
3 references
| URL | Tags |
|---|---|
| https://github.com/forgekeep/nebula-mesh/security… | x_refsource_CONFIRM |
| https://github.com/forgekeep/nebula-mesh/commit/f… | x_refsource_MISC |
| https://github.com/forgekeep/nebula-mesh/releases… | x_refsource_MISC |
Impacted products
1 product
| Vendor | Product | Version | |
|---|---|---|---|
| forgekeep | nebula-mesh |
Affected:
>= 0.6.0, < 0.7.2
|
{
"containers": {
"cna": {
"affected": [
{
"product": "nebula-mesh",
"vendor": "forgekeep",
"versions": [
{
"status": "affected",
"version": "\u003e= 0.6.0, \u003c 0.7.2"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "nebula-mesh is a self-hosted control plane for Slack Nebula mesh VPN. From version 0.6.0 to before version 0.7.2, non-admin operators (role user) can set allow_private: true on their own managed webhook subscription (POST/PATCH /api/v1/webhook-subscriptions). No admin check exists on this field. At delivery time, allow_private switches the dispatcher to an unguarded HTTP client, bypassing the private/loopback/link-local SSRF guard \u2014 letting a low-privilege operator make the server request internal addresses. This issue has been patched in version 0.7.2."
}
],
"metrics": [
{
"cvssV3_1": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "NONE",
"baseScore": 7.7,
"baseSeverity": "HIGH",
"confidentialityImpact": "HIGH",
"integrityImpact": "NONE",
"privilegesRequired": "LOW",
"scope": "CHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N",
"version": "3.1"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-862",
"description": "CWE-862: Missing Authorization",
"lang": "en",
"type": "CWE"
}
]
},
{
"descriptions": [
{
"cweId": "CWE-918",
"description": "CWE-918: Server-Side Request Forgery (SSRF)",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-09-04T19:44:10.117Z",
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M"
},
"references": [
{
"name": "https://github.com/forgekeep/nebula-mesh/security/advisories/GHSA-7rx3-5wx3-5v76",
"tags": [
"x_refsource_CONFIRM"
],
"url": "https://github.com/forgekeep/nebula-mesh/security/advisories/GHSA-7rx3-5wx3-5v76"
},
{
"name": "https://github.com/forgekeep/nebula-mesh/commit/f3c54530e388dd21763e548923426e60a8e93ff0",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/forgekeep/nebula-mesh/commit/f3c54530e388dd21763e548923426e60a8e93ff0"
},
{
"name": "https://github.com/forgekeep/nebula-mesh/releases/tag/v0.7.2",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/forgekeep/nebula-mesh/releases/tag/v0.7.2"
}
],
"source": {
"advisory": "GHSA-7rx3-5wx3-5v76",
"discovery": "UNKNOWN"
},
"title": "Nebula-mesh allows non-admin operators to disable webhook SSRF protection via `allow_private`"
}
},
"cveMetadata": {
"assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"assignerShortName": "GitHub_M",
"cveId": "CVE-2026-63464",
"datePublished": "2026-09-04T19:44:10.117Z",
"dateReserved": "2026-07-16T21:37:45.768Z",
"dateUpdated": "2026-09-04T19:44:10.117Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-61699 (GCVE-0-2026-61699)
Vulnerability from cvelistv5 – Published: 2026-09-04 19:43 – Updated: 2026-09-04 19:43
VLAI
EPSS
VEX
Title
nebula-mesh: Certificate revocation is never enforced at the mesh
Summary
nebula-mesh is a self-hosted control plane for Slack Nebula mesh VPN. Prior to version 0.7.1, revocation is the only in-band mechanism that isolates a compromised/offboarded host from a Nebula mesh. Because the blocklist never reaches any peer's config.yml, a Blocked host retains full overlay reachability to every peer under its CA (and internal services on the mesh) for up to 30d (agent) / 365d (mobile). An attacker who exfiltrates host.key+host.crt can run stock slackhq/nebula directly, ignore the agent's 403/410 poll responses, and stay connected after the operator revokes the host. Operator-visible state (UI shows blocked, audit log records it) is misleading. This issue has been patched in version 0.7.1.
Severity
8.1 (High)
CWE
Assigner
References
3 references
| URL | Tags |
|---|---|
| https://github.com/forgekeep/nebula-mesh/security… | x_refsource_CONFIRM |
| https://github.com/forgekeep/nebula-mesh/commit/0… | x_refsource_MISC |
| https://github.com/forgekeep/nebula-mesh/releases… | x_refsource_MISC |
Impacted products
1 product
| Vendor | Product | Version | |
|---|---|---|---|
| forgekeep | nebula-mesh |
Affected:
< 0.7.1
|
{
"containers": {
"cna": {
"affected": [
{
"product": "nebula-mesh",
"vendor": "forgekeep",
"versions": [
{
"status": "affected",
"version": "\u003c 0.7.1"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "nebula-mesh is a self-hosted control plane for Slack Nebula mesh VPN. Prior to version 0.7.1, revocation is the only in-band mechanism that isolates a compromised/offboarded host from a Nebula mesh. Because the blocklist never reaches any peer\u0027s config.yml, a Blocked host retains full overlay reachability to every peer under its CA (and internal services on the mesh) for up to 30d (agent) / 365d (mobile). An attacker who exfiltrates host.key+host.crt can run stock slackhq/nebula directly, ignore the agent\u0027s 403/410 poll responses, and stay connected after the operator revokes the host. Operator-visible state (UI shows blocked, audit log records it) is misleading. This issue has been patched in version 0.7.1."
}
],
"metrics": [
{
"cvssV3_1": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "NONE",
"baseScore": 8.1,
"baseSeverity": "HIGH",
"confidentialityImpact": "HIGH",
"integrityImpact": "HIGH",
"privilegesRequired": "LOW",
"scope": "UNCHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N",
"version": "3.1"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-299",
"description": "CWE-299: Improper Check for Certificate Revocation",
"lang": "en",
"type": "CWE"
}
]
},
{
"descriptions": [
{
"cweId": "CWE-672",
"description": "CWE-672: Operation on a Resource after Expiration or Release",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-09-04T19:43:28.633Z",
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M"
},
"references": [
{
"name": "https://github.com/forgekeep/nebula-mesh/security/advisories/GHSA-cm26-5974-52h8",
"tags": [
"x_refsource_CONFIRM"
],
"url": "https://github.com/forgekeep/nebula-mesh/security/advisories/GHSA-cm26-5974-52h8"
},
{
"name": "https://github.com/forgekeep/nebula-mesh/commit/0426e2f224a9b1e2029029bf923c93ed39d21cdb",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/forgekeep/nebula-mesh/commit/0426e2f224a9b1e2029029bf923c93ed39d21cdb"
},
{
"name": "https://github.com/forgekeep/nebula-mesh/releases/tag/v0.7.1",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/forgekeep/nebula-mesh/releases/tag/v0.7.1"
}
],
"source": {
"advisory": "GHSA-cm26-5974-52h8",
"discovery": "UNKNOWN"
},
"title": "nebula-mesh: Certificate revocation is never enforced at the mesh"
}
},
"cveMetadata": {
"assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"assignerShortName": "GitHub_M",
"cveId": "CVE-2026-61699",
"datePublished": "2026-09-04T19:43:28.633Z",
"dateReserved": "2026-07-10T18:36:58.851Z",
"dateUpdated": "2026-09-04T19:43:28.633Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-55513 (GCVE-0-2026-55513)
Vulnerability from cvelistv5 – Published: 2026-09-04 19:43 – Updated: 2026-09-04 19:43
VLAI
EPSS
VEX
Title
nebula-mesh: Web UI host creation ignores configured enrollment token TTL and mints 24-hour bearer enrollment tokens
Summary
nebula-mesh is a self-hosted control plane for Slack Nebula mesh VPN. From version 0.3.0 to before version 0.5.0, the nebula-mgmt Web UI host-creation path ignores both the server-wide enrollment_token_ttl security setting and per-network network_config.enrollment_token_ttl overrides. API host creation and token-regeneration paths use the configured TTL resolver, but POST /ui/hosts hardcodes now.Add(24 * time.Hour) for newly minted agent enrollment tokens. In deployments that intentionally reduce enrollment-token lifetime, any authenticated operator who can create a host through the Web UI can still mint a bearer enrollment token valid for about 24 hours. This issue has been patched in version 0.5.0.
Severity
5.4 (Medium)
CWE
- CWE-613 - Insufficient Session Expiration
Assigner
References
3 references
| URL | Tags |
|---|---|
| https://github.com/forgekeep/nebula-mesh/security… | x_refsource_CONFIRM |
| https://github.com/forgekeep/nebula-mesh/commit/5… | x_refsource_MISC |
| https://github.com/forgekeep/nebula-mesh/releases… | x_refsource_MISC |
Impacted products
1 product
| Vendor | Product | Version | |
|---|---|---|---|
| forgekeep | nebula-mesh |
Affected:
>= 0.3.0, < 0.5.0
|
{
"containers": {
"cna": {
"affected": [
{
"product": "nebula-mesh",
"vendor": "forgekeep",
"versions": [
{
"status": "affected",
"version": "\u003e= 0.3.0, \u003c 0.5.0"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "nebula-mesh is a self-hosted control plane for Slack Nebula mesh VPN. From version 0.3.0 to before version 0.5.0, the nebula-mgmt Web UI host-creation path ignores both the server-wide enrollment_token_ttl security setting and per-network network_config.enrollment_token_ttl overrides. API host creation and token-regeneration paths use the configured TTL resolver, but POST /ui/hosts hardcodes now.Add(24 * time.Hour) for newly minted agent enrollment tokens. In deployments that intentionally reduce enrollment-token lifetime, any authenticated operator who can create a host through the Web UI can still mint a bearer enrollment token valid for about 24 hours. This issue has been patched in version 0.5.0."
}
],
"metrics": [
{
"cvssV3_1": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "NONE",
"baseScore": 5.4,
"baseSeverity": "MEDIUM",
"confidentialityImpact": "LOW",
"integrityImpact": "LOW",
"privilegesRequired": "LOW",
"scope": "UNCHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N",
"version": "3.1"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-613",
"description": "CWE-613: Insufficient Session Expiration",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-09-04T19:43:18.876Z",
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M"
},
"references": [
{
"name": "https://github.com/forgekeep/nebula-mesh/security/advisories/GHSA-g4x6-jcvr-9m3g",
"tags": [
"x_refsource_CONFIRM"
],
"url": "https://github.com/forgekeep/nebula-mesh/security/advisories/GHSA-g4x6-jcvr-9m3g"
},
{
"name": "https://github.com/forgekeep/nebula-mesh/commit/514006029e09f1991122b86a80e7b25970bcfa98",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/forgekeep/nebula-mesh/commit/514006029e09f1991122b86a80e7b25970bcfa98"
},
{
"name": "https://github.com/forgekeep/nebula-mesh/releases/tag/v0.5.0",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/forgekeep/nebula-mesh/releases/tag/v0.5.0"
}
],
"source": {
"advisory": "GHSA-g4x6-jcvr-9m3g",
"discovery": "UNKNOWN"
},
"title": "nebula-mesh: Web UI host creation ignores configured enrollment token TTL and mints 24-hour bearer enrollment tokens"
}
},
"cveMetadata": {
"assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"assignerShortName": "GitHub_M",
"cveId": "CVE-2026-55513",
"datePublished": "2026-09-04T19:43:18.876Z",
"dateReserved": "2026-06-16T22:44:22.283Z",
"dateUpdated": "2026-09-04T19:43:18.876Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-55512 (GCVE-0-2026-55512)
Vulnerability from cvelistv5 – Published: 2026-09-04 19:41 – Updated: 2026-09-04 19:41
VLAI
EPSS
VEX
Title
nebula-mesh: Unauthenticated OIDC login endpoint allocates unbounded in-memory state entries without rate limiting
Summary
nebula-mesh is a self-hosted control plane for Slack Nebula mesh VPN. From version 0.2.0 to before version 0.5.0, when OIDC is enabled, GET /ui/oidc/login is reachable without authentication and is registered outside the Web UI rate-limited auth routes. Every request creates a fresh random OIDC state value and stores it in an in-memory map for 10m. Expired states are swept lazily, but there is no rate limit or maximum live-state cap on the allocation path. An unauthenticated remote client can therefore grow OIDC.states for the full state TTL, bounded by request throughput rather than by configured auth rate limits. This issue has been patched in version 0.5.0.
Severity
5.3 (Medium)
CWE
- CWE-400 - Uncontrolled Resource Consumption
Assigner
References
3 references
| URL | Tags |
|---|---|
| https://github.com/forgekeep/nebula-mesh/security… | x_refsource_CONFIRM |
| https://github.com/forgekeep/nebula-mesh/commit/b… | x_refsource_MISC |
| https://github.com/forgekeep/nebula-mesh/releases… | x_refsource_MISC |
Impacted products
1 product
| Vendor | Product | Version | |
|---|---|---|---|
| forgekeep | nebula-mesh |
Affected:
>= 0.2.0, < 0.5.0
|
{
"containers": {
"cna": {
"affected": [
{
"product": "nebula-mesh",
"vendor": "forgekeep",
"versions": [
{
"status": "affected",
"version": "\u003e= 0.2.0, \u003c 0.5.0"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "nebula-mesh is a self-hosted control plane for Slack Nebula mesh VPN. From version 0.2.0 to before version 0.5.0, when OIDC is enabled, GET /ui/oidc/login is reachable without authentication and is registered outside the Web UI rate-limited auth routes. Every request creates a fresh random OIDC state value and stores it in an in-memory map for 10m. Expired states are swept lazily, but there is no rate limit or maximum live-state cap on the allocation path. An unauthenticated remote client can therefore grow OIDC.states for the full state TTL, bounded by request throughput rather than by configured auth rate limits. This issue has been patched in version 0.5.0."
}
],
"metrics": [
{
"cvssV3_1": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "LOW",
"baseScore": 5.3,
"baseSeverity": "MEDIUM",
"confidentialityImpact": "NONE",
"integrityImpact": "NONE",
"privilegesRequired": "NONE",
"scope": "UNCHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L",
"version": "3.1"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-400",
"description": "CWE-400: Uncontrolled Resource Consumption",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-09-04T19:41:50.326Z",
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M"
},
"references": [
{
"name": "https://github.com/forgekeep/nebula-mesh/security/advisories/GHSA-m3cx-mwpg-32jg",
"tags": [
"x_refsource_CONFIRM"
],
"url": "https://github.com/forgekeep/nebula-mesh/security/advisories/GHSA-m3cx-mwpg-32jg"
},
{
"name": "https://github.com/forgekeep/nebula-mesh/commit/bc387086cc0e4b9c1654468b7391af19cacfe367",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/forgekeep/nebula-mesh/commit/bc387086cc0e4b9c1654468b7391af19cacfe367"
},
{
"name": "https://github.com/forgekeep/nebula-mesh/releases/tag/v0.5.0",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/forgekeep/nebula-mesh/releases/tag/v0.5.0"
}
],
"source": {
"advisory": "GHSA-m3cx-mwpg-32jg",
"discovery": "UNKNOWN"
},
"title": "nebula-mesh: Unauthenticated OIDC login endpoint allocates unbounded in-memory state entries without rate limiting"
}
},
"cveMetadata": {
"assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"assignerShortName": "GitHub_M",
"cveId": "CVE-2026-55512",
"datePublished": "2026-09-04T19:41:50.326Z",
"dateReserved": "2026-06-16T22:44:22.283Z",
"dateUpdated": "2026-09-04T19:41:50.326Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-53604 (GCVE-0-2026-53604)
Vulnerability from cvelistv5 – Published: 2026-09-04 19:40 – Updated: 2026-09-04 19:40
VLAI
EPSS
VEX
Title
nebula-mesh: CA private key not zeroized on web mobile-bundle error paths
Summary
nebula-mesh is a self-hosted control plane for Slack Nebula mesh VPN. Prior to version 0.3.8, the web handler renderMobileBundle passes the real *pki.CAResolver directly into mobilebundle.Build. Inside Build, resolver.LoadByID decrypts the CA's ed25519 private key into a *pki.CAManager, but Build never calls CAManager.Wipe() on any return path. As a result, when a mobile-bundle request goes through the web UI and Build returns — especially on error (missing network, invalid prefix, DB error, signing failure) — the plaintext CA private key remains on the Go heap, unwiped, until garbage collection. An attacker able to read process memory (core dump, swap, memory-scraping) can recover the CA signing key, which would allow minting arbitrary host certificates for the mesh. The API handler already does this correctly: it loads the CAManager, defer caMgr.Wipe(), and wraps it in caManagerResolver. Only the web path is affected. This issue has been patched in version 0.3.8.
Severity
CWE
Assigner
References
3 references
| URL | Tags |
|---|---|
| https://github.com/forgekeep/nebula-mesh/security… | x_refsource_CONFIRM |
| https://github.com/forgekeep/nebula-mesh/commit/1… | x_refsource_MISC |
| https://github.com/forgekeep/nebula-mesh/releases… | x_refsource_MISC |
Impacted products
1 product
| Vendor | Product | Version | |
|---|---|---|---|
| forgekeep | nebula-mesh |
Affected:
< 0.3.8
|
{
"containers": {
"cna": {
"affected": [
{
"product": "nebula-mesh",
"vendor": "forgekeep",
"versions": [
{
"status": "affected",
"version": "\u003c 0.3.8"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "nebula-mesh is a self-hosted control plane for Slack Nebula mesh VPN. Prior to version 0.3.8, the web handler renderMobileBundle passes the real *pki.CAResolver directly into mobilebundle.Build. Inside Build, resolver.LoadByID decrypts the CA\u0027s ed25519 private key into a *pki.CAManager, but Build never calls CAManager.Wipe() on any return path. As a result, when a mobile-bundle request goes through the web UI and Build returns \u2014 especially on error (missing network, invalid prefix, DB error, signing failure) \u2014 the plaintext CA private key remains on the Go heap, unwiped, until garbage collection. An attacker able to read process memory (core dump, swap, memory-scraping) can recover the CA signing key, which would allow minting arbitrary host certificates for the mesh. The API handler already does this correctly: it loads the CAManager, defer caMgr.Wipe(), and wraps it in caManagerResolver. Only the web path is affected. This issue has been patched in version 0.3.8."
}
],
"metrics": [
{
"cvssV4_0": {
"attackComplexity": "LOW",
"attackRequirements": "NONE",
"attackVector": "NETWORK",
"baseScore": 7.1,
"baseSeverity": "HIGH",
"privilegesRequired": "LOW",
"subAvailabilityImpact": "NONE",
"subConfidentialityImpact": "NONE",
"subIntegrityImpact": "NONE",
"userInteraction": "NONE",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N",
"version": "4.0",
"vulnAvailabilityImpact": "NONE",
"vulnConfidentialityImpact": "HIGH",
"vulnIntegrityImpact": "NONE"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-212",
"description": "CWE-212: Improper Removal of Sensitive Information Before Storage or Transfer",
"lang": "en",
"type": "CWE"
}
]
},
{
"descriptions": [
{
"cweId": "CWE-316",
"description": "CWE-316: Cleartext Storage of Sensitive Information in Memory",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-09-04T19:40:51.423Z",
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M"
},
"references": [
{
"name": "https://github.com/forgekeep/nebula-mesh/security/advisories/GHSA-2p2f-px33-4vv5",
"tags": [
"x_refsource_CONFIRM"
],
"url": "https://github.com/forgekeep/nebula-mesh/security/advisories/GHSA-2p2f-px33-4vv5"
},
{
"name": "https://github.com/forgekeep/nebula-mesh/commit/1f1ab9aa8472239763d967e3d50a3cd53a1a79b9",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/forgekeep/nebula-mesh/commit/1f1ab9aa8472239763d967e3d50a3cd53a1a79b9"
},
{
"name": "https://github.com/forgekeep/nebula-mesh/releases/tag/v0.3.8",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/forgekeep/nebula-mesh/releases/tag/v0.3.8"
}
],
"source": {
"advisory": "GHSA-2p2f-px33-4vv5",
"discovery": "UNKNOWN"
},
"title": "nebula-mesh: CA private key not zeroized on web mobile-bundle error paths"
}
},
"cveMetadata": {
"assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"assignerShortName": "GitHub_M",
"cveId": "CVE-2026-53604",
"datePublished": "2026-09-04T19:40:51.423Z",
"dateReserved": "2026-06-09T19:39:52.404Z",
"dateUpdated": "2026-09-04T19:40:51.423Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-53603 (GCVE-0-2026-53603)
Vulnerability from cvelistv5 – Published: 2026-09-04 19:40 – Updated: 2026-09-04 19:40
VLAI
EPSS
VEX
Title
nebula-mesh: Operator session tokens stored in plaintext in the database
Summary
nebula-mesh is a self-hosted control plane for Slack Nebula mesh VPN. Prior to version 0.3.8, Operator session tokens are stored in plaintext in the operator_sessions table (the token column is the PRIMARY KEY). The session token is a 32-byte random hex value sent directly in a cookie and valid for 24 hours. Anyone who can read the database (backup, snapshot, file copy, or SQL-level disclosure) obtains every active session token and can hijack operator sessions directly, with no further authentication. This issue has been patched in version 0.3.8.
Severity
CWE
Assigner
References
3 references
| URL | Tags |
|---|---|
| https://github.com/forgekeep/nebula-mesh/security… | x_refsource_CONFIRM |
| https://github.com/forgekeep/nebula-mesh/commit/7… | x_refsource_MISC |
| https://github.com/forgekeep/nebula-mesh/releases… | x_refsource_MISC |
Impacted products
1 product
| Vendor | Product | Version | |
|---|---|---|---|
| forgekeep | nebula-mesh |
Affected:
< 0.3.8
|
{
"containers": {
"cna": {
"affected": [
{
"product": "nebula-mesh",
"vendor": "forgekeep",
"versions": [
{
"status": "affected",
"version": "\u003c 0.3.8"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "nebula-mesh is a self-hosted control plane for Slack Nebula mesh VPN. Prior to version 0.3.8, Operator session tokens are stored in plaintext in the operator_sessions table (the token column is the PRIMARY KEY). The session token is a 32-byte random hex value sent directly in a cookie and valid for 24 hours. Anyone who can read the database (backup, snapshot, file copy, or SQL-level disclosure) obtains every active session token and can hijack operator sessions directly, with no further authentication. This issue has been patched in version 0.3.8."
}
],
"metrics": [
{
"cvssV4_0": {
"attackComplexity": "LOW",
"attackRequirements": "NONE",
"attackVector": "NETWORK",
"baseScore": 7.1,
"baseSeverity": "HIGH",
"privilegesRequired": "LOW",
"subAvailabilityImpact": "NONE",
"subConfidentialityImpact": "NONE",
"subIntegrityImpact": "NONE",
"userInteraction": "NONE",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N",
"version": "4.0",
"vulnAvailabilityImpact": "NONE",
"vulnConfidentialityImpact": "HIGH",
"vulnIntegrityImpact": "NONE"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-312",
"description": "CWE-312: Cleartext Storage of Sensitive Information",
"lang": "en",
"type": "CWE"
}
]
},
{
"descriptions": [
{
"cweId": "CWE-522",
"description": "CWE-522: Insufficiently Protected Credentials",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-09-04T19:40:31.548Z",
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M"
},
"references": [
{
"name": "https://github.com/forgekeep/nebula-mesh/security/advisories/GHSA-q4vm-pq3q-8wgq",
"tags": [
"x_refsource_CONFIRM"
],
"url": "https://github.com/forgekeep/nebula-mesh/security/advisories/GHSA-q4vm-pq3q-8wgq"
},
{
"name": "https://github.com/forgekeep/nebula-mesh/commit/7cb01bab281ded557f8b6c81dab5f48d4c10182e",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/forgekeep/nebula-mesh/commit/7cb01bab281ded557f8b6c81dab5f48d4c10182e"
},
{
"name": "https://github.com/forgekeep/nebula-mesh/releases/tag/v0.3.8",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/forgekeep/nebula-mesh/releases/tag/v0.3.8"
}
],
"source": {
"advisory": "GHSA-q4vm-pq3q-8wgq",
"discovery": "UNKNOWN"
},
"title": "nebula-mesh: Operator session tokens stored in plaintext in the database"
}
},
"cveMetadata": {
"assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"assignerShortName": "GitHub_M",
"cveId": "CVE-2026-53603",
"datePublished": "2026-09-04T19:40:31.548Z",
"dateReserved": "2026-06-09T19:39:52.404Z",
"dateUpdated": "2026-09-04T19:40:31.548Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-53602 (GCVE-0-2026-53602)
Vulnerability from cvelistv5 – Published: 2026-09-04 19:40 – Updated: 2026-09-04 19:50
VLAI
EPSS
VEX
Title
nebula-mesh - Host revocation is not durable: blocked/offboarded hosts can regain a valid certificate
Summary
nebula-mesh is a self-hosted control plane for Slack Nebula mesh VPN. Prior to version 0.3.7, two related authorization gaps let a host that should no longer be trusted obtain a fresh, valid Nebula certificate, because nebula-mgmt does not re-evaluate revocation/authorization state at certificate issuance time — only at poll time. Firstly, the blocklist is not enforced at sign / re-enroll time. internal/api/enroll.go:128 calls caMgr.Sign(...) without consulting the blocklist. The blocklist is only checked in the poll path (internal/api/updates.go:57, fingerprintInBlocklist). The blocklist is keyed by certificate fingerprint (internal/store/sqlite.go), so a re-enrollment produces a new fingerprint that is not in the blocklist. Secondly, renewal does not re-validate operator / CA status. Auto-renewal at poll time (internal/api/updates.go:285-319, signHostCert) reads host.Name, host.Groups, host.NebulaIPs from the DB and re-signs without checking whether the owning operator is still active or the CA still valid. DisableOperator (internal/store/sqlite_operators.go) revokes sessions and API keys but does not retire the operator's CAs, and pki/signer.go checks only CA cert time-expiry, not operator/CA status. This issue has been patched in version 0.3.7.
Severity
SSVC
Exploitation: none
Automatable: no
Technical Impact: partial
CISA Coordinator · CISA-ADP (v2.0.3)
Decision recorded 2026-09-04 19:49 UTC
Assigner
References
3 references
| URL | Tags |
|---|---|
| https://github.com/forgekeep/nebula-mesh/security… | x_refsource_CONFIRM |
| https://github.com/forgekeep/nebula-mesh/issues/178 | x_refsource_MISC |
| https://github.com/forgekeep/nebula-mesh/releases… | x_refsource_MISC |
Impacted products
1 product
| Vendor | Product | Version | |
|---|---|---|---|
| forgekeep | nebula-mesh |
Affected:
< 0.3.7
|
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-53602",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-09-04T19:49:54.943637Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-09-04T19:50:03.057Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"product": "nebula-mesh",
"vendor": "forgekeep",
"versions": [
{
"status": "affected",
"version": "\u003c 0.3.7"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "nebula-mesh is a self-hosted control plane for Slack Nebula mesh VPN. Prior to version 0.3.7, two related authorization gaps let a host that should no longer be trusted obtain a fresh, valid Nebula certificate, because nebula-mgmt does not re-evaluate revocation/authorization state at certificate issuance time \u2014 only at poll time. Firstly, the blocklist is not enforced at sign / re-enroll time. internal/api/enroll.go:128 calls caMgr.Sign(...) without consulting the blocklist. The blocklist is only checked in the poll path (internal/api/updates.go:57, fingerprintInBlocklist). The blocklist is keyed by certificate fingerprint (internal/store/sqlite.go), so a re-enrollment produces a new fingerprint that is not in the blocklist. Secondly, renewal does not re-validate operator / CA status. Auto-renewal at poll time (internal/api/updates.go:285-319, signHostCert) reads host.Name, host.Groups, host.NebulaIPs from the DB and re-signs without checking whether the owning operator is still active or the CA still valid. DisableOperator (internal/store/sqlite_operators.go) revokes sessions and API keys but does not retire the operator\u0027s CAs, and pki/signer.go checks only CA cert time-expiry, not operator/CA status. This issue has been patched in version 0.3.7."
}
],
"metrics": [
{
"cvssV4_0": {
"attackComplexity": "LOW",
"attackRequirements": "NONE",
"attackVector": "NETWORK",
"baseScore": 6.9,
"baseSeverity": "MEDIUM",
"privilegesRequired": "NONE",
"subAvailabilityImpact": "NONE",
"subConfidentialityImpact": "NONE",
"subIntegrityImpact": "NONE",
"userInteraction": "NONE",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N",
"version": "4.0",
"vulnAvailabilityImpact": "NONE",
"vulnConfidentialityImpact": "NONE",
"vulnIntegrityImpact": "LOW"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-862",
"description": "CWE-862: Missing Authorization",
"lang": "en",
"type": "CWE"
}
]
},
{
"descriptions": [
{
"cweId": "CWE-285",
"description": "CWE-285: Improper Authorization",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-09-04T19:40:16.908Z",
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M"
},
"references": [
{
"name": "https://github.com/forgekeep/nebula-mesh/security/advisories/GHSA-339v-266x-79xr",
"tags": [
"x_refsource_CONFIRM"
],
"url": "https://github.com/forgekeep/nebula-mesh/security/advisories/GHSA-339v-266x-79xr"
},
{
"name": "https://github.com/forgekeep/nebula-mesh/issues/178",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/forgekeep/nebula-mesh/issues/178"
},
{
"name": "https://github.com/forgekeep/nebula-mesh/releases/tag/v0.3.7",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/forgekeep/nebula-mesh/releases/tag/v0.3.7"
}
],
"source": {
"advisory": "GHSA-339v-266x-79xr",
"discovery": "UNKNOWN"
},
"title": "nebula-mesh - Host revocation is not durable: blocked/offboarded hosts can regain a valid certificate"
}
},
"cveMetadata": {
"assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"assignerShortName": "GitHub_M",
"cveId": "CVE-2026-53602",
"datePublished": "2026-09-04T19:40:16.908Z",
"dateReserved": "2026-06-09T19:39:52.404Z",
"dateUpdated": "2026-09-04T19:50:03.057Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}