Back to skill

Security audit

SaaS Idea Scout

Security checks for vulnerabilities and agentic risk

Overview

This skill is mostly transparent about its research pipeline, but it needs review because user-provided text is used in file paths that are later placed into shell commands without clear sanitization.

Review before installing. Use only simple alphanumeric domain names, avoid shell metacharacters in prompts, and confirm the watchdog is removed if a run is stopped. The maintainer should generate safe slugs for run directories, verify paths stay under saas-scout-runs, and replace shell string assembly with safer file operations.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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
Findings (1)

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:284
Finding

Shell Command Injection Through an Unsanitized User-Derived Run Directory

Content
View full analysis
_/` and write a `context.md` file with the domain, constraints, customer segments, founder profile, and 8 seeds with their slug names. ``` The resulting directory is subsequently interpolated into shell commands. For example: ```bash for i in 01 02 03 04 05 06 07 08; do cat "/pool/${i}_prd.md" \ "/pool/${i}_critique.md" \ > "/pool/${i}_dossier.md" done ``` The same unsafe interpolation pattern is used when assembling final dossiers: ```bash for i in 01 02 03 04 05 06 07 08; do cat "/pool/${i}_prd.md" \ "/pool/${i}_critique.md" \ "/pool/${i}_evaluation.md" \ > "/pool/${i}_dossier.md" done ``` ### Technical Analysis The Skill directs the orchestrator to derive a filesystem path from the domain supplied during the conversation. It does not require validation, canonicalization, slug generation, or shell-safe argument handling before substituting that path into Bash commands. Wrapping the substituted value in double quotes is insufficient if the orchestrator constructs a shell command by textual interpolation. Shell constructs embedded in the value, including command substitution such as `$(command)`, remain active inside double-quoted shell text. Embedded quotation marks or control operators could also alter the intended command structure. For example, a malicious domain resembling the following could become part of `run_dir`: ```text payments_$(id>/tmp/sco ...[truncated 2233 chars]
Remediation
View remediation
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • 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)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill description does not clearly warn that execution will create persistent directories, write dozens of files, spawn up to 24 sub-agents, and install a cron watchdog. In a chat-driven environment, insufficient disclosure increases the chance that users authorize execution without understanding the operational and persistence side effects.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The trigger phrases are broad enough to overlap with ordinary user conversation, which raises the risk of accidental activation. Because this skill can spawn many sub-agents, create directories, write multiple files, and schedule a watchdog, unintended triggering could cause significant side effects without clear user intent.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
99% confidence
Finding

L077 states the cron watchdog is "removed after Phase 4 completes," but L459-L462 says to remove it after Phase 4 while L344 explicitly instructs "Do NOT remove the cron watchdog. It stays active through all phases." More importantly, the manifest and workflow define only 5 phases total, so saying it stays active through all phases conflicts with the later explicit removal before Phase 5 runs in-session only.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
96% confidence
Finding

L058 says Phase 1 "Creates .scoutrc on first run," implying a local dotfile in the current working area, but later instructions consistently state the preference file is saved and read from saas-scout-runs/.scoutrc (L234, L238, L247, L633). This is an active documentation inconsistency about the actual write location, which matters because the skill persists user configuration to disk.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill instructs the agent to write to an externally provided output file path with no validation, sandboxing, or overwrite protections. If a malicious or malformed task brief supplies a sensitive or unexpected path, the agent could overwrite arbitrary workspace files, corrupt prior results, or clobber configuration/state files.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.