Skip to content

Commit 163501f

Browse files
1 parent 5a8df6b commit 163501f

5 files changed

Lines changed: 326 additions & 5 deletions

File tree

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
{
2+
"schema_version": "1.4.0",
3+
"id": "GHSA-4c5c-2vc3-x5w2",
4+
"modified": "2026-06-05T15:24:35Z",
5+
"published": "2026-06-05T15:24:35Z",
6+
"aliases": [
7+
"CVE-2024-27928"
8+
],
9+
"summary": "Vantage6: 2FA can be circumvented with hacked email access",
10+
"details": "### Impact\nIf an attacker hacks into a vantage6 user's email account, they can 1) reset the password via email and then 2) reset the 2FA token via email. This way they reduce 2FA to 1FA (email access). \n\nNote that most email providers require 2FA to access email, so this issue is not very likely to cause issues.\n\n### Proposed solution\n\nMany web apps do not provide functionality to reset 2FA token (probably for this reason), but provide recovery codes as well. It would be better to provide these recovery codes to the user 1 time and then delete the option to reset it.\n\nAn alternative may be to only let server administrators reset 2FA token. However, this has as disadvantage that a hacked email account may send messages to the server admin to reset them, which they may fall for.\n\n### Patches\nNo\n\n### Workarounds\nNo",
11+
"severity": [
12+
{
13+
"type": "CVSS_V4",
14+
"score": "CVSS:4.0/AV:N/AC:L/AT:P/PR:H/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N"
15+
}
16+
],
17+
"affected": [
18+
{
19+
"package": {
20+
"ecosystem": "PyPI",
21+
"name": "vantage6"
22+
},
23+
"ranges": [
24+
{
25+
"type": "ECOSYSTEM",
26+
"events": [
27+
{
28+
"introduced": "0"
29+
},
30+
{
31+
"fixed": "5.0.0"
32+
}
33+
]
34+
}
35+
]
36+
}
37+
],
38+
"references": [
39+
{
40+
"type": "WEB",
41+
"url": "https://github.com/vantage6/vantage6/security/advisories/GHSA-4c5c-2vc3-x5w2"
42+
},
43+
{
44+
"type": "WEB",
45+
"url": "https://github.com/vantage6/vantage6/issues/1932"
46+
},
47+
{
48+
"type": "PACKAGE",
49+
"url": "https://github.com/vantage6/vantage6"
50+
},
51+
{
52+
"type": "WEB",
53+
"url": "https://github.com/vantage6/vantage6/blob/main/docs/release_notes.rst#500"
54+
}
55+
],
56+
"database_specific": {
57+
"cwe_ids": [
58+
"CWE-308"
59+
],
60+
"severity": "MODERATE",
61+
"github_reviewed": true,
62+
"github_reviewed_at": "2026-06-05T15:24:35Z",
63+
"nvd_published_at": null
64+
}
65+
}

