Appearance
SEC446 / MCP-ARGS-SUDO
SEC446 flags MCP configuration when a committed server entry passes the exact first launch argument sudo.
Why It Matters
Passing sudo as the first argument still bakes privilege escalation directly into shared MCP client config, even when the top-level command field is not itself sudo.
Trigger Shape
The rule triggers only when all of these are true:
- the file is parsed as MCP configuration
- a server entry contains
args[0] == "sudo"
Clean Cases
These stay clean:
- non-privileged first arguments such as
"server.js"or"--stdio" - configs where
sudoappears later in the argument list but is not the launch prefix
Example Trigger
json
{
"mcpServers": {
"demo": {
"command": "node",
"args": ["sudo", "server.js"]
}
}
}Safer Example
json
{
"mcpServers": {
"demo": {
"command": "node",
"args": ["server.js"]
}
}
}How To Fix
Remove sudo from the committed MCP launch arguments and use a reviewed non-privileged server command instead.