Back to skill

Security audit

Nudgen: AI-Powered Email Retention & Automation

Security checks for vulnerabilities and agentic risk

Overview

The skill is Nudgen-focused, but its documentation includes unverified remote install commands that can run mutable code on a user's machine.

Review the install commands before using this package. Prefer pinned versions, project-scoped installation, and checksum or signature verification; avoid running curl-to-bash or latest/default-branch installers in sensitive environments. Treat Nudgen PATs as secrets and confirm team context before any delete or write operation.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (3)

T03 · Remote Payload Retrieval and Execution

Error
Location
skills/cli/references/cli.md:25
Finding

Mutable Remote Installer Is Executed Directly Through Bash

Content
View full analysis
Remediation
View remediation
/scripts/install.sh" printf '%s %s\n' "" "install.sh" | sha256sum --check - less install.sh bash install.sh ``` The commit and checksum must be replaced with immutable, publisher-verified values. ]]>

T08 · Insecure Dependencies

Warning
Location
README.md:17
Finding

Unpinned npx-Based Skill Installation Creates Supply-Chain Exposure

Content
View full analysis
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
skills/cli/references/cli.md:28
Finding

Unpinned Go and Source-Build Installation Executes Mutable Upstream Content

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • 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
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
Findings (28)

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · skills/api/SKILL.md (reported line 6)May include surrounding context.

md
description: >
  Use this skill whenever the user wants to integrate Nudgen from application
  code, backend services, webhooks, or server-side automation. This includes
  Nudgen API authentication with Personal Access Tokens (PATs), contacts,
  campaigns, stats, teams, brand configs, and affiliate/referral endpoints.
  Trigger on phrases like "Nudgen API", "send request to /api/v1", "Bearer
  PAT", "create contact in backend", "switch team via API", or any request to

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · skills/api/references/http-api.md (reported line 23)May include surrounding context.

Authentication

Every request uses a Personal Access Token (PAT):

http
Authorization: Bearer <PAT>

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
80% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · skills/api/references/http-api.md (reported line 48)May include surrounding context.

md
- `GET /contacts`
  - `POST /contacts/add`
  - `PATCH /contacts/:id`
  - `DELETE /contacts/:id`
- Campaigns
  - `GET /campaigns`
  - `POST /campaigns`

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
80% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · skills/api/references/http-api.md (reported line 52)May include surrounding context.

md
- Campaigns
  - `GET /campaigns`
  - `POST /campaigns`
  - `DELETE /campaigns/:id`
- Stats
  - `GET /dashboard/overview`
- Teams

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
80% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · skills/api/references/http-api.md (reported line 59)May include surrounding context.

md
- `GET /teams`
  - `POST /teams`
  - `POST /teams/switch`
  - `DELETE /teams/:id`
- Brand config
  - `GET /brand`
  - `POST /brand`

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
80% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · skills/api/references/http-api.md (reported line 64)May include surrounding context.

md
- `GET /brand`
  - `POST /brand`
  - `PATCH /brand/:id`
  - `DELETE /brand/:id`
- Affiliate/referral
  - `GET /affiliate/me`
  - `GET /affiliate/analytics`

Chaining Abuse

High
Category
Tool Misuse
Confidence
98% confidence
Finding

The | bash construct turns a network fetch into immediate shell execution, enabling command chaining abuse and making any compromise of the upstream content equivalent to arbitrary code execution on the user's machine. Because this is in a CLI reference skill, the likelihood of copy-paste execution is elevated, which makes the guidance materially more dangerous.

Content

Scanner excerpt · skills/cli/references/cli.md (reported line 25)May include surrounding context.

Install script

bash
curl -fsSL https://raw.githubusercontent.com/Nudgen-Marketing/nudgen-cli/main/scripts/install.sh | bash

Go install

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · skills/cli/references/cli.md (reported line 57)May include surrounding context.

md
- starts local callback receiver on port `3456`
- receives `token` query param
- verifies token with `/api/v1/user/me`
- saves token to system keychain

### Identity and logout

Rp1

Medium
Category
MCP Rug Pull
Confidence
89% confidence
Finding

The README instructs users to execute npx skills add directly from a remote package source without pinning an exact version. Because npx resolves and runs the latest published package by default, a compromised or malicious upstream release could execute untrusted code in the user's environment during installation.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
89% confidence
Finding

