Back to skill

Security audit

Jira OpenClaw

Security checks for vulnerabilities and agentic risk

Overview

This Jira skill is coherent but should be reviewed because it gives an agent broad authenticated Jira API access and suggests automated Jira mutations without strong built-in limits.

Install only if you are comfortable giving the agent reusable Jira authority. Use a least-privileged Jira token, restrict it to specific projects, add endpoint and method allowlists before letting the agent call `jira.sh`, avoid automatic due-date mutation unless explicitly approved, and consider storing secrets in a proper secret manager instead of a sourced shell file.

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 (3)

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:43
Finding

Unrestricted Authenticated Jira API Helper

Content
View full analysis
[body]}" ENDPOINT="${2:?Usage: jira.sh [body]}" BODY="${3:-}" URL="${JIRA_URL%/}${ENDPOINT}" if [ -n "$BODY" ]; then curl -s --http1.1 -X "$METHOD" \ -u "${JIRA_EMAIL}:${JIRA_TOKEN}" \ -H "Content-Type: application/json" \ -d "$BODY" "$URL" else curl -s --http1.1 -X "$METHOD" \ -u "${JIRA_EMAIL}:${JIRA_TOKEN}" \ -H "Content-Type: application/json" "$URL" fi ``` ### Technical Analysis The helper accepts an arbitrary HTTP method, Jira endpoint, and request body from its caller. It then attaches the configured Jira credential to every request. No method allowlist, endpoint allowlist, mutation confirmation, or authorization policy is enforced by the script. Although `SKILL.md` recommends pairing the helper with `chainwatch`, that control is optional and external to the implementation. Quoting the variables prevents ordinary shell metacharacter injection through these arguments, but it does not restrict which authenticated Jira operations may be performed. Consequently, any agent or process allowed to invoke this helper receives the full effective Jira authority of the configured account rather than only the permissions required by the documented search, linking, and due-date workflows. ### Attack Path 1. A user configures `jira.env` with a Jira account or token that has read and write privileges. 2. The OpenClaw agent is permitted to invoke `jira.sh`. 3. Malicious issue content, prompt injection, or an erroneous agent decision causes the agent to select an unintended HTTP method, endpoint, or body. 4. The helper attaches `JIRA_EMAIL` and `JIRA_TOKEN` and sends the request to the configured Jira instance. 5. Jira executes the operation with all privileges granted to that creden ...[truncated 590 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:41
Finding

Credential File Is Evaluated as Shell Code

Content
View full analysis
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
SKILL.md:190
Finding

Unpinned External Skill Installation in Validation Instructions

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Rogue AgentSelf-Modification, Session Persistence
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (7)

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 29)May include surrounding context.

md
**Token types:**
- **API token** (id.atlassian.com → Security → API tokens) — works with Basic auth
- **PAT** (ATATT... prefix, Jira settings → Personal Access Tokens) — also works with Basic auth (`email:PAT`)

Both use the same script below. Bearer auth is NOT needed.

Credential Access

High
Category
Privilege Escalation
Confidence
82% confidence
Finding

The skill explicitly describes a design where the agent can trigger a shell script that sources persistent credentials and then performs authenticated API actions on behalf of the user. Even if the token is redacted from LLM context, the capability still grants indirect use of sensitive credentials and can enable unauthorized reads or modifications if endpoint access is not tightly constrained.

Content

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

The agent reads jira.env through pastewatch MCP — it sees __PW{CREDENTIAL_1}__ instead of the real token. The script runs credentials at the shell level (never in LLM context).

text
Agent calls exec → jira.sh sources .env → curl sends real token → response comes back
                    ↑ never in context      ↑ direct to Atlassian

Session Persistence

Medium
Category
Rogue Agent
Confidence
84% confidence
Finding

The skill instructs users to store long-lived Jira credentials in a persistent local file under the workspace, creating durable session/authentication material that can be reused by the agent. Persistent secrets increase blast radius if the workspace is later exposed, backed up insecurely, or accessed by other tools or users on the host.

Content

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

1. Credential Setup

bash
mkdir -p ~/.openclaw/workspace/.secrets
chmod 700 ~/.openclaw/workspace/.secrets
echo ".secrets/" >> ~/.openclaw/workspace/.gitignore

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
80% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

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

bash
mkdir -p ~/.openclaw/workspace/.secrets
chmod 700 ~/.openclaw/workspace/.secrets
echo ".secrets/" >> ~/.openclaw/workspace/.gitignore

cat > ~/.openclaw/workspace/.secrets/jira.env << 'EOF'

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
80% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

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

JIRA_URL=https://your-org.atlassian.net/ JIRA_EMAIL=your@email.com EOF chmod 600 ~/.openclaw/workspace/.secrets/jira.env

text

**Token types:**

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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 49)May include surrounding context.

md
URL="${JIRA_URL%/}${ENDPOINT}"

if [ -n "$BODY" ]; then
  curl -s --http1.1 -X "$METHOD" \
    -u "${JIRA_EMAIL}:${JIRA_TOKEN}" \
    -H "Content-Type: application/json" \
    -d "$BODY" "$URL"

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The documented 'Overdue Bumper' cron performs live state changes in Jira by automatically advancing due dates on unresolved tickets. This is dangerous because it can silently alter operational records, hide lateness, and interfere with workflows or compliance expectations if enabled without explicit warning, approval, and guardrails.

Content

No source excerpt is available for this finding.