GitHub Advisoryadvisory · NuGet
GHSA-wrvw-254r-wpmv CliInvoke.Specializations has command injection in PowerShell and Cmd shell wrappers
HIGH
Official page ↗
- Aliases
- CVE-2026-100368
- Ecosystem
- NuGet
- Packages
- CliInvoke.Specializations, AlastairLundy.CliInvoke.Specializations
- Severity
- High
- CVSS vector
- CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
- Weaknesses
- CWE-78
- Reviewed
- 2026-09-25
Affected packages
• NuGet CliInvoke.Specializations: >= 2.2.0, < 2.8.5 → fixed in 2.8.5
• NuGet CliInvoke.Specializations: >= 2.9.0, < 2.9.4 → fixed in 2.9.4
• NuGet CliInvoke.Specializations: >= 2.10.0, < 2.10.5 → fixed in 2.10.5
• NuGet CliInvoke.Specializations: >= 3.0.0-alpha.1, < 3.0.0-beta.1 → fixed in 3.0.0-beta.1
• NuGet CliInvoke.Specializations: >= 3.0.0-alpha.8, < 3.0.0-beta.1 → fixed in 3.0.0-beta.1
• NuGet AlastairLundy.CliInvoke.Specializations: >= 1.0.0-rc.1, < 2.0.2 → fixed in 2.0.2
Description
Impact
An OS command injection vulnerability exists in the PowerShell and Cmd shell wrappers provided by the `CliInvoke.Specializations` package (the `PowershellProcessInvoker`/`CmdProcessInvoker` invokers, and the `UsePowerShell`/`UseCmd` middleware in v3 pre-release versions).
The wrappers re-run a caller-supplied target and arguments inside a shell command (`pwsh -Command ...` / `cmd /c ...`). In affected versions the wrapped command was delivered to the operating system as a single `ProcessStartInfo.Arguments` string. The OS command-line parser re-tokenizes that string before the shell parses it, so a double quote (`"`) in the target or arguments breaks OS-level quoting and lets the wrapped shell reassemble a second, unintended command.
An attacker could exploit this to execute arbitrary commands with the privileges of the host process.
Patches
The Specializations Packages now deliver the command via `ProcessStartInfo.ArgumentList` (natively where supported, and polyfilled in older TFMs), so that the operating system passes argv verbatim and only the shell parses the command once.
Upgrade to:
• 2.8.5 (2.8.x line)
• 2.9.4 (2.9.x line)
• 2.10.5 (2.10.x line)
• 3.0.0-beta.1 (3.x pre-release line)
Workarounds
No complete workaround is available. Until upgraded:
• Reject or strip `"` from any target path or argument passed to the PowerShell/Cmd wrappers. On 2.2.0 – 2.9.2 and 3.0.0-alpha.1 – alpha.4, also reject shell metacharacters (`;`, `|`, `&`, `$`, backtick, parentheses).
• Alternatively, bypass the wrappers for untrusted input and invoke the target process directly so that no second shell parse of the data occurs.
Related
Alias · CVE (1)
- CVE-2026-100368 CliInvoke is a .NET library for invoking command-line programs, and its `CliInvoke.Specializations` packages provide specialized wrappers… vulnerability
Weakness · CWE (1)
- CWE-78 Improper Neutralization of Special Elements used in an OS Command weakness
References
- https://github.com/alastairlundy/CliInvoke/security/advisories/GHSA-wrvw-254r-wpmv web
- https://nvd.nist.gov/vuln/detail/CVE-2026-100368 advisory
- https://github.com/alastairlundy/CliInvoke/commit/1e98582f02eb43e345e5b97b8dd6ff9443806685 web
- https://github.com/alastairlundy/CliInvoke/commit/2077e5239850e83dc9cc67ae6036dcd4e68a1876 web
- https://github.com/alastairlundy/CliInvoke package
- https://github.com/alastairlundy/CliInvoke/releases/tag/2.10.5 web
- https://github.com/alastairlundy/CliInvoke/releases/tag/3.0.0-beta.1 web