This command again relies on unpinned npx skills, causing users to fetch and execute whatever current package version is returned at runtime. In an agent-skill ecosystem where install commands are copied verbatim, this increases supply-chain risk and can lead to arbitrary code execution if the package or dependency chain is compromised.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
89% confidence
Finding

The installation example invokes npx skills without constraining the package version, exposing users to remote code execution via malicious or tampered future releases. Since READMEs are often followed mechanically, this creates a realistic path for exploitation through package substitution or upstream compromise.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
89% confidence
Finding

This command repeats the same unsafe pattern of executing an unpinned npx package. An attacker who gains control of the published package, its dependencies, or the resolution path could cause arbitrary code to run on developer or CI hosts.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
89% confidence
Finding

By providing another unpinned npx skills example, the README normalizes execution of mutable remote code. In the context of installable agent skills, this is more dangerous because the audience is likely to grant broad filesystem or repository access during setup.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The trigger guidance includes broad phrases like general marketing automation tasks, which weakens activation boundaries for an auto-loading skill. Overly broad triggers can cause the skill to activate in unrelated contexts, increasing the chance that sensitive user data or commands are exposed to instructions not intended for the current task.

Content

No source excerpt is available for this finding.

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
80% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

Scanner excerpt · README.md (reported line 68)May include surrounding context.

md
- "Switch team context through Nudgen API and then fetch campaigns."
- "Read dashboard overview stats from a backend service."

Skill file: [skills/api/SKILL.md](./skills/api/SKILL.md)

### `cli`

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
80% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

Scanner excerpt · README.md (reported line 85)May include surrounding context.

md
- "Switch to a team and list campaigns in JSON."
- "Show referral activity from terminal."

Skill file: [skills/cli/SKILL.md](./skills/cli/SKILL.md)

### `email-sending-best-practices`

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
80% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

Scanner excerpt · README.md (reported line 102)May include surrounding context.

md
- "Should this message be campaign or transactional?"
- "How should we clean this stale audience before a comeback campaign?"

Skill file: [skills/email-sending-best-practices/SKILL.md](./skills/email-sending-best-practices/SKILL.md)

## Stability Notes

Rp1

Medium
Category
MCP Rug Pull
Confidence
86% confidence
Finding

The contribution instructions tell maintainers to re-run npx skills add without pinning a version, which exposes contributor workstations to the same supply-chain execution risk. Because contributors may run this during development with repository write access, compromise could affect both local systems and the codebase.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
86% confidence
Finding

The local validation step again uses unpinned npx skills, which can execute untrusted code from the current latest package. This is especially risky in a validation workflow, where users may assume the step is harmless and run it inside development environments containing credentials and source code.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The trigger scope explicitly includes broad phrases like general marketing automation tasks, which can cause the skill to activate outside narrowly intended Nudgen-specific contexts. Over-broad activation can lead to inappropriate tool selection, irrelevant guidance, or accidental exposure of powerful sub-skills such as API and CLI workflows when a more specific skill should have been used.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill instructs use of Personal Access Tokens and Bearer authentication but does not include explicit handling guidance such as never pasting real tokens into chats, logs, client-side code, or examples. In a coding-assistant context, omission of secret-safety warnings increases the chance that users expose live credentials during troubleshooting or copy insecure patterns into production.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The trigger list starts with specific examples but then expands to 'any request to integrate Nudgen in code instead of shell-only CLI usage,' which is broad and lacks clear boundaries. This can cause unintended invocation because it does not specify precise trigger phrases or negative examples beyond excluding shell-only CLI usage.

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 · skills/api/references/http-api.md (reported line 75)May include surrounding context.

Identity check

bash
curl -sS \
  -H "Authorization: Bearer $NUDGEN_PAT" \
  https://app.nudgen.net/api/v1/user/me

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

This markdown file lists deletion commands such as nudgen teams delete <team-id> without any warning about destructive effects, confirmation requirements, or potential data loss. Under the markdown-file criteria, user-facing documentation should disclose behaviors that could affect user data or system integrity.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The reference includes nudgen brand delete <brand-id> but does not warn users that deleting a brand may remove or affect persisted data. In markdown documentation, destructive operations should be accompanied by clear warnings so users understand the risk before invoking them.

Content

No source excerpt is available for this finding.