T08 · Insecure Dependencies
- Location
SKILL.md:16- Finding
Unpinned Globally Installed CLI Handles a Sensitive Confluence API Token
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 16–38
Vulnerability Type: Unpinned third-party dependency with access to credentials
Risk Level: MediumVulnerable Code
markdown **Step 1: Install the CLI** ```bash npm install -g confluence-cliStep 2: Get an API token
- Go to https://id.atlassian.com/manage-profile/security/api-tokens
- Click "Create API token"
- Give it a label (e.g., "confluence-cli")
- Copy the token
Step 3: Configure the CLI
bash confluence initWhen prompted, enter:
- Domain:
yourcompany.atlassian.net(without https://) - Email: Your Atlassian account email
- API token: Paste the token from Step 2
text The skill metadata also declares the dependency without a version pin: ```yaml metadata: {"clawdbot":{"emoji":"📄","primaryEnv":"CONFLUENCE_TOKEN","requires":{"bins":["confluence"],"env":["CONFLUENCE_TOKEN"]},"install":[{"id":"npm","kind":"node","package":"confluence-cli","bins":["confluence"],"label":"Install confluence-cli (npm)"}]}}SKILL.mdline 129 additionally states that configuration is stored locally:markdown - Config is stored at `~/.confluence-cli/config.json`Technical Analysis
The skill directs users to install
confluence-cliglobally from npm without specifying an exact reviewed version or package integrity information. The installed executable is subsequently trusted with an Atlassian account email and Confluence API token.Because the version is not pinned, the effective code installed by this instruction can change after the skill has been reviewed. A compromised maintainer account, malicious future release, package ownership transfer, or registry-level supply-chain incident could cause users to install attacker-controlled code. A global npm installation may also run package lifecycle scripts with the privileges of the invoking user.
No evidence establishes t ...[truncated 1861 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin the dependency to an exact, reviewed version, such as
confluence-cli@x.y.z, in both the metadata and installation instructions. - Verify that the npm package is controlled by the expected publisher and corresponds to the repository referenced by the skill homepage.
- Document package provenance and integrity verification, such as npm provenance attestations, published checksums, or a reviewed lockfile.
- Prefer a project-local, lockfile-backed installation over a global installation to reduce system-wide exposure and improve reproducibility.
- Review package lifecycle scripts and transitive dependencies before approving a version.
- Use an Atlassian identity with only the Confluence permissions required for the intended operations. Avoid administrative or broadly privileged accounts.
- Document where and how the token is stored, ensure configuration files have restrictive filesystem permissions, and prevent tokens from entering logs, shell history, source control, or exported content.
- Provide token rotation and immediate revocation procedures for suspected compromise.
- Where supported, use short-lived or narrowly scoped credentials rather than a long-lived general-purpose API token.
- Pin the dependency to an exact, reviewed version, such as
