T09 · Insecure Skill Coding Practices
- Location
scripts/send_message.py:6- Finding
Sensitive Signal Message Data Exposed Through Failure Diagnostics
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is purpose-aligned for Signal messaging, but it can expose private message details in error output and should be reviewed before use.
Install only if you are comfortable letting the agent use your local Signal account to list contacts and send messages. Confirm every recipient and message before sending, and avoid using it for highly sensitive messages unless the error logging is fixed to redact message text, phone numbers, and attachment paths.
scripts/send_message.py:6Sensitive Signal Message Data Exposed Through Failure Diagnostics
The skill invokes shell commands (signal-cli, python3 scripts/...) but does not declare any explicit tool scope such as permissions or allowed-tools. This creates an authorization gap where an agent may execute local commands without a clearly constrained policy boundary, which is especially sensitive here because the commands can send real messages, enumerate contacts, and access local account data.
subprocess module calls execute external commands. Without careful input validation, this enables command injection.
import argparse, json, re, subprocess, sys
def run(cmd):
p = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
if p.returncode != 0:
raise RuntimeError(f"command failed ({p.returncode}): {' '.join(cmd)}\n{p.stderr.strip()}")
return p.stdout
subprocess module calls execute external commands. Without careful input validation, this enables command injection.
import argparse, json, re, subprocess, sys
def run(cmd):
p = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
if p.returncode != 0:
raise RuntimeError(f"command failed ({p.returncode}): {' '.join(cmd)}\n{p.stderr.strip()}")
return p.stdout
No suspicious patterns detected.