Back to skill

Security audit

JIra and Confluence

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent Jira and Confluence CLI wrapper, but it asks users to globally install an unpinned third-party tool and give it an Atlassian API token with power to change organizational data.

Install only after verifying the npm package identity, source repository, publisher, and exact version. Use a dedicated Atlassian account or token with the narrowest project, space, and write permissions possible, and configure allowed commands/projects/spaces before using create, update, transition, comment, assign, label removal, or Confluence update commands.

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

Error
Location
SKILL.md:15
Finding
Unpinned Global Installation of a Privileged Third-Party CLI## Vulnerability Details **File Location**: `SKILL.md`, lines 15-18 **Vulnerability Type**: Unpinned third-party dependency with global installation and subsequent access to sensitive credentials **Risk Level**: High ```markdown ## Installation To install jira-ai, run: ```bash npm install -g jira-ai ``` ``` ### Technical Analysis The Skill instructs users to install the latest available version of the third-party `jira-ai` npm package globally. The installation does not specify an exact version, integrity hash, lockfile, verified publisher, or provenance requirement. Consequently, the package code executed by users can differ from the version originally reviewed. npm installation may also execute package lifecycle scripts, while the `-g` option makes the resulting executable available throughout the user's environment. The documentation subsequently directs users to provide this executable with a Jira email address and API token through an environment file. Network communication with the configured Atlassian host is necessary for the declared Jira and Confluence functionality. However, because the project contains only `SKILL.md` and does not include the CLI implementation, the audit cannot verify whether credentials are securely stored, restricted to the intended Atlassian host, or transmitted to additional endpoints. There is no direct evidence in the reviewed file that the package intentionally exfiltrates data, but the installation process creates a material supply-chain trust boundary. ### Attack Path 1. An attacker compromises the npm account, publication pipeline, or package associated with `jira-ai`, or causes users to receive an unsafe future release. 2. A user follows the documented command, which resolves and globally installs the current package version rather than a previously reviewed version. 3. Malicious code executes during an npm lifecycle hook or when the globally installed CLI is invoked. 4. The user creates a `.env` file containing ...[truncated 1270 chars]
Remediation
## Remediation Suggestions 1. Pin installation instructions to an exact, security-reviewed package version, for example `jira-ai@1.0.0`, rather than resolving the latest release. 2. Prefer a project-local, lockfile-backed installation over a global installation. Commit the lockfile after reviewing its resolved package source and integrity metadata. 3. Publish and document the authoritative npm package URL, expected publisher identity, source repository, release signatures, and provenance attestations. 4. Verify package integrity and provenance before installation. Use npm provenance and trusted publishing where supported. 5. Disable npm lifecycle scripts during installation where compatible, or explicitly document and review every required lifecycle script. 6. Review the actual CLI implementation and its complete dependency tree before granting it access to production credentials. 7. Use a dedicated Atlassian service account and a narrowly scoped token limited to the necessary projects, spaces, and operations. 8. Store credentials using a protected credential manager where possible. If an environment file is unavoidable, require restrictive file permissions, exclude it from version control, and securely remove it after authentication. 9. Document the expected outbound destinations and enforce an allowlist so credentials and organizational data can only be sent to the intended Atlassian host. 10. Add guidance for token rotation and immediate revocation if package integrity or credential confidentiality is suspected to have been compromised.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (3)

Credential Access

High
Category
Privilege Escalation
Content
JIRA_API_TOKEN=your-api-token
   ```

2. Authenticate using the .env file:
   ```bash
   jira-ai auth --from-file path/to/.env
   ```
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
JIRA_API_TOKEN=your-api-token
   ```

2. Authenticate using the .env file:
   ```bash
   jira-ai auth --from-file path/to/.env
   ```
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Missing User Warnings

Medium
Confidence
89% confidence
Finding
The skill advertises numerous state-changing operations across Jira and Confluence, including create, update, transition, comment, assign, and profile removal, plus credential import from a file, but it does not prominently warn that these actions can modify or delete organizational data. In an agent setting, this increases the risk of unintended writes or destructive changes because an operator may treat the skill as informational rather than operational.

Static analysis

No suspicious patterns detected.