Back to skill

Security audit

Atlassian Cloud APIs + CLIs

Security checks for vulnerabilities and agentic risk

Overview

The skill is coherent and purpose-aligned for Atlassian automation, but it teaches high-impact admin/API workflows with credential examples that can expose tokens in shell history, logs, or URLs.

Review before installing. Use this only with least-privilege Atlassian credentials, prefer OAuth or first-party CLI login where possible, avoid pasting real tokens directly into shell commands or URLs, and verify any CLI downloads or npm installs instead of relying blindly on latest. Treat Cloud Admin, Statuspage, Opsgenie, Jira, Bitbucket, Trello, and Confluence writes as high-impact and require explicit target review before mutation.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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
Findings (2)

T08 · Insecure Dependencies

Warning
Location
auth-and-clis.md:29
Finding

Mutable and Unverified CLI Dependencies Can Execute Unreviewed Code

Content
View full analysis
Remediation
View remediation
" curl -fL -o acli "https:///${ACLI_VERSION}/acli" printf '%s %s\n' "" "acli" | shasum -a 256 --check - chmod 700 ./acli ./acli --version ``` The exact versioned URL, checksum, and signature procedure must come from verified Atlassian release documentation. ]]>

T09 · Insecure Skill Coding Practices

Warning
Location
jira-suite.md:15
Finding

API Credentials Are Placed in Shell Arguments and Request URLs

Content
View full analysis
.atlassian.net/rest/api/3/search?jql=project=TEAM&maxResults=50" \ -u ":" \ -H "Accept: application/json" ``` `jira-suite.md:32-34`: ```bash curl -s "https://.atlassian.net/rest/agile/1.0/board//sprint" \ -u ":" \ -H "Accept: application/json" ``` `jira-suite.md:49-51`: ```bash curl -s "https://.atlassian.net/rest/servicedeskapi/request" \ -u ":" \ -H "Accept: application/json" ``` `content-dev-collab.md:15-17`: ```bash curl -s "https://.atlassian.net/wiki/api/v2/pages?limit=25" \ -u ":" \ -H "Accept: application/json" ``` `content-dev-collab.md:37-39`: ```bash curl -s "https://api.bitbucket.org/2.0/repositories///pullrequests" \ -H "Authorization: Bearer " ``` `content-dev-collab.md:57`: ```bash curl -s "https://api.trello.com/1/boards//cards?key=&token=" ``` `admin-ops.md:18-20`: ```bash curl -s "https://api.atlassian.com/admin/v2/orgs//users/invite" \ -H "Authorization: Bearer " \ -H "Content-Type: application/json" ``` `admin-ops.md:56-58`: ```bash curl -s "https://api.statuspage.io/v1/pages//incidents" \ -H "Authorization: OAuth " ``` ### Technical Analysis The examples instruct users to substitute credentials directly into command-line arguments. Depending on the operating system, shell, execution environment, and monitoring configuration, those arguments may be exposed through: ...[truncated 2333 chars]
Remediation
View remediation
"$HOME/.atlassian-curl.conf" <<'EOF' user = ":" header = "Accept: application/json" EOF curl --config "$HOME/.atlassian-curl.conf" \ "https://.atlassian.net/rest/api/3/search?jql=project=TEAM&maxResults=50" ``` The configuration file must be protected with mode `600`, excluded from source control and backups where appropriate, and deleted when no longer required. A managed secret store is preferable to persistent plaintext configuration. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (35)

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · SKILL.md (reported line 51)May include surrounding context.

md
### 2. Ask for only the credential family the chosen surface needs
- Jira, Confluence, GraphQL, and Forge commonly use API token plus email, OAuth 2.0, or Forge auth.
- Bitbucket uses access tokens, app passwords, or OAuth.
- Trello uses key plus token, Statuspage uses an API token, Opsgenie uses an API key, and Cloud Admin uses an admin API key.

### 3. Prefer first-party surfaces before partner CLIs

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · auth-and-clis.md (reported line 8)May include surrounding context.

md
| Surface | Typical auth | Notes |
|--------|---------------|-------|
| Jira, Confluence, GraphQL | API token + email, OAuth 2.0, or Forge auth | Good default for tenant automation |
| Bitbucket | Access token, app password, or OAuth 2.0 | Different host and scopes from Jira/Confluence |
| Trello | Key + token | Usually passed as query params |
| Cloud Admin | Admin API key | Org-wide and higher risk |
| Compass | API token, OAuth 2.0, or Forge | Often combined with GraphQL |

Missing User Warnings

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The Trello example places the API key and token in the URL query string, which is especially risky because URLs are commonly logged by proxies, browsers, monitoring tools, and server access logs. The surrounding note that Trello auth typically lives in query params explains the API convention, but without an explicit warning it still teaches a high-leakage pattern.

Content

No source excerpt is available for this finding.

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · content-dev-collab.md (reported line 42)May include surrounding context.

md
| Jira Software | `https://{site}.atlassian.net/rest/agile/1.0` | Same as Jira Platform | `acli jira` for many Jira workflows | Boards, sprints, backlog, epics |
| Jira Service Management | `https://{site}.atlassian.net/rest/servicedeskapi` | API token + email or OAuth 2.0 | No dedicated first-party product CLI | Requests, customers, queues, organizations |
| Confluence Cloud | `https://{site}.atlassian.net/wiki/api/v2` | API token + email, OAuth 2.0, Forge | API first | Pages, spaces, comments, labels, attachments |
| Bitbucket Cloud | `https://api.bitbucket.org/2.0` | Access tokens, app passwords, OAuth 2.0 | API first | Repositories, pull requests, pipelines, workspaces |
| Trello | `https://api.trello.com/1` | Key + token | API first | Boards, lists, cards, checklists, webhooks |
| Cloud Admin | `https://api.atlassian.com/admin` | Admin API key | `acli admin` | Orgs, users, groups, policies, API access |
| Compass | `https://api.atlassian.com/compass/cloud/{cloudId}` and GraphQL | API token, OAuth 2.0, Forge | `forge` for app workflows | Components, scorecards, events, metrics |

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · product-map.md (reported line 9)May include surrounding context.

