Back to skill

Security audit

Pitch

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly a local pitch-coaching helper, but one script generates unsupported business claims as if they were facts.

Review any generated pitch carefully before using it externally. The local storage behavior is disclosed and limited, but the elevator-pitch script can produce fabricated business metrics and credentials; replace those with verified facts or avoid using that output as presentation-ready material.

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
Findings (1)

other

Warning
Location
scripts/create_elevator_pitch.py:61
Finding

Generated pitches contain fabricated business claims presented as facts

Content
View full analysis

Vulnerability Details

File Location: scripts/create_elevator_pitch.py, lines 61-76
Vulnerability Type: Fabricated business claims
Risk Level: Medium

Vulnerable Code

python
print("We've signed 12 customers and are growing 20% monthly")
print(f"\n[ASK - 10 sec]")
if args.audience == 'investor':
    print("We're raising $500K to hit $30K MRR. Are you interested?")
elif args.audience == 'customer':
    print("Can I show you a 5-minute demo next week?")

else:  # 120 seconds
    print(f"\n[HOOK - 15 sec]")
    print(f"{problem}")
    print(f"\n[SOLUTION - 30 sec]")
    print(f"{company} {solution}")
    print(f"\n[MARKET - 20 sec]")
    print("This is a $2B market growing 30% annually")
    print(f"\n[TRACTION - 30 sec]")
    print("12 customers, $15K MRR, growing 20% monthly, 58 NPS")
    print(f"\n[TEAM - 15 sec]")
    print("Ex-Stripe and Google engineers")

Technical Analysis

The script retrieves the company, problem statement, and solution from the selected foundation, but it does not retrieve or validate the market size, customer count, revenue, growth, NPS, team background, fundraising target, or intended use of funds.

Instead, it inserts fixed claims into generated pitches and presents them as genuine facts. These values are not marked as examples or placeholders. Consequently, unrelated companies receive the same unsupported claims, including:

  • 12 signed customers
  • 20% monthly growth
  • A $2 billion market growing 30% annually
  • $15,000 in monthly recurring revenue
  • An NPS of 58
  • Former Stripe and Google engineers
  • A $500,000 seed-round target tied to $30,000 MRR

This is a business-integrity and safety defect rather than a traditional privilege-escalation vulnerability. It conflicts with the skill's advisory purpose because a user could reasonably interpret the generated output as a pitch tailored from their stored foundation.

Attack Path

1 ...[truncated 1342 chars]

Remediation
View remediation

Remediation Suggestions

  1. Remove all fixed traction, market, team, and fundraising assertions from production output.
  2. Read each factual claim from the selected foundation record, using explicit fields for customer count, MRR, growth, NPS, market size, market growth, team history, fundraising target, and intended use of funds.
  3. Omit sections for which verified data is unavailable rather than supplying invented values.
  4. If templates are needed, visibly mark them as placeholders, such as [INSERT VERIFIED MRR], and never render example values as factual prose.
  5. Require explicit user confirmation of material factual claims before producing a presentation-ready pitch.
  6. Validate --length with choices=[30, 60, 120] so unsupported values do not silently enter the 120-second branch.
  7. Add automated tests using empty and unrelated foundations to ensure that no unprovided business metric or credential appears in generated output.
  8. Display a concise warning that all figures and credentials must be verified before external use.
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • 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
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (4)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
89% confidence
Finding

The skill describes file-based data storage and directs use of local scripts, but it does not declare any explicit tool scope such as permissions or allowed-tools. That mismatch creates an authorization ambiguity: an agent may infer or use file read/write capabilities beyond what is formally constrained, increasing the risk of unintended access to local workspace data.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The script’s stated purpose is to draft a follow-up email, but it also writes meeting metadata to persistent local storage under ~/.openclaw/workspace/memory/pitch. This creates an undisclosed data retention behavior that can expose potentially sensitive business relationship details, investor/customer contacts, and discussion notes to other local processes or future consumers of that memory store.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

Meeting details are persisted without prior notice even though the data may include sensitive commercial context such as investor discussions, customer workflow issues, and next steps. In a pitch-coaching skill, users may reasonably expect advisory output only, so silent storage increases privacy risk and could lead to unintended exposure or secondary use of conversation-derived data.

Content

No source excerpt is available for this finding.

Vague Triggers

Low
Category
Not specified by scanner
Confidence
89% confidence
Finding

This markdown file includes activation-style examples such as 'What questions will investors ask?' and 'What are my weak points?' without any limiting context, negative examples, or explicit boundaries. Those phrases are broad enough to overlap with ordinary coaching or feedback requests outside the intended objection-handling use case.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.