Back to skill

Security audit

Linkedin Lead Generation

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent LinkedIn prospect-research and report-generation workflow, with a real report-safety issue users should handle carefully.

Install only if you need B2B LinkedIn lead research. Review generated reports before sharing, avoid copying untrusted profile or website text verbatim into report fields, and consider fixing the HTML escaping and URL validation before using reports with external recipients.

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:34
Finding

Unescaped Prospect Data Allows HTML Injection in Generated Reports

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"""
Pitch Idea: {p.get('pitch', 'N/A')}
``` ### Technical Analysis The report generator directly interpolates JSON-derived values into HTML without applying context-appropriate escaping. The affected values include `name`, `position`, `location`, each entry in `needs`, and `pitch`. An attacker-controlled value containing HTML can therefore terminate the intended element and inject arbitrary markup, including script elements, event handlers, embedded resources, or misleading report content. The `linkedin_url` field is inserted directly into an `href` attribute without quotation escaping or URL-scheme validation. A crafted value can break out of the attribute or introduce a dangerous scheme such as `javascript:`. Although the precise effect depends on the browser or HTML-to-PDF renderer, active-content renderers may execute scripts or initiate external network requests. The data is expected to originate from researched LinkedIn profiles and company websites. Consequently, prospect-controlled content crosses an external trust boundary before reaching this unsa ...[truncated 1736 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 (2)

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The description says the skill should be used whenever asked to find potential clients or leads, which is an overly broad trigger that can cause the agent to invoke this skill in many loosely related contexts without sufficient user intent checks. In this skill, broad auto-invocation is more concerning because it drives external research, profiling, and lead-generation workflows on real people and companies, increasing the chance of privacy-invasive or policy-sensitive use.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The generated document sets lang="en", which imposes a specific language/locale in output. The file does not offer a user-selectable locale or document why English-only output is required, which can violate language/locale policy expectations.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.