Back to skill

Security audit

producthunt-wingman

Security checks for vulnerabilities and agentic risk

Overview

The skill is openly an outreach automation tool, but it enables scheduled LinkedIn-facing activity with broad triggers and unclear safeguards.

Review this carefully before installing. Only enable it if you are comfortable with local storage of a LinkedIn browser session and recurring outreach automation. Confirm exactly what the missing server code does, how scheduled runs are enabled or removed, and whether every connection request or message requires your approval.

Vulnerability Patterns
  • System PersistenceInstalls backdoors, hooks, services, or scheduled tasks that survive the run
  • 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)

T06 · System Persistence

Error
Location
SKILL.md:58
Finding

Unattended Daily Outreach Through a Persistent Scheduled Task

Content
View full analysis

Vulnerability Details

File Location: SKILL.md:58-60; corroborating configuration at skill.json:17-27
Vulnerability Type: T06: System Persistence
Risk Level: High

Vulnerable code in SKILL.md:

markdown
### 📅 Automatic Triggers
- **Daily Discovery**: Runs at 9 AM local time via cron.
- **Outreach Loop**: Enforces connection budgets to protect your account.

Corroborating configuration in skill.json:

json
"triggers": [
  "Start my PH outreach",
  "Set up wingman",
  "Scrape ProductHunt streaks",
  "How many connections did wingman send today?",
  "Check my launch outreach status",
  "Enrich new prospects",
  "Pause wingman",
  "cron"
],
"schedule": "0 9 * * *",

Technical Analysis

The skill declares a daily cron schedule that causes its discovery and outreach behavior to continue across interactive sessions. Scheduled execution is a persistence mechanism because activity can be initiated every day without a fresh user command or renewed authorization.

This is particularly sensitive because the documented workflow also uses a retained local LinkedIn browser session and performs profile discovery, enrichment, and engagement. Consequently, a persistent scheduler could repeatedly invoke account-facing automation after the user has stopped interacting with the skill.

The audited package contains only SKILL.md and skill.json. The referenced server/, server/main.py, server/linkedin_agent.py, and setup.sh components are absent, so the exact cron installation mechanism, executed command, scheduler ownership, removal behavior, and runtime safeguards could not be verified. The finding is therefore based on the explicit persistent behavior declared by the packaged documentation and schedule configuration; it does not establish that an operating-system crontab is installed directly.

Attack Path

  1. A user installs or enables the skill and supplies the ...[truncated 1340 chars]
Remediation
View remediation

Remediation Suggestions

  1. Remove automatic schedule registration from the default installation path and require explicit, informed opt-in before creating any recurring task.
  2. Display the exact schedule, executable command, working directory, environment access, and anticipated account actions before obtaining consent.
  3. Require a separate confirmation for unattended LinkedIn or external-account activity; enabling discovery should not implicitly enable outreach.
  4. Provide documented commands to list, pause, and permanently remove all scheduler entries and background services created by the skill.
  5. Automatically remove scheduled tasks during uninstallation and verify that no orphaned cron entries or background processes remain.
  6. Add an expiration date or maximum run count so authorization does not persist indefinitely.
  7. Require confirmation immediately before sending messages or connection requests, even when discovery is scheduled.
  8. Use least-privilege execution under the installing user and prohibit elevated or system-wide scheduler installation.
  9. Record an auditable log of scheduler creation, each scheduled invocation, external-account actions, and scheduler deletion.
  10. Include the referenced runtime files in the audited package, pin their integrity with cryptographic hashes, and document precisely whether the schedule is managed by the host platform or the operating-system crontab.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (4)

Vague Triggers

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The trigger value "cron" is extremely broad and can collide with many unrelated user messages or system contexts involving scheduling. Since the skill already defines a schedule and supports automated outreach operations, an overly generic trigger increases the chance of unintended autonomous execution of scraping, enrichment, or engagement tasks.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The skill advertises a daily discovery run and an outreach loop with account-protective budgets, but it does not clearly warn that autonomous, scheduled actions may initiate or influence account-impacting LinkedIn outreach. In this context, the skill is explicitly designed for marketing automation and LinkedIn engagement, so the lack of an explicit consent/approval warning increases the risk of unintended messaging, platform policy violations, or reputational harm.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The trigger phrase "Set up wingman" is broad enough to match generic setup requests, which can cause the skill to activate outside the user's intended context. Because this skill automates outreach and enrichment workflows, accidental invocation could initiate sensitive actions or configuration flows without clear user consent.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The phrase "Enrich new prospects" is underspecified and could be triggered by unrelated CRM, sales, or research requests. In a skill designed for deep enrichment and LinkedIn engagement, this ambiguity raises the risk of collecting or processing prospect data unintentionally, potentially leading to privacy or compliance issues.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.