Back to skill

Security audit

Openclaw Skill Clawban

Security checks for vulnerabilities and agentic risk

Overview

This is a real Kanban integration, but it can read or change more project-management items than its assigned-only promise suggests.

Review this skill before installing. Use a dedicated least-privilege PM account or token limited to the exact repo, team, project, or board you want it to manage; do not enable the OpenClaw cron option until assigned-only filtering and automation behavior are acceptable; assume ticket titles, bodies, comments, and possibly internal comments can be shown to the agent; update the flagged npm dev dependencies before running tests or developer servers.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • 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)

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
scripts/linear_json.sh:54
Finding

Linear Adapter Exceeds the Assigned-to-Me Data Access Boundary

Content
View full analysis
" >&2 exit 1 fi # Note: Linear's GraphQL supports querying team by ID. gql "{ team(id: \"$team_id\") { issues(first: 250, filter: { state: { type: { nin: [\\\"completed\\\", \\\"canceled\\\"] } } }) { nodes { id title url updatedAt state { id name type } } } } }" \ | jq -c '{data:{issues:{nodes:(.data.team.issues.nodes // [])}}}' ;; issues-project) project_id="${1:-}" if [[ -z "$project_id" ]]; then echo "Usage: linear_json.sh issues-project " >&2 exit 1 fi gql "{ project(id: \"$project_id\") { issues(first: 250, filter: { state: { type: { nin: [\\\"completed\\\", \\\"canceled\\\"] } } }) { nodes { id title url updatedAt state { id name type } } } } }" \ | jq -c '{data:{issues:{nodes:(.data.project.issues.nodes // [])}}}' ;; ``` ### Technical Analysis The declared workflow boundary requires `next` and `autopilot-tick` to consider only work items assigned to the authenticated user. However, both Linear GraphQL queries filter exclusively on workflow state. They request up to 250 non-completed and non-canceled issues across the configured team or project without an assignee constraint. Consequently, `LinearAdapter.fetchSnapshot()` can receive issue metadata belonging to other users, including issue identifiers, titles, URLs, update timestamps, and workflow states. Calls such as setup validation, backlog selection, and autopilot processing invoke this snapshot logic. The authorization token is sent only to Linear's official HTTPS API, which is necessary for the integration. The vulnerability is therefore not credential exfiltration; it is a failure to enforce the narrower, docu ...[truncated 1655 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Memory PoisoningPersistent Context Injection, Context Window Stuffing, Memory Manipulation
  • Rogue AgentSelf-Modification, Session Persistence
Findings (33)

Known Vulnerable Dependency: vitest==2.1.9 — 2 advisory(ies): CVE-2026-47429 (When Vitest UI server is listening, arbitrary file can be read and executed); CVE-2026-84373 (Vitest: Path Traversal / Arbitrary File Read via @vitest/mocker Redirect Mock)

Critical
Category
Supply Chain
Confidence
90% confidence
Finding

Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: vitest==2.1.9 — 2 advisory(ies): CVE-2026-47429 (When Vitest UI server is listening, arbitrary file can be read and executed); CVE-2026-84373 (Vitest: Path Traversal / Arbitrary File Read via @vitest/mocker Redirect Mock)

Critical
Category
Supply Chain
Confidence
98% confidence
Finding

This manifest includes vitest 2.1.9, which is flagged with critical advisories involving arbitrary file read and code execution/path traversal in Vitest components. Even though Vitest is a devDependency, the risk becomes real whenever tests or the Vitest UI/server are run in developer workstations or CI, where sensitive source code, tokens, and build secrets may be accessible.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description describes a substantive Kanban workflow skill with integrations and operational verbs. The supplied code chunk does not implement any of that behavior; it merely configures Vitest to run Node-based tests from a specific path. This is a materially different primary purpose and provides none of the declared functional capabilities, so it is a clear mismatch.

Content

No source excerpt is available for this finding.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- `github.ts` (gh CLI)

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- `src/cli.ts` (provides `kanban-workflow <verb>`; see README for setup flags)

Known Vulnerable Dependency: nanoid==3.3.11 — 3 advisory(ies): CVE-2026-67214 (nanoid: non-secure generators can loop indefinitely with negative size); CVE-2026-67213 (nanoid: custom generators can loop indefinitely when size is zero); CVE-2026-73086 (nanoid: Integer Overflow or Wraparound)

High
Category
Supply Chain
Confidence
80% confidence
Finding

Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: postcss==8.5.6 — 4 advisory(ies): CVE-2026-45623 (PostCSS: Arbitrary file read and information disclosure via attacker-controlled ); CVE-2026-69153 (PostCSS: incomplete fix of GHSA-6g55-p6wh-862q — attacker-controlled sourceMappi); CVE-2026-41305 (PostCSS has XSS via Unescaped </style> in its CSS Stringify Output) +1 more

High
Category
Supply Chain
Confidence
80% confidence
Finding

Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: vite==5.4.21 — 3 advisory(ies): CVE-2026-39365 (Vite Vulnerable to Path Traversal in Optimized Deps `.map` Handling); CVE-2026-53571 (vite: `server.fs.deny` bypass on Windows alternate paths); CVE-2026-53632 (launch-editor: NTLMv2 hash disclosure via UNC path handling on Windows)

High
Category
Supply Chain
Confidence
80% confidence
Finding

Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.

Content

No source excerpt is available for this finding.

Memory Manipulation

High
Category
Memory Poisoning
Confidence
80% confidence
Finding

Skill manipulates agent memory, state, or stored context. Memory corruption can alter personality, override safety rules, or cause unpredictable behavior.

Content

Scanner excerpt · src/automation/progress_updates.ts (reported line 39)May include surrounding context.

ts
// Stop tracking work items that are no longer in progress.
  for (const id of Object.keys(state.lastAutoCommentAt)) {
    if (!inProgressSet.has(id)) delete state.lastAutoCommentAt[id];
  }

  const postedIds: string[] = [];

Self-Modification

High
Category
Rogue Agent
Confidence
85% confidence
Finding

Skill modifies its own code, configuration, or behavior at runtime. Self-modification enables an agent to escalate privileges, disable safety constraints, or install persistent backdoors.

Content

Scanner excerpt · tests/setup.test.ts (reported line 34)May include surrounding context.

ts
}

describe('setup', () => {
  it('requires --force to overwrite existing config', async () => {
    const fs = createMemoryFs({ 'config/kanban-workflow.json': '{"x":1}' });
    const validate = vi.fn(async () => undefined);

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The README says the skill can post an automatic progress update comment every 5 minutes, which is an external write action affecting project data. Although the document has a general security model section, this specific behavior is not accompanied by a direct warning that enabling it will create recurring comments on the user's behalf.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
88% confidence
Finding

The skill explicitly requires shell-capable binaries and environment-based authentication but does not declare any tool scope or allowed-tools boundary. This creates an authorization gap where an agent may invoke shell/env capabilities more broadly than the user expects, increasing the risk of unintended command execution or access to sensitive environment variables such as API keys.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill describes automatic remote comment posting every 5 minutes for in-progress tasks without an explicit warning or consent boundary. In an agentic environment, unattended remote writes can spam external systems, leak sensitive progress details, or create unintended audit/activity noise across connected PM platforms.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The requirements explicitly instruct the skill to retrieve and display private/internal comments where supported, but provide no warning, access guardrails, or least-privilege restrictions. In an agentic workflow, exposing private comments to the model or broader execution context can disclose sensitive internal discussions, credentials, incident details, or HR/legal notes that were not necessary for the immediate task.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The requirements mandate automatic progress comments every 5 minutes while a task is in progress, which creates an ongoing outbound data flow to external PM platforms without any explicit operator consent, visibility controls, or content minimization. This can leak sensitive implementation details, internal reasoning, or proprietary work status more broadly than intended, especially if the task body or comments contain confidential information.

Content

No source excerpt is available for this finding.

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 · scripts/linear_json.sh (reported line 17)May include surrounding context.

sh
#
# Requirements: LINEAR_API_KEY, curl, jq

API="https://api.linear.app/graphql"

if [[ -z "${LINEAR_API_KEY:-}" ]]; then
  echo "Error: LINEAR_API_KEY not set" >&2

External Transmission

Medium
Category
Data Exfiltration
Confidence
70% 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 · scripts/linear_json.sh (reported line 24)May include surrounding context.

sh
exit 1
fi

if ! command -v curl >/dev/null 2>&1; then
  echo "Error: curl not found" >&2
  exit 1
fi

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
82% confidence
Finding

The adapter invokes CLI commands that rely on sensitive environment variables documented in the file (PLANE_API_KEY, PLANE_WORKSPACE) and performs external service access, but there is no user-facing prompt, logging, or runtime disclosure around these actions. In code files, network or credential-backed operations should include some visible warning unless the disclosure exists elsewhere; this file itself provides only developer comments.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

This code executes plane issues update ... --state to change the state of a remote work item, which is a mutating operation affecting external user/project data. The file contains no visible confirmation prompt, print/log statement, or other user disclosure near the destructive or state-changing action.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The manifest describes a CLI-first kanban workflow skill with setup, verbs, polling/diffing foundations, and automation hooks. While automation hooks are in scope, directly creating a scheduled cron job by invoking an external openclaw process is an environment-modifying capability not clearly justified as necessary for managing kanban stages themselves.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The show() verb explicitly requests comments with includeInternal: true and returns them in the user-facing payload without any access-control check, redaction step, or disclosure boundary. In a PM integration, internal comments commonly contain sensitive operational details, private staff discussions, or security-relevant notes, so exposing them through a general-purpose skill can leak data to users or downstream agents that should only see public discussion.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

This markdown file states that setup writes config/kanban-workflow.json, but it does not include any warning or disclosure about modifying the user's workspace files. For markdown files, operations affecting user data or system state should be explicitly disclosed so users understand that running setup changes local configuration.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: @vitest/mocker==2.1.9 — 1 advisory(ies): CVE-2026-84373 (Vitest: Path Traversal / Arbitrary File Read via @vitest/mocker Redirect Mock)

Low
Category
Supply Chain
Confidence
60% confidence
Finding

Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: esbuild==0.21.5 — 1 advisory(ies): GHSA-67mh-4wv8-2f99 (esbuild enables any website to send any requests to the development server and r)

Low
Category
Supply Chain
Confidence
60% confidence
Finding

Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: esbuild==0.27.3 — 1 advisory(ies): GHSA-g7r4-m6w7-qqqr (esbuild allows arbitrary file read when running the development server on Window)

Low
Category
Supply Chain
Confidence
60% confidence
Finding

Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.