advisories/github-reviewed/2026/06/GHSA-5549-c5q7-fj65/GHSA-5549-c5q7-fj65.json

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"schema_version": "1.4.0",
33
"id": "GHSA-5549-c5q7-fj65",
4-
"modified": "2026-06-05T15:21:59Z",
4+
"modified": "2026-06-05T15:24:51Z",
55
"published": "2026-06-05T15:21:59Z",
66
"aliases": [
77
"CVE-2024-24769"
@@ -32,10 +32,7 @@
3232
}
3333
]
3434
}
35-
],
36-
"database_specific": {
37-
"last_known_affected_version_range": "<= 4.2.2"
38-
}
35+
]
3936
}
4037
],
4138
"references": [
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
{
2+
"schema_version": "1.4.0",
3+
"id": "GHSA-5x9f-6vg5-qg4m",
4+
"modified": "2026-06-05T15:25:28Z",
5+
"published": "2026-06-05T15:25:28Z",
6+
"aliases": [
7+
"CVE-2026-45720"
8+
],
9+
"summary": "Omni has a TOCTOU race condition that allows multiple concurrent uses of a single-use SAML session token",
10+
"details": "## Summary\n\n`SAML.getSession` (`internal/pkg/auth/interceptor/saml.go`) checks the `Used` flag on a `SAMLAssertion` resource and then marks it used in two separate state operations. Because the check and the update are not atomic, concurrent requests carrying the same `saml-session` token can both observe `Used == false`, both pass validation, and both return a successful authentication context. An attacker who obtains a valid `saml-session` token can exploit this window to authenticate as the token's owner multiple times, defeating the one-time-use guarantee.\n\n## Severity\n\n- **Attack Vector:** Local: the attacker needs to either be able to intercept the local, unencrypted traffic or needs access to user's browser.\n- **Attack Complexity:** High: the attacker must first obtain a valid `saml-session` token belonging to the victim (requires a separate interception step; the token is ephemeral and single-use by design).\n- **Privileges Required:** None: no Omni account is required to carry out the race once the session token is in hand.\n- **User Interaction:** Required: the victim must initiate a SAML authentication flow to produce the session token that the attacker intercepts.\n- **Scope:** Unchanged: the impact stays within Omni's authorization boundary.\n- **Confidentiality Impact:** High: successful exploitation authenticates the attacker as the victim's email identity, granting read access to any resource accessible to that identity.\n- **Integrity Impact:** High: the attacker can confirm one or more public keys under the victim's identity (via `ConfirmPublicKey`), establishing persistent access credentials tied to the victim's account.\n- **Availability Impact:** High: if the attacker can successfully perform the attack and if the victim is a privileged Omni user, e.g., an Omni Operator or Admin, they can take Omni down.\n\n## Impact\n\n- **Session replay**: A stolen `saml-session` token can be used more than once, defeating its single-use guarantee.\n- **Multiple public key confirmations**: An attacker who steals the session can confirm N attacker-controlled public keys under the victim's identity in a single stolen session window, creating N persistent long-lived API credentials tied to the victim's account.\n- **Authentication as victim**: Any gRPC endpoint gated by the SAML interceptor can be reached as the victim's email identity during the race window.\n- **Audit log pollution**: Each raced call generates an audit entry attributed to the victim's email, obscuring the attacker's actions.\n\n## Credit\n\nThis vulnerability was discovered and reported by [bugbunny.ai](https://bugbunny.ai).",
11+
"severity": [
12+
{
13+
"type": "CVSS_V3",
14+
"score": "CVSS:3.1/AV:L/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H"
15+
}
16+
],
17+
"affected": [
18+
{
19+
"package": {
20+
"ecosystem": "Go",
21+
"name": "github.com/siderolabs/omni"
22+
},
23+
"ranges": [
24+
{
25+
"type": "ECOSYSTEM",
26+
"events": [
27+
{
28+
"introduced": "0"
29+
},
30+
{
31+
"fixed": "1.6.6"
32+
}
33+
]
34+
}
35+
]
36+
},
37+
{
38+
"package": {
39+
"ecosystem": "Go",
40+
"name": "github.com/siderolabs/omni"
41+
},
42+
"ranges": [
43+
{
44+
"type": "ECOSYSTEM",
45+
"events": [
46+
{
47+
"introduced": "1.7.0"
48+
},
49+
{
50+
"fixed": "1.7.3"
51+
}
52+
]
53+
}
54+
]
55+
}
56+
],
57+
"references": [
58+
{
59+
"type": "WEB",
60+
"url": "https://github.com/siderolabs/omni/security/advisories/GHSA-5x9f-6vg5-qg4m"
61+
},
62+
{
63+
"type": "PACKAGE",
64+
"url": "https://github.com/siderolabs/omni"
65+
},
66+
{
67+
"type": "WEB",
68+
"url": "https://github.com/siderolabs/omni/releases/tag/v1.6.6"
69+
},
70+
{
71+
"type": "WEB",
72+
"url": "https://github.com/siderolabs/omni/releases/tag/v1.7.3"
73+
}
74+
],
75+
"database_specific": {
76+
"cwe_ids": [
77+
"CWE-294",
78+
"CWE-367"
79+
],
80+
"severity": "HIGH",
81+
"github_reviewed": true,
82+
"github_reviewed_at": "2026-06-05T15:25:28Z",
83+
"nvd_published_at": null
84+
}
85+
}
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
{
2+
"schema_version": "1.4.0",
3+
"id": "GHSA-c66c-vq6w-fvh5",
4+
"modified": "2026-06-05T15:25:58Z",
5+
"published": "2026-06-05T15:25:58Z",
6+
"aliases": [
7+
"CVE-2026-45723"
8+
],
9+
"summary": "Omni: Operator can traverse image-factory API paths via unsanitized `talos_version` in CreateSchematic",
10+
"details": "## Summary\n\n`managementServer.CreateSchematic` (`internal/backend/grpc/schematics.go`) passes the caller-controlled `TalosVersion` field directly to `imageFactoryClient.OverlaysVersions`, which embeds it verbatim into a `fmt.Sprintf(\"/version/%s/overlays/official\", talosVersion)` path template. `url.URL.JoinPath` resolves any `../` sequences in that path, allowing an authenticated Operator to rewrite the URL path and force Omni to issue HTTP GET requests to unintended paths on the configured image-factory server. Error body content from those unintended endpoints is returned to the caller.\n\n## Severity\n\n- **Attack Vector:** Network: exploited via the gRPC `CreateSchematic` API endpoint.\n- **Attack Complexity:** Low: once the attacker holds an Operator credential and has identified a media ID with an overlay, exploitation is a single API call.\n- **Privileges Required:** High: `role.Operator` is required, which has administrative capabilities on Omni.\n- **User Interaction:** None.\n- **Scope:** Unchanged: the traversal is constrained to the configured image-factory host; the attacker cannot redirect Omni to an arbitrary external server.\n- **Confidentiality Impact:** Low: error body content from unintended image-factory endpoints is reflected back to the operator, potentially leaking server-internal information.\n- **Integrity Impact:** None: only HTTP GET requests are issued; no write operations are performed.\n- **Availability Impact:** None.\n\n## Impact\n\n- **Same-host path traversal**: An authenticated Operator can force Omni to issue GET requests to arbitrary URL paths on the configured image-factory server, bypassing the intended versioned overlay API structure.\n- **Error-body disclosure**: HTTP error responses from unintended image-factory endpoints are reflected back to the operator, potentially leaking server-internal diagnostics or sensitive path content.\n- **Internal network probing**: In deployments using a private image-factory instance on an internal network, the attacker can probe endpoint existence and partial responses through error-text differences.\n- **Depth control**: By varying the number of `../` prefixes in `talosVersion`, the attacker can reach any path hierarchy on the image-factory host.\n\n## Credit\nThis vulnerability was discovered and reported by [bugbunny.ai](https://bugbunny.ai).",
11+
"severity": [
12+
{
13+
"type": "CVSS_V3",
14+
"score": "CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:N/A:N"
15+
}
16+
],
17+
"affected": [
18+
{
19+
"package": {
20+
"ecosystem": "Go",
21+
"name": "github.com/siderolabs/omni"
22+
},
23+
"ranges": [
24+
{
25+
"type": "ECOSYSTEM",
26+
"events": [
27+
{
28+
"introduced": "0"
29+
},
30+
{
31+
"fixed": "1.6.6"
32+
}
33+
]
34+
}
35+
]
36+
},
37+
{
38+
"package": {
39+
"ecosystem": "Go",
40+
"name": "github.com/siderolabs/omni"
41+
},
42+
"ranges": [
43+
{
44+
"type": "ECOSYSTEM",
45+
"events": [
46+
{
47+
"introduced": "1.7.0"
48+
},
49+
{
50+
"fixed": "1.7.3"
51+
}
52+
]
53+
}
54+
]
55+
}
56+
],
57+
"references": [
58+
{
59+
"type": "WEB",
60+
"url": "https://github.com/siderolabs/omni/security/advisories/GHSA-c66c-vq6w-fvh5"
61+
},
62+
{
63+
"type": "PACKAGE",
64+
"url": "https://github.com/siderolabs/omni"
65+
},
66+
{
67+
"type": "WEB",
68+
"url": "https://github.com/siderolabs/omni/releases/tag/v1.6.6"
69+
},
70+
{
71+
"type": "WEB",
72+
"url": "https://github.com/siderolabs/omni/releases/tag/v1.7.3"
73+
}
74+
],
75+
"database_specific": {
76+
"cwe_ids": [
77+
"CWE-20",
78+
"CWE-209",
79+
"CWE-22",
80+
"CWE-441",
81+
"CWE-918"
82+
],
83+
"severity": "LOW",
84+
"github_reviewed": true,
85+
"github_reviewed_at": "2026-06-05T15:25:58Z",
86+
"nvd_published_at": null
87+
}
88+
}
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
{
2+
"schema_version": "1.4.0",
3+
"id": "GHSA-wv8c-6mx2-xf4j",
4+
"modified": "2026-06-05T15:26:24Z",
5+
"published": "2026-06-05T15:26:24Z",
6+
"aliases": [
7+
"CVE-2026-45726"
8+
],
9+
"summary": "Omni: Reader-level users can retrieve imported cluster CA keys via ResourceService",
10+
"details": "## Summary\n\nOmni supports importing standalone Talos clusters.\n\nDuring this process, an ImportedClusterSecrets resource is created, which contains the full CA secrets bundle for the cluster being imported.\n\nIf these secrets are not rotated by the importing actor, an authenticated Omni user with Reader access can read this resource and gain full access to the Talos, Kubernetes and etcd APIs of the cluster.\n\n## Severity\n\n- **Attack Vector:** Adjacent: the attacker needs to be in the same network to be able to access Talos/Kubernetes APIs with the compromised keys.\n- **Attack Complexity:** High: the attacker needs a deep understanding of Omni's internals. The resource is only created for imported clusters, and is normally not represented to users via any high-level API.\n- **Privileges Required:** Low: the role `Reader` is sufficient for the attacker to be able to read an imported cluster's secrets.\n- **User Interaction:** Required: another user must have imported a cluster to Omni for this vulnerability to exist.\n- **Scope:** Changed: the leaked CA private keys let an attacker directly get full control on Kubernetes or Talos, beyond the limitations enforced by Omni.\n- **Confidentiality Impact:** High: full cluster CA private keys (Kubernetes, Talos, etcd, service account) are exposed.\n- **Integrity Impact:** High: with the CA keys the attacker has full control on Kubernetes and Talos of the compromised (imported) cluster, and modify the workloads on it.\n- **Availability Impact:** High: with the CA keys the attacker has full control on Kubernetes and Talos of the compromised (imported) cluster, and modify the workloads on it.\n\n## Impact\n\n- Any Reader-level account can exfiltrate the complete CA private key hierarchy (Kubernetes CA, etcd CA, service account key) of the imported clusters whose secrets are not yet rotated (\"tainted\" imported clusters).\n- With the Kubernetes CA private key, an attacker can sign certificates for any Kubernetes user or group, including `system:masters`, achieving cluster-admin access to the imported cluster entirely outside Omni's control plane.\n- Impact scope extends beyond Omni to every Kubernetes workload, credential, and secret stored in the affected imported cluster.\n\n## Credit\nThis vulnerability was discovered and reported by [bugbunny.ai](https://bugbunny.ai).",
11+
"severity": [
12+
{
13+
"type": "CVSS_V3",
14+
"score": "CVSS:3.1/AV:A/AC:H/PR:L/UI:R/S:C/C:H/I:H/A:H"
15+
}
16+
],
17+
"affected": [
18+
{
19+
"package": {
20+
"ecosystem": "Go",
21+
"name": "github.com/siderolabs/omni"
22+
},
23+
"ranges": [
24+
{
25+
"type": "ECOSYSTEM",
26+
"events": [
27+
{
28+
"introduced": "1.3.0"
29+
},
30+
{
31+
"fixed": "1.6.6"
32+
}
33+
]
34+
}
35+
]
36+
},
37+
{
38+
"package": {
39+
"ecosystem": "Go",
40+
"name": "github.com/siderolabs/omni"
41+
},
42+
"ranges": [
43+
{
44+
"type": "ECOSYSTEM",
45+
"events": [
46+
{
47+
"introduced": "1.7.0"
48+
},
49+
{
50+
"fixed": "1.7.3"
51+
}
52+
]
53+
}
54+
]
55+
}
56+
],
57+
"references": [
58+
{
59+
"type": "WEB",
60+
"url": "https://github.com/siderolabs/omni/security/advisories/GHSA-wv8c-6mx2-xf4j"
61+
},
62+
{
63+
"type": "PACKAGE",
64+
"url": "https://github.com/siderolabs/omni"
65+
},
66+
{
67+
"type": "WEB",
68+
"url": "https://github.com/siderolabs/omni/releases/tag/v1.6.6"
69+
},
70+
{
71+
"type": "WEB",
72+
"url": "https://github.com/siderolabs/omni/releases/tag/v1.7.3"
73+
}
74+
],
75+
"database_specific": {
76+
"cwe_ids": [
77+
"CWE-200",
78+
"CWE-522",
79+
"CWE-732"
80+
],
81+
"severity": "HIGH",
82+
"github_reviewed": true,
83+
"github_reviewed_at": "2026-06-05T15:26:24Z",
84+
"nvd_published_at": null
85+
}
86+
}

0 commit comments

Comments
 (0)