Back to skill

Security audit

Lead Enrichment Pipeline

Security checks for vulnerabilities and agentic risk

Overview

This lead-capture skill is mostly purpose-aligned, but its public workflows can store lead data and send emails from unauthenticated webhook submissions with weak validation and abuse controls.

Review before installing. Use this only behind controls you configure: authenticated or signed webhook requests, CAPTCHA or bot protection for public forms, strict email and field validation, double opt-in before newsletter or lead-magnet delivery, per-recipient and global SMTP quotas, HTML escaping for notification templates, and a clear privacy/consent notice for storing lead data in Google Sheets and sending emails.

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 (4)

T09 · Insecure Skill Coding Practices

Warning
Location
workflows/lead-magnet.json:253
Finding

Spoofable Client-IP Rate Limiting Enables Email and Storage Abuse

Content
View full analysis
now - ts < windowMs); if (limits[key].length === 0) delete limits[key]; } // Check rate limit const requests = limits[ip] || []; if (requests.length >= maxRequests) { throw new Error(`Rate limit exceeded for ${ip}`); } // Record this request requests.push(now); limits[ip] = requests; // Pass through return $input.all(); ``` ### Technical Analysis The rate limit uses `X-Forwarded-For` or `X-Real-IP` directly as its client identity. These headers can normally be supplied by the requesting client unless a trusted reverse proxy removes and reconstructs them. The code neither verifies that the request traversed a trusted proxy nor parses a trusted hop from a forwarding chain. Consequently, an attacker can select a new rate-limit key for every request by changing the header value. Each fabricated value receives a separate allowance of ten requests per hour. The issue affects both public workflows. Successful requests can update Google Sheets and trigger SMTP messages; the lead-magnet workflow also attaches the configured PDF. ### Attack Path 1. The attacker identifies the public `/webhook/newsletter` or `/webhook/lead-magnet` endpoint. 2. The attacker submits a valid-looking JSO ...[truncated 1001 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
workflows/lead-magnet.json:23
Finding

Unauthenticated Webhooks Send Email to Attacker-Selected Recipients

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
workflows/lead-tracker.json:7
Finding

Unprotected Lead Webhook Allows Notification Flooding and HTML Content Injection

Content
View full analysis
New Lead Added to Tracker
Name:{{ $json.Name }}
Email:{{ $json.Email }}
Company:{{ $json.Company }}
Source:{{ $json.Source }}
Priority:{{ $json.Priority }}/10
Notes:{{ $json.Notes }}< ...[truncated 1951 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Note
Location
workflows/lead-tracker.json:23
Finding

Required-Field Validation Is Documented but Not Implemented

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • 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
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (10)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill processes and redistributes lead PII including names, emails, phone numbers, company data, and messages through webhooks, Google Sheets, and SMTP, but it does not warn users about the privacy, consent, retention, or compliance implications. In a lead-capture pipeline, this omission is materially relevant because operators may deploy it without considering lawful basis, access controls, or whether sensitive lead data is being sent to third-party services.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 132)May include surrounding context.

4. Test

bash
curl -X POST https://your-n8n.com/webhook/add-lead-enriched \
  -H "Content-Type: application/json" \
  -d '{
    "name": "John Doe",

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The workflow exposes a publicly reachable POST webhook with no authentication, signature verification, shared secret, or validation of trusted origin. Although there is a simple rate limiter, an attacker can still submit arbitrary payloads, poison lead data, trigger unsolicited outbound emails, and abuse downstream integrations.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The workflow collects an email address from inbound webhook data and sends it to Google Sheets, and later uses it for SMTP delivery. In this manifest there is no visible warning, notice, or disclosure that user contact data will be stored in a spreadsheet and transmitted through email infrastructure.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The manifest describes lead capture, deduplication, tracking, scoring, and team notifications. This workflow additionally reads a local PDF file and emails it directly to the submitted lead, which is a materially different behavior from internal lead processing and notification.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The Google Sheets node appends or updates records containing personal and business contact data from the webhook input. This file does not include any comment, description, or other visible disclosure that user-submitted data will be stored in a spreadsheet.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The email step sends submitted lead details including name, email, company, source, priority, and notes to a notification address. In this JSON file there is no visible warning, confirmation, or explanatory text disclosing that submitted data will be forwarded by email.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The workflow accepts arbitrary webhook submissions, stores email addresses in Google Sheets, and sends welcome emails without any visible consent, disclosure, or validation controls in the workflow itself. This creates privacy and abuse risk: third parties could submit someone else's address, causing unsolicited email and retention of personal data without demonstrated opt-in.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The manifest describes a lead capture, deduplication, tracking, scoring, and team notification pipeline. This workflow additionally sends a direct marketing-style welcome email to the submitted address, which is a materially different end-user communication behavior than internal team notification and is not mentioned in the description.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Low
Category
Not specified by scanner
Confidence
81% confidence
Finding

The code conditionally captures and persists ResultType, Badge, and ResultTitle for alignment-diagnosis submissions. The manifest only describes lead capture, deduplication, scoring by source and engagement, and notifications, not storage of assessment result metadata.

Content

No source excerpt is available for this finding.