T08 · Insecure Dependencies
- Location
SKILL.md:15- Finding
Unpinned Third-Party Package Download and Execution
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, line 15
Vulnerability Type: Unpinned npm dependency execution throughnpx
Risk Level: MediumVulnerable Code Snippet:
markdown - SDK: `import { VeezeeClient } from "@veezee/sdk"`; `const client = new VeezeeClient(); await client.mint();` mints and stores the free key the first time and reuses it on later runs. Platform methods live on the namespace (`client.linkedin.getProfile/searchPeople/getCompany/getPosts`); `client.resolveUrl` and `client.getUsage` are top-level. The client sends retries and Idempotency-Keys for you. The `veezee` CLI (`npx @veezee/sdk init`) mints and stores the same key.Technical Analysis
The instruction
npx @veezee/sdk initresolves and executes an npm package without specifying an exact version, lockfile, or integrity value. If the package is absent from the local cache,npxmay retrieve it from the configured npm registry and immediately execute its CLI entry point. npm installation lifecycle scripts or the invoked CLI can run code with the permissions of the user executing the command.Because the package version is not pinned, the code executed during a future Skill invocation may differ from the code available when the Skill was audited. A compromised publisher account, malicious package release, registry compromise, or compromised transitive dependency could therefore convert this documented setup operation into arbitrary local code execution.
No evidence establishes that the current
@veezee/sdkpackage is malicious. The confirmed issue is the unsafe, unpinned download-and-execute pattern and its resulting supply-chain exposure.Attack Path
- An attacker compromises the
@veezee/sdkpublishing account, its release pipeline, or a dependency incorporated into a later package release. - The attacker publishes a malicious package version under the expected package name.
- A user or agent follows the setup instructions and runs `npx ...[truncated 1273 chars]
- An attacker compromises the
- Remediation
View remediation
Remediation Suggestions
-
Replace the unversioned invocation with an exact, reviewed release, for example:
bash npx --yes @veezee/sdk@<audited-exact-version> init -
Record the dependency in a package manifest and lockfile rather than resolving an unspecified release during execution:
bash npm install --save-exact @veezee/sdk@<audited-exact-version> npm ci npx --no-install veezee init -
Commit and review the generated lockfile. In CI, use
npm ciso installation fails when the lockfile and manifest disagree. -
Verify package provenance, publisher identity, integrity metadata, release signatures where available, and transitive dependencies before approving a version.
-
Configure trusted registries explicitly and enforce organizational package allowlists where possible.
-
Disable lifecycle scripts during installation when they are not required, and review any scripts before enabling them:
bash npm ci --ignore-scripts -
Run initialization under a least-privileged account or isolated environment without unrelated credentials or sensitive filesystem access.
-
Prefer the documented direct API-key minting flow when CLI execution is unnecessary, reducing the need to download and execute third-party package code during setup.
-
