Back to skill

Security audit

Notion Api Toolkit Free

Security checks for vulnerabilities and agentic risk

Overview

This Notion skill is mostly coherent, but it asks users to install and run an unpinned global CLI with Notion credentials and has overly broad triggers that include unsupported webhook use.

Review before installing. Use only for Notion-specific tasks, avoid webhook or generic system-integration requests, install the CLI in a contained environment if possible, prefer a pinned reviewed version, expose NOTION_TOOLKIT_API_KEY only to the command that needs it, and grant OAuth access only to the specific Notion pages or databases required.

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

Unpinned Third-Party CLI Is Installed Globally

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 157–162 and 350–354
Vulnerability Type: Unpinned globally installed dependency
Risk Level: Medium

Vulnerable Code

markdown
### Dependency Details

```bash
npm install -g notion-api-toolkit
text

The dependency table repeats the unsafe installation instruction:

```markdown
| Dependency | Type | Required | Installation |
|:------|------:|:------|:------|
| notion-api-toolkit CLI | Command-line tool | Yes | `npm install -g notion-api-toolkit` |

Technical Analysis

The Skill requires users or agents to install and execute the notion-api-toolkit npm package globally without specifying an exact version, integrity hash, verified publisher, source repository, or package-provenance check. Consequently, future executions can resolve to package contents that differ from those originally reviewed.

npm installation may execute package lifecycle scripts. A global installation exposes those scripts and the resulting executable to the permissions and accessible resources of the invoking user. The CLI is subsequently expected to receive NOTION_TOOLKIT_API_KEY and operate through an OAuth-authorized Notion connection, increasing the sensitivity of a supply-chain compromise.

The audit found no evidence that the package is currently malicious. The vulnerability is the unsafe and unverifiable dependency installation process.

Attack Path

  1. An attacker compromises the npm publisher account, package distribution channel, or a future package release.
  2. The attacker publishes a malicious version of notion-api-toolkit under the same package name.
  3. A user or agent follows the Skill instruction and runs npm install -g notion-api-toolkit.
  4. npm resolves the unpinned dependency to the attacker-controlled release.
  5. Malicious code executes through an installation lifecycle script or when the CLI is invoked.
  6. The compromised process reads resources available to the invoking acc ...[truncated 931 chars]
Remediation
View remediation

Remediation Suggestions

  1. Pin the dependency to a reviewed exact version rather than resolving the latest release:
    bash
    npm install --save-exact notion-api-toolkit@<reviewed-version>
    
  2. Prefer a project-local installation with a committed lockfile over a global installation.
  3. Verify npm provenance, publisher identity, package signatures where supported, and registry integrity metadata before installation.
  4. Document the authoritative source repository and release process so package contents can be compared with reviewed source.
  5. Run the CLI in a sandbox or container with minimal filesystem, network, and environment-variable access.
  6. Expose credentials only to the specific command that requires them; do not retain sensitive keys in a broad shell environment.
  7. Disable package lifecycle scripts during installation where operationally possible, then separately review any required setup:
    bash
    npm install --ignore-scripts --save-exact notion-api-toolkit@<reviewed-version>
    
  8. Grant the OAuth connection access only to the Notion resources required for the immediate task and rotate credentials if dependency compromise is suspected.
Vulnerability Patterns
  • 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
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (4)

Intent-Code Divergence

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The trigger condition says the skill should be used for webhook configuration, while the rest of the document states webhook subscriptions are not supported. This mismatch can cause the agent to invoke the skill in unsupported contexts, increasing the chance of unsafe fallback behavior, user confusion, or execution of adjacent commands not actually constrained by the intended Notion-only workflow.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
84% confidence
Finding

The visible skill name, summary, and the entire instructional content are presented in Chinese, with no statement that users may choose another language. For a general-purpose skill, this can violate language/locale policy when no opt-in or documented regional constraint is provided.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The manifest and capability tables describe this free Notion toolkit as focused on OAuth, query/search, basic page read/write, block management, and user info. However, the '结果处理与输出' section claims support for '导出/保存/转换操作', which expands the skill beyond the stated Notion integration scope and is not reflected elsewhere in the declared supported capabilities.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The invocation trigger is broadly phrased as applying to generic API integration, interface docking, webhook configuration, and system connection tasks, not specifically Notion operations. In an agent setting, overly broad routing criteria can cause the skill to activate for unrelated requests, expanding the attack surface and making unintended exec-backed actions more likely.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.