md
| Jira Software | `https://{site}.atlassian.net/rest/agile/1.0` | Same as Jira Platform | `acli jira` for many Jira workflows | Boards, sprints, backlog, epics |
| Jira Service Management | `https://{site}.atlassian.net/rest/servicedeskapi` | API token + email or OAuth 2.0 | No dedicated first-party product CLI | Requests, customers, queues, organizations |
| Confluence Cloud | `https://{site}.atlassian.net/wiki/api/v2` | API token + email, OAuth 2.0, Forge | API first | Pages, spaces, comments, labels, attachments |
| Bitbucket Cloud | `https://api.bitbucket.org/2.0` | Access tokens, app passwords, OAuth 2.0 | API first | Repositories, pull requests, pipelines, workspaces |
| Trello | `https://api.trello.com/1` | Key + token | API first | Boards, lists, cards, checklists, webhooks |
| Cloud Admin | `https://api.atlassian.com/admin` | Admin API key | `acli admin` | Orgs, users, groups, policies, API access |
| Compass | `https://api.atlassian.com/compass/cloud/{cloudId}` and GraphQL | API token, OAuth 2.0, Forge | `forge` for app workflows | Components, scorecards, events, metrics |

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
75% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

Scanner excerpt · SKILL.md (reported line 80)May include surrounding context.

md
## Common Traps

- Using Jira Platform endpoints for boards or sprints -> use Jira Software `/rest/agile/1.0`.
- Sending plain text into Jira rich fields without checking ADF support -> malformed descriptions or comments.
- Forgetting `/wiki` in Confluence Cloud URLs -> wrong host or 404.
- Assuming `acli` covers every Atlassian product -> today it is mostly Jira, Admin, and Rovo Dev.
- Mixing Bitbucket auth with Atlassian tenant auth -> valid token, wrong endpoint family.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
75% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

Scanner excerpt · SKILL.md (reported line 84)May include surrounding context.

md
## Common Traps

- Using Jira Platform endpoints for boards or sprints -> use Jira Software `/rest/agile/1.0`.
- Sending plain text into Jira rich fields without checking ADF support -> malformed descriptions or comments.
- Forgetting `/wiki` in Confluence Cloud URLs -> wrong host or 404.
- Assuming `acli` covers every Atlassian product -> today it is mostly Jira, Admin, and Rovo Dev.
- Mixing Bitbucket auth with Atlassian tenant auth -> valid token, wrong endpoint family.

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 98)May include surrounding context.

md
| `https://{site}.atlassian.net/wiki/api/v2/*` | Confluence page, space, comment, label, attachment metadata | Confluence Cloud |
| `https://api.atlassian.com/admin/*`, `https://api.atlassian.com/graphql`, and product GraphQL gateways | Organization, policy, graph, Compass, and app payloads | Cloud Admin, GraphQL, and Compass |
| `https://api.bitbucket.org/2.0/*` and `https://api.trello.com/1/*` | Repository, pull request, pipeline, board, list, card, and webhook data | Bitbucket Cloud and Trello |
| `https://api.statuspage.io/v1/*`, `https://api.opsgenie.com/*`, and `https://api.eu.opsgenie.com/*` | Incident, component, metric, alert, schedule, and on-call payloads | Statuspage and Opsgenie |

