<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://cve.radiocsirt.org</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Thu, 08 Oct 2026 08:09:37 +0000</lastBuildDate>
    <item>
      <title>EUVD-2026-342072</title>
      <link>https://cve.radiocsirt.org/vuln/euvd-2026-342072</link>
      <description>EUVD-2026-342072</description>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/euvd-2026-342072</guid>
    </item>
    <item>
      <title>fkie_cve-2026-47724</title>
      <link>https://cve.radiocsirt.org/vuln/fkie_cve-2026-47724</link>
      <description>&lt;p&gt;nebula-mesh is a self-hosted control plane for Slack Nebula mesh virtual private network. Prior to version 0.3.4, the `/api/v1/*` route surface trusts the bearer token alone for authorisation on most endpoints. The codebase itself admits this at `internal/api/hosts.go:384`: &amp;#34;API trusts the bearer token for authorisation; per-CA ownership is enforced only in the Web layer.&amp;#34; The Web UI gates state-changing routes through `loadAccessibleCA` (`internal/web/cas.go`); CA-management endpoints in `internal/api/cas.go` ALSO have proper `canAccessCA` gates. The gap is on the host, network, firewall, mobile-bundle, and most operator endpoints. Combined with the per-operator CA model from ADR 0002, this gives any non-admin operator API key broad cross-tenant access — instant privilege escalation in the worst case. Version 0.3.4 fixes the issue.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;nebula-mesh is a self-hosted control plane for Slack Nebula mesh virtual private network. Prior to version 0.3.4, the `/api/v1/*` route surface trusts the bearer token alone for authorisation on most endpoints. The codebase itself admits this at `internal/api/hosts.go:384`: &amp;#34;API trusts the bearer token for authorisation; per-CA ownership is enforced only in the Web layer.&amp;#34; The Web UI gates state-changing routes through `loadAccessibleCA` (`internal/web/cas.go`); CA-management endpoints in `internal/api/cas.go` ALSO have proper `canAccessCA` gates. The gap is on the host, network, firewall, mobile-bundle, and most operator endpoints. Combined with the per-operator CA model from ADR 0002, this gives any non-admin operator API key broad cross-tenant access — instant privilege escalation in the worst case. Version 0.3.4 fixes the issue.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/fkie_cve-2026-47724</guid>
    </item>
    <item>
      <title>GHSA-598g-h2vc-h5vg — nebula-mesh: API endpoints lack ownership checks, enabling cross-operator privilege escalation</title>
      <link>https://cve.radiocsirt.org/vuln/ghsa-598g-h2vc-h5vg</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Go: github.com/juev/nebula-mesh&lt;/p&gt;
&lt;p&gt;The `/api/v1/*` route surface trusts the bearer token alone for authorisation on most endpoints. The codebase itself admits this at `internal/api/hosts.go:384`: *&amp;#34;API trusts the bearer token for authorisation; per-CA ownership is enforced only in the Web layer.&amp;#34;*&lt;/p&gt;
&lt;p&gt;The Web UI gates state-changing routes through `loadAccessibleCA` (`internal/web/cas.go`); CA-management endpoints in `internal/api/cas.go` ALSO have proper `canAccessCA` gates. **The gap is on the host, network, firewall, mobile-bundle, and most operator endpoints.** Combined with the per-operator CA model from ADR 0002, this gives any non-admin operator API key broad cross-tenant access — instant privilege escalation in the worst case.&lt;/p&gt;
&lt;p&gt;## Affected
All released versions prior to v0.3.4.&lt;/p&gt;
&lt;p&gt;## Exploit chain&lt;/p&gt;
&lt;p&gt;### A) Mint admin API key from any operator key (instant privilege escalation)
`internal/api/operators.go:118` — `handleCreateOperatorAPIKey` does no admin check and no actor/target-operator ownership check. Any operator key can call it for any operator (including admins) and receive a fresh bearer.&lt;/p&gt;
&lt;p&gt;```
curl -X POST -H &amp;#34;Authorization: Bearer &amp;lt;low-priv-key&amp;gt;&amp;#34; \
  https://server/api/v1/operators/&amp;lt;admin-id&amp;gt;/api-keys \
  -H &amp;#39;Content-Type: application/json&amp;#39; -d &amp;#39;{&amp;#34;name&amp;#34;:&amp;#34;oops&amp;#34;}&amp;#39;
# Returns: {&amp;#34;key&amp;#34;:&amp;#34;&amp;lt;32-byte admin bearer&amp;gt;&amp;#34;,&amp;#34;entry&amp;#34;:{...}}
```&lt;/p&gt;
&lt;p&gt;Reuse the returned key for subsequent requests → full admin.&lt;/p&gt;
&lt;p&gt;### B) Cross-operator host takeover via reenroll
`internal/api/hosts.go:321,330` → `mintEnrollmentTokenForHost`. Looks…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Go: github.com/juev/nebula-mesh&lt;/p&gt;
&lt;p&gt;The `/api/v1/*` route surface trusts the bearer token alone for authorisation on most endpoints. The codebase itself admits this at `internal/api/hosts.go:384`: *&amp;#34;API trusts the bearer token for authorisation; per-CA ownership is enforced only in the Web layer.&amp;#34;*&lt;/p&gt;
&lt;p&gt;The Web UI gates state-changing routes through `loadAccessibleCA` (`internal/web/cas.go`); CA-management endpoints in `internal/api/cas.go` ALSO have proper `canAccessCA` gates. **The gap is on the host, network, firewall, mobile-bundle, and most operator endpoints.** Combined with the per-operator CA model from ADR 0002, this gives any non-admin operator API key broad cross-tenant access — instant privilege escalation in the worst case.&lt;/p&gt;
&lt;p&gt;## Affected
All released versions prior to v0.3.4.&lt;/p&gt;
&lt;p&gt;## Exploit chain&lt;/p&gt;
&lt;p&gt;### A) Mint admin API key from any operator key (instant privilege escalation)
`internal/api/operators.go:118` — `handleCreateOperatorAPIKey` does no admin check and no actor/target-operator ownership check. Any operator key can call it for any operator (including admins) and receive a fresh bearer.&lt;/p&gt;
&lt;p&gt;```
curl -X POST -H &amp;#34;Authorization: Bearer &amp;lt;low-priv-key&amp;gt;&amp;#34; \
  https://server/api/v1/operators/&amp;lt;admin-id&amp;gt;/api-keys \
  -H &amp;#39;Content-Type: application/json&amp;#39; -d &amp;#39;{&amp;#34;name&amp;#34;:&amp;#34;oops&amp;#34;}&amp;#39;
# Returns: {&amp;#34;key&amp;#34;:&amp;#34;&amp;lt;32-byte admin bearer&amp;gt;&amp;#34;,&amp;#34;entry&amp;#34;:{...}}
```&lt;/p&gt;
&lt;p&gt;Reuse the returned key for subsequent requests → full admin.&lt;/p&gt;
&lt;p&gt;### B) Cross-operator host takeover via reenroll
`internal/api/hosts.go:321,330` → `mintEnrollmentTokenForHost`. Looks…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/ghsa-598g-h2vc-h5vg</guid>
    </item>
  </channel>
</rss>
