Back to skill

Security audit

Nango API Integration

Security checks for vulnerabilities and agentic risk

Overview

This skill is a coherent Nango integration guide, but it gives agents broad third-party account access and write-capable API patterns without enough scoping or confirmation guidance.

Install only if you intend to let agents connect to external accounts through Nango. Use least-privilege Nango keys and provider scopes, pin SDK versions, keep secrets out of prompts/logs, and require explicit confirmation before sending messages, creating issues, or making any mutating API call.

Vulnerability Patterns
  • 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
  • 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)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:33
Finding

Unpinned Third-Party SDK Installation

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 33–39
Vulnerability Type: Unpinned third-party dependencies
Risk Level: Medium

Vulnerable Code

bash
# Python
pip install nango

# Node.js
npm install @nangohq/node-client

The installed Python SDK is subsequently imported and executed in scripts/test_connection.py, including at lines 15–28:

python
from nango import Nango

# Check environment
secret_key = os.environ.get("NANGO_SECRET_KEY")
if not secret_key:
    print("ERROR: NANGO_SECRET_KEY not set")
    print("Set it with: export NANGO_SECRET_KEY=your-key")
    return False

nango = Nango()

# Test connection
providers = nango.list_providers()

Technical Analysis

The installation instructions do not pin package versions or verify artifact integrity. Consequently, package managers resolve mutable versions from their configured registries at installation time. A future compromised, malicious, or unexpectedly incompatible package release could therefore execute code that was never reviewed as part of this Skill.

This is security-sensitive because scripts/test_connection.py imports and initializes the installed Python package in a process that contains NANGO_SECRET_KEY. The package is also expected to communicate with Nango and external services. Python modules may execute arbitrary code during import, while constructors and API methods provide additional execution opportunities.

The reviewed repository does not itself contain a malicious dependency or payload. The risk arises from unsafe dependency acquisition and execution practices.

Attack Path

  1. A user follows SKILL.md and runs pip install nango or npm install @nangohq/node-client.
  2. The package manager resolves the current package version from a configured registry without a lockfile, exact version, or integrity requirement defined by this project.
  3. An attacker compromises the relevant package, publishing account, registry, or dependency-re ...[truncated 1092 chars]
Remediation
View remediation

Remediation Suggestions

  1. Pin every direct dependency to an exact, reviewed version rather than installing the latest mutable release:

    bash
    pip install nango==REVIEWED_VERSION
    npm install @nangohq/node-client@REVIEWED_VERSION --save-exact
    
  2. Commit ecosystem-appropriate lockfiles, such as a hash-locked Python requirements file and package-lock.json, to preserve transitive dependency resolution.

  3. For Python, use hash verification:

    bash
    pip install --require-hashes -r requirements.txt
    
  4. Use package-manager integrity metadata and a trusted registry. Document the verified package owner, canonical package name, and expected registry to reduce dependency-confusion and typosquatting risk.

  5. Enable dependency vulnerability and provenance scanning in CI. Review upgrades before merging rather than automatically consuming new releases.

  6. Run the tester in an isolated virtual environment or container with minimal filesystem permissions and no unrelated environment variables.

  7. Inject only the credential required for the operation, use a least-privileged Nango key, and limit connected provider scopes.

  8. Restrict outbound network access where practical to approved Nango and provider endpoints, reducing the ability of compromised code to exfiltrate secrets.

  9. Rotate the Nango key immediately if an untrusted dependency version has already been executed with the key present.

Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (6)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
90% confidence
Finding

The skill includes code and setup instructions that rely on environment-stored secrets such as NANGO_SECRET_KEY, but it does not declare an explicit permissions or allowed-tools scope. In an agent ecosystem, missing scope boundaries can let the skill be invoked in contexts with broader-than-expected access to secrets or execution capabilities, increasing the chance of unintended credential exposure or unauthorized outbound actions.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The trigger phrases are very broad, including generic terms like 'api integration', 'connect api', and 'external api access', which can cause the skill to activate for many unrelated user requests. Because this skill facilitates OAuth flows, credential setup, and external API connectivity, accidental invocation could steer users into sensitive authentication workflows or expose them to unintended third-party data transfer behavior.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill explicitly covers OAuth handling, API keys, connection creation, and proxying requests to external services, but it does not prominently warn about secret handling, outbound data transmission, consent, or the risks of acting on behalf of user accounts. In this context, insufficient safety guidance is dangerous because agents may collect credentials, initiate external connections, or transmit sensitive data without clear user awareness or proper safeguards.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The Slack tool definition exposes a side-effecting action (sending external messages) without any indication that a caller should require explicit user confirmation or display a warning before execution. In an agent context, this increases the risk of unintended or prompt-induced actions that can spam channels, leak sensitive information, or impersonate user intent across an external service.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The GitHub issue creation tool enables a write operation against an external repository but does not signal that it should be gated by a user-facing confirmation step. In agent-driven workflows, this can lead to unauthorized or accidental issue creation, repository spam, disclosure of sensitive data in issue bodies, or abuse triggered by adversarial prompts.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
81% confidence
Finding

This markdown file documents an MCP tool named create_issue and earlier provider examples include write-capable endpoints such as createIssue, createPage, createCustomer, create, update, and createContact, but it does not warn that these operations can create or modify records in third-party services. For markdown files, SQP-2 applies when the skill description omits warnings about behaviors that could affect user data or system integrity.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.