T08 · Insecure Dependencies
- Location
SKILL.md:164- Finding
Unpinned Global npm Dependency Receives Access to Notion Credentials and Workspace Data
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 164–175; corroborating dependency declarations at lines 302 and 307–309
Vulnerability Type: Unpinned and unaudited third-party dependency with access to sensitive credentials
Risk Level: MediumVulnerable Code Snippet
bash npm install -g smart-crawlerbash export NOTION_TOKEN="your_notion_integration_token" smart-crawler sync --source apiThe dependency is also declared as mandatory:
markdown | smart-crawler CLI | Command-line tool | Required | `npm install -g smart-crawler` |Technical Analysis
The Skill directs users or an AI Agent to install
smart-crawlerglobally from npm without specifying an exact version, integrity hash, lockfile, verified publisher, or auditable source repository. Consequently, the dependency resolved at installation time can change after the Skill itself has been reviewed.npm installation may execute package lifecycle scripts with the privileges of the installing user. Global installation also places the package executable in a broadly accessible command location. The installed CLI is subsequently invoked with
NOTION_TOKENin its environment and is expected to process authorized Notion workspace content.Although
SKILL.mdclaims that the CLI performs read-only operations, this project contains no CLI implementation or enforcement mechanism with which to verify that claim. The audit found no direct evidence that the current package is malicious; the risk arises from the mutable, externally supplied dependency and its access to credentials and data.Attack Path
- An attacker compromises the npm package, its publisher account, or a future package release.
- A user or Agent follows the Skill instructions and runs
npm install -g smart-crawler. - npm downloads the attacker-controlled release and may execute malicious lifecycle scripts with the installing user's privileges.
...[truncated 1111 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin the dependency to a reviewed exact version rather than installing the mutable latest release.
- Provide and verify registry integrity metadata, a lockfile, and the expected package publisher identity.
- Link to the official source repository and use reproducible builds so the distributed package can be compared with audited source code.
- Avoid global installation. Install the dependency locally in an isolated project or container with a locked dependency graph.
- Disable npm lifecycle scripts during installation where compatible, and review any scripts before allowing them to execute.
- Run the CLI under a dedicated, unprivileged account or sandbox with restricted filesystem and network access.
- Grant the Notion integration only read access to the minimum required pages, and use a dedicated token that can be quickly rotated or revoked.
- Avoid broadly exporting the token into a long-lived shell environment. Provide it only to the reviewed process at invocation time through an appropriate secret-management mechanism.
- Document package provenance, supported versions, integrity verification procedures, and a response process for dependency compromise.
