Back to skill

Security audit

Linkedin Lead Gen

Security checks for vulnerabilities and agentic risk

Overview

This skill performs disclosed LinkedIn lead research and report generation, with some implementation and scoping cautions but no hidden, destructive, persistent, or exfiltrating behavior found.

Install only if you intend to do scoped LinkedIn prospect research and generate local prospect reports. Provide clear limits for industry, location, and number of prospects, and treat generated HTML/PDF reports as untrusted if they include data copied from external profiles or websites.

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

Warning
Location
scripts/generate_report.py:36
Finding

Unescaped Prospect Data Enables HTML Injection and Unsafe Links

Content
View full analysis
{p['name']}
{p['position']}
Location: {p.get('location', 'N/A')} | LinkedIn Profile

Gap Analysis:

    """ for need in p.get('needs', []): html += f"
  • {need}
  • " html += f"""
``` The same unsafe interpolation continues in the pitch field: ```python Pitch Idea: {p.get('pitch', 'N/A')} ``` ### Technical Analysis `generate_html()` parses caller-supplied JSON and directly interpolates the resulting values into HTML. The fields `name`, `position`, `location`, each item in `needs`, and `pitch` are inserted without HTML escaping. The `linkedin_url` value is inserted into an `href` attribute without attribute escaping, URI-scheme validation, or host validation. An attacker who controls any of these values can inject arbitrary HTML, including deceptive report content, images that issue external requests, or event-handler attributes. A crafted `linkedin_url` can also use an active URI scheme such as `javascript:`. Whether injected JavaScript executes depends on the browser or HTML-to-PDF renderer and its security configuration. The project workflow gathers data from external profiles and websites, so malicious external content could enter the report even when the person generating it did not intentionally provide hostile JSON. ### Attack Path 1. An att ...[truncated 1502 chars]
Remediation
View remediation
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (3)

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The manifest description says the skill should be used when asked to find potential clients or leads, which is a broad trigger phrase that could cause the agent to invoke this skill in many loosely related sales or research contexts. Because the skill performs web research and generates outreach-oriented reports, overbroad activation increases the chance of unintended data collection, inappropriate prospecting, or use outside the user's specific intent.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
79% confidence
Finding

The skill instructs the agent to generate a professional HTML-based PDF report but does not warn the user that it will create output files. This can lead to unexpected file creation, confusion about where artifacts are stored, and accidental persistence of prospect data gathered during the workflow.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
92% confidence
Finding

The generated document sets lang="en" explicitly, which forces an English locale in the output. Under the policy rules, locale-specific behavior should be optional or clearly justified rather than imposed silently.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.