Back to skill

Security audit

wifi-dead-zone

Security checks for vulnerabilities and agentic risk

Overview

This skill is a local Wi-Fi planning tool that reads and updates a user-selected home layout file, with no evidence of hidden network access, credential use, persistence, or destructive behavior.

Install only if you are comfortable running a local Python script and storing approximate home layout and Wi-Fi measurement data in a JSON file. Avoid pointing --home at unrelated files, because survey mode rewrites that path as JSON.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (5)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
89% confidence
Finding

The skill advertises shell execution and likely file-writing behavior through example commands, but it declares no explicit tool scope such as allowed-tools or permissions. That creates an authorization gap: an agent runtime may grant broader capabilities than the skill actually needs, increasing the chance of unintended command execution or filesystem modification if the skill is invoked with untrusted user-controlled arguments or adapted by another agent.

Content

No source excerpt is available for this finding.

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · scripts/test_wifi_heatmap.py (reported line 96)May include surrounding context.

python
hf = os.path.join(td, "home.json")
    with open(hf, "w") as f:
        json.dump(wifi.sample_home(), f)
    r = subprocess.run([sys.executable, os.path.join(HERE, "wifi_heatmap.py"),
                        "survey", "--home", hf, "--room", "kitchen",
                        "--rssi", "-58", "--band", "5", "--where", "counter"],
                       capture_output=True, text=True)

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · scripts/test_wifi_heatmap.py (reported line 104)May include surrounding context.

python
with open(hf) as f:
        saved = json.load(f)
    check("measurement persisted", saved["measurements"]["kitchen"][-1]["rssi"] == -58)
    r = subprocess.run([sys.executable, os.path.join(HERE, "wifi_heatmap.py"),
                        "compare", "--home", hf], capture_output=True, text=True)
    check("compare renders table", "Model vs measured" in r.stdout and "delta" in r.stdout.lower()
          or "Delta" in r.stdout)

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · scripts/test_wifi_heatmap.py (reported line 108)May include surrounding context.

python
"compare", "--home", hf], capture_output=True, text=True)
    check("compare renders table", "Model vs measured" in r.stdout and "delta" in r.stdout.lower()
          or "Delta" in r.stdout)
    r = subprocess.run([sys.executable, os.path.join(HERE, "wifi_heatmap.py"),
                        "plan", "--home", hf], capture_output=True, text=True)
    check("plan renders heatmap", "Heatmap" in r.stdout and "@" in r.stdout)

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · scripts/test_wifi_heatmap.py (reported line 113)May include surrounding context.

python
check("plan renders heatmap", "Heatmap" in r.stdout and "@" in r.stdout)

print("cli:")
r = subprocess.run([sys.executable, os.path.join(HERE, "wifi_heatmap.py"), "example"],
                   capture_output=True, text=True)
check("example runs end-to-end", r.returncode == 0 and "Per-room signal" in r.stdout)
check("example shows before/after", "recommended spot" in r.stdout)