mise permits untrusted local configuration to override default shell arguments
## Summary Untrusted local .mise.toml [settings] can set the shell interpreter args (unix/windows default_inline / default_file shell_args), yielding arbitrary command execution, because those command-interpreter settings were not added to the global_only denylist the CVE-2026-55448 fix relies on. Code execution from an untrusted repository with no trust prompt for the malicious file, on par with the patched CVE. Confirmed at HEAD 7160170206782fdd3ef287c8302369e32152fb71. ## The defect CVE-2026-55448 and CVE-2026-35533 fixed the fact that a local project [settings] table is harvested by the settings preloader independent of the trust store (an untrusted .mise.toml sets settings without the user ever trusting it). The remediation is a per-field global_only denylist: settings marked global_only are stripped from non-global config. The maintainers marked the command-execution fields they knew about (the three forge credential_command values) but did not mark the four shell-interpreter-args settings, which are also command-execution settings because they choose the interpreter for every command mise spawns. The global_only denylist and the gap. In settings.toml, the three credential_command sinks are global_only (forgejo.credential_command around line 775, github.credential_command around 828, gitlab.credential_command around 990). The four shell-args settings do not carry global_only: - unix_default_file_shell_args (settings.toml around 2920) - unix_default_inline_shell_args (ar
- Products
- mise
- Affected versions
- Not specified
- Fixed versions
- 2026.7.14
- CVEs
- CVE-2026-103929
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 30 Oct 2026, 19:14 UTC · Revision 1
Source evidence
mise permits untrusted local configuration to override default shell arguments
core-osv · Original sourcePublished 15 Oct 2026, 20:16 UTC
## Summary Untrusted local .mise.toml [settings] can set the shell interpreter args (unix/windows default_inline / default_file shell_args), yielding arbitrary command execution, because those command-interpreter settings were not added to the global_only denylist the CVE-2026-55448 fix relies on. Code execution from an untrusted repository with no trust prompt for the malicious file, on par with the patched CVE. Confirmed at HEAD 7160170206782fdd3ef287c8302369e32152fb71. ## The defect CVE-2026-55448 and CVE-2026-35533 fixed the fact that a local project [settings] table is harvested by the settings preloader independent of the trust store (an untrusted .mise.toml sets settings without the user ever trusting it). The remediation is a per-field global_only denylist: settings marked global_only are stripped from non-global config. The maintainers marked the command-execution fields they knew about (the three forge credential_command values) but did not mark the four shell-interpreter-args settings, which are also command-execution settings because they choose the interpreter for every command mise spawns. The global_only denylist and the gap. In settings.toml, the three credential_command sinks are global_only (forgejo.credential_command around line 775, github.credential_command around 828, gitlab.credential_command around 990). The four shell-args settings do not carry global_only: - unix_default_file_shell_args (settings.toml around 2920) - unix_default_inline_shell_args (ar
osv:GHSA-g74g-rg72-j2p3
mise
Fixed versions: 2026.7.14
Complete source record
{
"id": "9aeaf89b23b338b0a6b8a0afd2444d4f319b6c7c03cf9328710dd2047534f861",
"url": "https://osv.dev/vulnerability/GHSA-g74g-rg72-j2p3",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "mise permits untrusted local configuration to override default shell arguments",
"summary": "## Summary Untrusted local .mise.toml [settings] can set the shell interpreter args (unix/windows default_inline / default_file shell_args), yielding arbitrary command execution, because those command-interpreter settings were not added to the global_only denylist the CVE-2026-55448 fix relies on. Code execution from an untrusted repository with no trust prompt for the malicious file, on par with the patched CVE. Confirmed at HEAD 7160170206782fdd3ef287c8302369e32152fb71. ## The defect CVE-2026-55448 and CVE-2026-35533 fixed the fact that a local project [settings] table is harvested by the settings preloader independent of the trust store (an untrusted .mise.toml sets settings without the user ever trusting it). The remediation is a per-field global_only denylist: settings marked global_only are stripped from non-global config. The maintainers marked the command-execution fields they knew about (the three forge credential_command values) but did not mark the four shell-interpreter-args settings, which are also command-execution settings because they choose the interpreter for every command mise spawns. The global_only denylist and the gap. In settings.toml, the three credential_command sinks are global_only (forgejo.credential_command around line 775, github.credential_command around 828, gitlab.credential_command around 990). The four shell-args settings do not carry global_only: - unix_default_file_shell_args (settings.toml around 2920) - unix_default_inline_shell_args (ar",
"evidence": "osv:GHSA-g74g-rg72-j2p3",
"products": [
{
"name": {
"value": "mise",
"evidence": "/affected/0/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "2026.7.14",
"evidence": "/affected/0/ranges"
}
],
"affected_versions": []
}
],
"severity": "high",
"structured": {
"id": "GHSA-g74g-rg72-j2p3",
"aliases": [
"CVE-2026-103929",
"GHSA-g74g-rg72-j2p3"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H"
}
],
"affected": [
{
"ranges": [
{
"type": "SEMVER",
"events": [
{
"introduced": "0"
},
{
"fixed": "2026.7.14"
}
]
}
],
"package": {
"name": "mise",
"purl": "pkg:cargo/mise",
"ecosystem": "crates.io"
},
"database_specific": {
"source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-g74g-rg72-j2p3/GHSA-g74g-rg72-j2p3.json",
"last_known_affected_version_range": "<= 2026.7.13"
}
}
],
"modified": "2026-10-15T20:30:06.548105165Z",
"provider": "osv",
"references": [
"https://github.com/jdx/mise/security/advisories/GHSA-g74g-rg72-j2p3",
"https://nvd.nist.gov/vuln/detail/CVE-2026-103929",
"https://github.com/jdx/mise/pull/11293",
"https://github.com/jdx/mise/commit/c6cd7a9a2ca580918562566126646e5d04317895",
"https://github.com/jdx/mise",
"https://github.com/jdx/mise/releases/tag/v2026.7.14"
],
"provider_metadata": {
"cwe_ids": [
"CWE-284",
"CWE-78"
],
"severity": "HIGH",
"github_reviewed": true,
"nvd_published_at": "2026-10-14T16:17:30Z",
"github_reviewed_at": "2026-10-15T20:16:09Z"
}
},
"related_cves": [
{
"value": "CVE-2026-103929",
"evidence": "/aliases"
}
],
"security_relevant": true,
"severity_evidence": "/database_specific/severity"
},
"source_id": "core-osv",
"document_id": 336051,
"published_at": "2026-10-15T20:16:09+00:00"
}