Back to skill

Security audit

System Monitor

Security checks for vulnerabilities and agentic risk

Overview

This system-monitoring skill does what it says, with no evidence of hidden persistence, network exfiltration, destructive actions, or deceptive instructions.

Install only if you are comfortable with the agent reading local system metrics and process information. Avoid sharing JSON or process output publicly, because command lines can include file paths, usernames, host details, or secrets passed as arguments.

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
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (6)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding

The skill invokes local Python scripts via shell commands and implicitly requires file access, but it does not declare any tool scope or permissions boundaries. This creates an authorization gap where an agent may run shell/file operations without explicit least-privilege constraints, increasing the risk of unintended command execution or access beyond what a reviewer expects.

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/monitor.py (reported line 63)May include surrounding context.

python
"""Get disk usage for mounted partitions."""
    try:
        import subprocess
        result = subprocess.run(['df', '-B1', '-T'], capture_output=True, text=True)
        lines = result.stdout.strip().split('\n')[1:]  # Skip header
        
        disks = []

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/monitor.py (reported line 140)May include surrounding context.

python
"""Get top processes by CPU usage."""
    try:
        import subprocess
        result = subprocess.run(
            ['ps', 'aux', '--sort=-%cpu'],
            capture_output=True, text=True
        )

Context-Inappropriate Capability

Low
Category
Not specified by scanner
Confidence
72% confidence
Finding

A system monitor is expected to read system metrics, but invoking subprocesses introduces executable capability beyond straightforward metric collection. While used here for monitoring, spawning external commands is a broader operational capability than the manifest explicitly conveys.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Low
Category
Not specified by scanner
Confidence
82% confidence
Finding

The code enumerates process owners, PIDs, CPU/memory usage, and full command lines, which can reveal sensitive operational details such as application names, arguments, file paths, tokens passed on the command line, or customer-specific workloads. While process monitoring fits the skill's purpose, exposing full commands increases the risk of unintended information disclosure beyond basic system metrics.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

Displaying process command lines without warning can leak secrets embedded in argv, internal hostnames, file paths, usernames, or operational details to whoever can access the skill output. In a monitoring skill this capability is contextually plausible, but the lack of disclosure and minimization makes the data exposure risk more significant.

Content

No source excerpt is available for this finding.