No other first-party Atlassian endpoints are targeted by default. If the user chooses a partner CLI, review that tool's own endpoints before using it.

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 98)May include surrounding context.

md
| `https://{site}.atlassian.net/wiki/api/v2/*` | Confluence page, space, comment, label, attachment metadata | Confluence Cloud |
| `https://api.atlassian.com/admin/*`, `https://api.atlassian.com/graphql`, and product GraphQL gateways | Organization, policy, graph, Compass, and app payloads | Cloud Admin, GraphQL, and Compass |
| `https://api.bitbucket.org/2.0/*` and `https://api.trello.com/1/*` | Repository, pull request, pipeline, board, list, card, and webhook data | Bitbucket Cloud and Trello |
| `https://api.statuspage.io/v1/*`, `https://api.opsgenie.com/*`, and `https://api.eu.opsgenie.com/*` | Incident, component, metric, alert, schedule, and on-call payloads | Statuspage and Opsgenie |

No other first-party Atlassian endpoints are targeted by default. If the user chooses a partner CLI, review that tool's own endpoints before using it.

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 96)May include surrounding context.

md
## Cloud Admin REST APIs

Base URL:
`https://api.atlassian.com/admin`

Families:
- organizations

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · admin-ops.md (reported line 6)May include surrounding context.

md
## Cloud Admin REST APIs

Base URL:
`https://api.atlassian.com/admin`

Families:
- organizations

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · admin-ops.md (reported line 18)May include surrounding context.

md
## Cloud Admin REST APIs

Base URL:
`https://api.atlassian.com/admin`

Families:
- organizations

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · admin-ops.md (reported line 31)May include surrounding context.

md
## Cloud Admin REST APIs

Base URL:
`https://api.atlassian.com/admin`

Families:
- organizations

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · admin-ops.md (reported line 34)May include surrounding context.

md
## Cloud Admin REST APIs

Base URL:
`https://api.atlassian.com/admin`

Families:
- organizations

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · product-map.md (reported line 11)May include surrounding context.

md
## Cloud Admin REST APIs

Base URL:
`https://api.atlassian.com/admin`

Families:
- organizations

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · product-map.md (reported line 12)May include surrounding context.

md
## Cloud Admin REST APIs

Base URL:
`https://api.atlassian.com/admin`

Families:
- organizations

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · product-map.md (reported line 15)May include surrounding context.

md
## Cloud Admin REST APIs

Base URL:
`https://api.atlassian.com/admin`

Families:
- organizations

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The Confluence example demonstrates inline basic-auth style credentials in a curl command without any warning about shell history, process listing, or accidental copy/paste into logs. While the placeholders are not real secrets, this normalizes unsafe credential handling and may lead users to expose API tokens in terminals, scripts, or screenshots.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The Bitbucket example uses a bearer token directly in the Authorization header example without any surrounding guidance on secret handling. Even with a placeholder token, the pattern can encourage users to embed live tokens in shell commands that may be captured by history, CI logs, or shared documentation.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The JSM example queries the request endpoint, which can involve customer and support data, yet the markdown provides no warning about handling potentially sensitive ticket contents or personal data. For markdown skills, behaviors affecting user data or privacy should be explicitly disclosed.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
85% confidence
Finding

The phrase 'Keep collecting defaults opportunistically' encourages ongoing, loosely scoped memory gathering without a clear minimization boundary. In a skill that handles enterprise SaaS environments, this can lead to over-collection of tenant details, IDs, operational preferences, or other sensitive contextual data beyond what the user explicitly intended to persist.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 97)May include surrounding context.

