Back to skill

Security audit

Network Scanner

Security checks across malware telemetry and agentic risk

Overview

This appears to be a legitimate network scanner, but its script builds shell commands from user and config input, creating a real local command-execution risk.

Install only if you trust the publisher and will use it on networks you own or are authorized to scan. Avoid untrusted CIDR, DNS, network-name, or config values, prefer --no-sudo unless MAC discovery is required, and treat the current version as needing review until shell=True command construction is replaced with validated argument-list subprocess calls.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Output HandlingUnvalidated Output Injection, Cross-Context Output, Unbounded Output
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (8)

subprocess module call

Medium
Category
Dangerous Code Execution
Content
def run_cmd(cmd, timeout=60):
    """Run a shell command and return output."""
    try:
        result = subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=timeout)
        return result.stdout.strip()
    except subprocess.TimeoutExpired:
        return ""
Confidence
99% confidence
Finding
The helper executes arbitrary shell strings with shell=True, and multiple callers interpolate user- or config-controlled values directly into those strings, including network CIDR, DNS server, and detected interface names. This creates direct command injection risk, and because scans may be prefixed with sudo, successful injection could execute attacker-controlled commands with elevated privileges.

Lp3

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding
The skill invokes shell-capable tooling (`nmap`, `dig`) and appears to support writing configuration data (`--init-config` to `~/.config/network-scanner/networks.json`), but it declares no permissions or capability boundaries. That mismatch is a real security issue because users or hosting platforms may trust the manifest to represent side effects, while the skill can still execute network scans and modify local files.

Intent-Code Divergence

Medium
Confidence
93% confidence
Finding
Configured networks are marked trusted and skip route verification entirely, even though the safety comments imply route validation is what prevents accidental scans of public or externally routed networks. If an attacker or careless user can modify the config, they can whitelist arbitrary targets and bypass the intended safety boundary, enabling unauthorized or abusive scanning.

Unvalidated Output Injection

High
Category
Output Handling
Content
def run_cmd(cmd, timeout=60):
    """Run a shell command and return output."""
    try:
        result = subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=timeout)
        return result.stdout.strip()
    except subprocess.TimeoutExpired:
        return ""
Confidence
99% confidence
Finding
This is a true output/command injection issue because unsanitized values are embedded into shell commands executed by subprocess.run with shell=True. A malicious network name mapping, DNS argument, CIDR-like string, or interface value could inject shell metacharacters and cause arbitrary command execution on the host.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Content
# Run nmap scan - use sudo for MAC discovery
    print(f"Scanning {cidr}...", file=sys.stderr)
    sudo = "sudo " if use_sudo else ""
    nmap_cmd = f"{sudo}nmap -sn -oX - {cidr} 2>/dev/null"
    nmap_output = run_cmd(nmap_cmd, timeout=180)
Confidence
96% confidence
Finding
Again, this line represents elevated execution of a shell-built nmap command. The core danger is not merely using sudo, but using it in a path where attacker-controlled values can alter the command, potentially leading to root command execution and unauthorized scanning.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Content
# Run nmap scan - use sudo for MAC discovery
    print(f"Scanning {cidr}...", file=sys.stderr)
    sudo = "sudo " if use_sudo else ""
    nmap_cmd = f"{sudo}nmap -sn -oX - {cidr} 2>/dev/null"
    nmap_output = run_cmd(nmap_cmd, timeout=180)
Confidence
96% confidence
Finding
Again, this line represents elevated execution of a shell-built nmap command. The core danger is not merely using sudo, but using it in a path where attacker-controlled values can alter the command, potentially leading to root command execution and unauthorized scanning.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Content
# Run nmap scan - use sudo for MAC discovery
    print(f"Scanning {cidr}...", file=sys.stderr)
    sudo = "sudo " if use_sudo else ""
    nmap_cmd = f"{sudo}nmap -sn -oX - {cidr} 2>/dev/null"
    nmap_output = run_cmd(nmap_cmd, timeout=180)
Confidence
96% confidence
Finding
Again, this line represents elevated execution of a shell-built nmap command. The core danger is not merely using sudo, but using it in a path where attacker-controlled values can alter the command, potentially leading to root command execution and unauthorized scanning.

Tool Parameter Abuse

High
Category
Tool Misuse
Content
def run_cmd(cmd, timeout=60):
    """Run a shell command and return output."""
    try:
        result = subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=timeout)
        return result.stdout.strip()
    except subprocess.TimeoutExpired:
        return ""
Confidence
99% confidence
Finding
The tool accepts parameters that flow into shell commands without robust validation, enabling parameter abuse to alter command behavior or append new commands. In a network-scanning skill, that can be used both for host compromise and for converting the tool into an unauthorized scanner against unintended targets.

VirusTotal

65/65 vendors flagged this skill as clean.

View on VirusTotal

Static analysis

No suspicious patterns detected.