Back to skill

Security audit

Linear Feedback Triage

Security checks for vulnerabilities and agentic risk

Overview

This skill is purpose-built for Linear feedback triage, but it asks the agent to run an unpinned npm tool that can read and modify business tickets.

Review before installing. The Linear workflow itself is disclosed and coherent, but you should only use this in an environment where `mcporter` is pinned or preinstalled from a trusted source, Linear credentials are least-privilege, and write operations require clear user confirmation.

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

Warning
Location
SKILL.md:14
Finding

Unpinned npm Package Is Automatically Downloaded and Executed

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 14–25
Vulnerability Type: Unpinned third-party dependency execution
Risk Level: Medium

Vulnerable Code

markdown
1. Use `exec` with `npx -y mcporter ...` from `/Users/claw/.openclaw/workspace`.
2. Query the Linear MCP server configured in `config/mcporter.json`.
3. Prefer read-only queries first.
4. Summarize findings before proposing writes.
5. Only mutate Linear when the user clearly asks, or when the workflow explicitly calls for it.

Useful commands:

```bash
cd /Users/claw/.openclaw/workspace && npx -y mcporter call linear.list_issues team=FB limit=10
cd /Users/claw/.openclaw/workspace && npx -y mcporter call linear.get_issue id=FB-12345
cd /Users/claw/.openclaw/workspace && npx -y mcporter call linear.list_issue_statuses team=FB
cd /Users/claw/.openclaw/workspace && npx -y mcporter call linear.list_issue_labels team=FB
text

The same unsafe invocation pattern is also used for write operations at `SKILL.md`, lines 126–134:

```markdown
## Mutation commands

Only use these when needed:

```bash
cd /Users/claw/.openclaw/workspace && npx -y mcporter call linear.save_issue id=FB-12345 state=处理中
cd /Users/claw/.openclaw/workspace && npx -y mcporter call linear.save_issue id=FB-12345 labels='["会员支付","Android"]'
cd /Users/claw/.openclaw/workspace && npx -y mcporter call linear.save_comment issueId=FB-12345 body='处理中,已复现。'
text

### Technical Analysis

The skill instructs the agent to run `npx -y mcporter` without specifying a reviewed package version. If the package is absent locally, `npx` can retrieve it from the configured npm registry and execute it immediately. The `-y` option suppresses the normal installation confirmation, eliminating an opportunity to inspect or reject an unexpected package.

Consequently, the code that executes during a skill invocation is 
...[truncated 2269 chars]
Remediation
View remediation

Remediation Suggestions

  1. Pin mcporter to a specific, reviewed version rather than allowing npm to resolve the latest release:

    bash
    npx --no-install mcporter ...
    

    Use this only after installing an explicitly pinned dependency through the project's package manifest and lockfile.

  2. Add the reviewed package version to package.json and commit a lockfile containing npm integrity hashes. Install dependencies with:

    bash
    npm ci --ignore-scripts
    

    If lifecycle scripts are genuinely required, review them before enabling them.

  3. Invoke the trusted local binary instead of permitting automatic downloads:

    bash
    ./node_modules/.bin/mcporter call linear.list_issues team=FB limit=10
    
  4. Configure npm to use an approved registry and enforce dependency provenance or integrity verification where supported.

  5. Run the MCP client in a sandbox with restricted filesystem and network access. Do not expose unrelated secrets or credentials to its process environment.

  6. Grant the Linear integration only the minimum required scopes. Prefer separate read-only and write-capable credentials so ordinary triage queries cannot mutate workspace data.

  7. Require explicit approval immediately before write operations and validate the intended issue identifier, state, labels, and comment content.

  8. Periodically review the pinned package and its transitive dependencies before upgrading. Apply version changes through a controlled dependency-review process rather than automatic resolution.

Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (9)

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The skill repeatedly requires use of Chinese labels, statuses, queries, and reply conventions such as 用户反馈, 会员支付, 待处理, and @tidebot reply text, but it does not state that the skill is intentionally limited to a Chinese-language workflow or offer an opt-in language choice. This can violate a language/locale policy because the skill implicitly forces a specific locale for interaction and outputs.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
96% confidence
Finding

The skill repeatedly instructs the agent to run npx -y mcporter without pinning an exact package version or integrity hash. This allows whatever version is current in the registry at execution time to be fetched and executed, creating a supply-chain remote code execution risk if the package is compromised, hijacked, or unexpectedly changed.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
96% confidence
Finding

This command fetches and runs mcporter via npx without a pinned version, so the executed code is not stable or auditable. In a workflow that accesses Linear and runs from a local workspace, this increases the chance of arbitrary code execution through a malicious or altered package release.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
96% confidence
Finding

Using npx -y mcporter here causes the agent to trust the latest registry state at runtime rather than a vetted artifact. If the package or one of its transitive dependencies is compromised, the skill could execute attacker-controlled code with the agent's local permissions and access to configured MCP resources.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
96% confidence
Finding

The skill's example command executes an unpinned npm package directly from the network, which is a classic software supply-chain weakness. Because the package is used to query external services and runs from a user workspace, compromise could expose tokens, local files, or enable unauthorized actions.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
96% confidence
Finding

This command pattern again relies on npx to download and run mcporter without version pinning or integrity constraints. That makes the behavior non-deterministic and exposes the agent to package substitution or malicious updates that could run arbitrary code.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
96% confidence
Finding

The mutation example uses the same unpinned npx -y mcporter pattern, but in a write-capable context. That is especially risky because a compromised package could both execute arbitrary code and abuse Linear write access to alter issues, comments, or workflow state.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
96% confidence
Finding

This unpinned runtime package execution occurs in a command that modifies issue labels, increasing the blast radius beyond local code execution to business-data tampering. The skill context makes it more dangerous because the tool is explicitly authorized to change records in an operational ticketing system.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
97% confidence
Finding

Here the skill uses an unpinned package in a command that can post comments to Linear, combining supply-chain execution risk with external write actions. A malicious package version could misuse credentials, inject misleading comments, or pivot to other local resources available to the agent.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.