md
| Jira Software | `https://{site}.atlassian.net/rest/agile/1.0` | Same as Jira Platform | `acli jira` for many Jira workflows | Boards, sprints, backlog, epics |
| Jira Service Management | `https://{site}.atlassian.net/rest/servicedeskapi` | API token + email or OAuth 2.0 | No dedicated first-party product CLI | Requests, customers, queues, organizations |
| Confluence Cloud | `https://{site}.atlassian.net/wiki/api/v2` | API token + email, OAuth 2.0, Forge | API first | Pages, spaces, comments, labels, attachments |
| Bitbucket Cloud | `https://api.bitbucket.org/2.0` | Access tokens, app passwords, OAuth 2.0 | API first | Repositories, pull requests, pipelines, workspaces |
| Trello | `https://api.trello.com/1` | Key + token | API first | Boards, lists, cards, checklists, webhooks |
| Cloud Admin | `https://api.atlassian.com/admin` | Admin API key | `acli admin` | Orgs, users, groups, policies, API access |
| Compass | `https://api.atlassian.com/compass/cloud/{cloudId}` and GraphQL | API token, OAuth 2.0, Forge | `forge` for app workflows | Components, scorecards, events, metrics |

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · content-dev-collab.md (reported line 28)May include surrounding context.

md
| Jira Software | `https://{site}.atlassian.net/rest/agile/1.0` | Same as Jira Platform | `acli jira` for many Jira workflows | Boards, sprints, backlog, epics |
| Jira Service Management | `https://{site}.atlassian.net/rest/servicedeskapi` | API token + email or OAuth 2.0 | No dedicated first-party product CLI | Requests, customers, queues, organizations |
| Confluence Cloud | `https://{site}.atlassian.net/wiki/api/v2` | API token + email, OAuth 2.0, Forge | API first | Pages, spaces, comments, labels, attachments |
| Bitbucket Cloud | `https://api.bitbucket.org/2.0` | Access tokens, app passwords, OAuth 2.0 | API first | Repositories, pull requests, pipelines, workspaces |
| Trello | `https://api.trello.com/1` | Key + token | API first | Boards, lists, cards, checklists, webhooks |
| Cloud Admin | `https://api.atlassian.com/admin` | Admin API key | `acli admin` | Orgs, users, groups, policies, API access |
| Compass | `https://api.atlassian.com/compass/cloud/{cloudId}` and GraphQL | API token, OAuth 2.0, Forge | `forge` for app workflows | Components, scorecards, events, metrics |

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · content-dev-collab.md (reported line 37)May include surrounding context.

md
| Jira Software | `https://{site}.atlassian.net/rest/agile/1.0` | Same as Jira Platform | `acli jira` for many Jira workflows | Boards, sprints, backlog, epics |
| Jira Service Management | `https://{site}.atlassian.net/rest/servicedeskapi` | API token + email or OAuth 2.0 | No dedicated first-party product CLI | Requests, customers, queues, organizations |
| Confluence Cloud | `https://{site}.atlassian.net/wiki/api/v2` | API token + email, OAuth 2.0, Forge | API first | Pages, spaces, comments, labels, attachments |
| Bitbucket Cloud | `https://api.bitbucket.org/2.0` | Access tokens, app passwords, OAuth 2.0 | API first | Repositories, pull requests, pipelines, workspaces |
| Trello | `https://api.trello.com/1` | Key + token | API first | Boards, lists, cards, checklists, webhooks |
| Cloud Admin | `https://api.atlassian.com/admin` | Admin API key | `acli admin` | Orgs, users, groups, policies, API access |
| Compass | `https://api.atlassian.com/compass/cloud/{cloudId}` and GraphQL | API token, OAuth 2.0, Forge | `forge` for app workflows | Components, scorecards, events, metrics |

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · product-map.md (reported line 9)May include surrounding context.

md
| Jira Software | `https://{site}.atlassian.net/rest/agile/1.0` | Same as Jira Platform | `acli jira` for many Jira workflows | Boards, sprints, backlog, epics |
| Jira Service Management | `https://{site}.atlassian.net/rest/servicedeskapi` | API token + email or OAuth 2.0 | No dedicated first-party product CLI | Requests, customers, queues, organizations |
| Confluence Cloud | `https://{site}.atlassian.net/wiki/api/v2` | API token + email, OAuth 2.0, Forge | API first | Pages, spaces, comments, labels, attachments |
| Bitbucket Cloud | `https://api.bitbucket.org/2.0` | Access tokens, app passwords, OAuth 2.0 | API first | Repositories, pull requests, pipelines, workspaces |
| Trello | `https://api.trello.com/1` | Key + token | API first | Boards, lists, cards, checklists, webhooks |
| Cloud Admin | `https://api.atlassian.com/admin` | Admin API key | `acli admin` | Orgs, users, groups, policies, API access |
| Compass | `https://api.atlassian.com/compass/cloud/{cloudId}` and GraphQL | API token, OAuth 2.0, Forge | `forge` for app workflows | Components, scorecards, events, metrics |

Static analysis

No suspicious patterns detected.