Skip to content

Commit df02412

Browse files
1 parent 20f2b07 commit df02412

1 file changed

Lines changed: 92 additions & 0 deletions

File tree

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
{
2+
"schema_version": "1.4.0",
3+
"id": "GHSA-x6jc-phwx-hp32",
4+
"modified": "2026-01-22T20:21:17Z",
5+
"published": "2026-01-22T20:21:17Z",
6+
"aliases": [
7+
"CVE-2026-23953"
8+
],
9+
"summary": "Incus container environment configuration newline injection",
10+
"details": "### Summary\nA user with the ability to launch a container with a custom YAML configuration (e.g a member of the ‘incus’ group) can create an environment variable containing newlines, which can be used to add additional configuration items in the container’s `lxc.conf` due to the newline injection. This can allow adding arbitrary lifecycle hooks, ultimately resulting in arbitrary command execution on the host.\n\n### Details\nWhen passing environment variables in the config block of a new container, values are not checked for the presence of newlines [1], which can result in newline injection inside the generated container `lxc.conf`. This can be used to set arbitrary additional configuration items, such as `lxc.hook.pre-start`. By exploiting this, a user with the ability to launch a container with an arbitrary config can achieve arbitrary command execution as root on the host.\n\nExploiting this issue on IncusOS requires a slight modification of the payload to change to a different writable directory for the validation step (e.g /tmp). This can be confirmed with a second container with /tmp mounted from the host (A privileged action for validation only).\n\n[1] https://github.com/lxc/incus/blob/HEAD/internal/server/instance/drivers/driver_lxc.go#L1081\n\n### PoC\nA proof-of-concept script exploiting this vulnerability can be found attached, named environment_newline_injection.sh, showing arbitrary command execution, which will write a file to the root filesystem (`/newline_injection_command_exec_poc`)\n\nManual Reproduction steps:\n1. Launch a new container with a configuration file containing a multiline YAML string as an environment variable value, such as in the listing below.\n2. Observe that the lxc.conf (`/run/incus/user-1000_poc/lxc.conf` in my case) contains an additional `lxc.hook.pre-start` item\n3. Observe the creation of the file in the host root directory, with contents proving command execution as root.\n\n```\nincus launch images:alpine/edge --ephemeral poc << EOF\nconfig:\n environment.FOO: |-\n abc\n lxc.hook.pre-start = /bin/sh -c \"id > /newline_injection_command_exec_poc\"\nEOF\n```\n\n### Impact\nA user with the ability to launch a container with a custom YAML configuration (e.g a member of the ‘incus’ group) can achieve arbitrary command execution on the host.\n\n### Attachments\n[environment_newline_injection.sh](https://github.com/user-attachments/files/24473682/environment_newline_injection.sh)\n[environment_newline_injection.patch](https://github.com/user-attachments/files/24473685/environment_newline_injection.patch)",
11+
"severity": [
12+
{
13+
"type": "CVSS_V3",
14+
"score": "CVSS:3.1/AV:A/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:N"
15+
}
16+
],
17+
"affected": [
18+
{
19+
"package": {
20+
"ecosystem": "Go",
21+
"name": "github.com/lxc/incus/v6"
22+
},
23+
"ranges": [
24+
{
25+
"type": "ECOSYSTEM",
26+
"events": [
27+
{
28+
"introduced": "6.1.0"
29+
},
30+
{
31+
"last_affected": "6.20.0"
32+
}
33+
]
34+
}
35+
]
36+
},
37+
{
38+
"package": {
39+
"ecosystem": "Go",
40+
"name": "github.com/lxc/incus/v6"
41+
},
42+
"ranges": [
43+
{
44+
"type": "ECOSYSTEM",
45+
"events": [
46+
{
47+
"introduced": "0"
48+
},
49+
{
50+
"last_affected": "6.0.5"
51+
}
52+
]
53+
}
54+
]
55+
}
56+
],
57+
"references": [
58+
{
59+
"type": "WEB",
60+
"url": "https://github.com/lxc/incus/security/advisories/GHSA-x6jc-phwx-hp32"
61+
},
62+
{
63+
"type": "WEB",
64+
"url": "https://github.com/lxc/incus/commit/0e0cf45ecdcc902a6f319f11971ed27df81bd29f"
65+
},
66+
{
67+
"type": "PACKAGE",
68+
"url": "https://github.com/lxc/incus"
69+
},
70+
{
71+
"type": "WEB",
72+
"url": "https://github.com/lxc/incus/blob/HEAD/internal/server/instance/drivers/driver_lxc.go#L1081"
73+
},
74+
{
75+
"type": "WEB",
76+
"url": "https://github.com/user-attachments/files/24473682/environment_newline_injection.sh"
77+
},
78+
{
79+
"type": "WEB",
80+
"url": "https://github.com/user-attachments/files/24473685/environment_newline_injection.patch"
81+
}
82+
],
83+
"database_specific": {
84+
"cwe_ids": [
85+
"CWE-93"
86+
],
87+
"severity": "HIGH",
88+
"github_reviewed": true,
89+
"github_reviewed_at": "2026-01-22T20:21:17Z",
90+
"nvd_published_at": null
91+
}
92+
}

0 commit comments

Comments
 (0)