T08 · Insecure Dependencies
- Location
SKILL.md:14- Finding
Unpinned Third-Party npm CLI Dependency
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 14-20
Vulnerability Type: Unpinned third-party executable dependency
Risk Level: MediumVulnerable Code
json { "id": "npm", "kind": "npm", "package": "@clayhq/clay-cli", "bins": ["clay"], "label": "Install clay (npm)", },Technical Analysis
The installation configuration references
@clayhq/clay-cliwithout pinning a reviewed version or specifying an integrity hash. Consequently, installation may resolve to whatever package release is current at that time. The dependency's implementation is not included in the audited project, so its installation scripts and runtime behavior could not be verified.This CLI is expected to process OAuth authentication and sensitive personal information, including contacts, emails, events, and notes. An attacker who compromises the npm package, its publisher account, or a future release could introduce malicious installation or runtime behavior. This is a supply-chain exposure rather than evidence that the currently published package is malicious.
Attack Path
- An attacker compromises the npm package, its publisher account, or a future package release.
- The attacker publishes a malicious version under the legitimate package name.
- A user installs the Skill dependency without a pinned version or verified integrity value.
- npm resolves and installs the compromised release.
- Malicious lifecycle code may execute during installation, or malicious logic may run when the user invokes
clay. - The compromised process executes with the user's privileges and may access Clay credentials, contact data, or other files available to that account.
Impact Assessment
Successful exploitation could provide arbitrary code execution with the privileges of the user installing or running the CLI. The affected scope may include the documented Clay credential file at `~/.config/clay.jso ...[truncated 224 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin
@clayhq/clay-clito an exact, security-reviewed version rather than allowing unconstrained resolution. - Record and verify the package integrity hash through an appropriate lockfile or trusted installation mechanism.
- Verify the expected npm publisher, package provenance, signatures, and registry source before installation.
- Review the pinned package's source code and npm lifecycle scripts, especially code that accesses OAuth credentials or personal data.
- Disable npm lifecycle scripts during installation where operationally possible, or explicitly document and audit every required script.
- Establish a controlled dependency-update process that reviews new versions before changing the pin.
- Prefer a dependency distribution tied to a publicly auditable, immutable source revision.
- Run the CLI with least privilege and restrict access to
~/.config/clay.jsonusing owner-only filesystem permissions.
- Pin
