Back to skill

Security audit

Shipcheck

Security checks for vulnerabilities and agentic risk

Overview

The skill has a legitimate leak-checking purpose, but it installs and runs an unpinned third-party npm scanner over sensitive local project contents.

Install only if you trust the @symbolstar/shipcheck npm package and are comfortable letting it read the target repository. Prefer a pinned, reviewed version, run it on an explicit path, and consider sandboxing or blocking outbound network access when scanning sensitive code.

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:21
Finding
Unpinned Third-Party Scanner Is Installed and Executed<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 11–27 and 54–60 **Vulnerability Type**: Unpinned external executable dependency **Risk Level**: Medium ### Vulnerable Code ```yaml metadata: { "openclaw": { "requires": { "bins": ["shipcheck"] }, "install": [ { "id": "node", "kind": "node", "package": "@symbolstar/shipcheck", "bins": ["shipcheck"], "label": "Install shipcheck CLI (npm)", }, ], }, } ``` ```bash npm i -g @symbolstar/shipcheck # or one-shot npx -y @symbolstar/shipcheck ``` ### Technical Analysis The skill delegates its effective behavior to the external npm package `@symbolstar/shipcheck`, but neither the OpenClaw installation metadata nor the documented commands pin an exact package version or verify an integrity digest. The `npx -y` command automatically resolves, downloads, and executes the package without interactive confirmation. Consequently, the code executed by the skill can change after this skill file has been reviewed. The audited project contains no scanner source code, package lockfile, vendored executable, checksum, or provenance information with which to verify the external implementation. This is particularly sensitive because the package is intended to inspect repositories for credentials, personal information, internal network details, and other confidential content. Although no malicious behavior or data exfiltration was demonstrated in the audited artifact, a compromised package release, maintainer account, registry response, or transitive dependency could abuse this access. ### Attack Path 1. An attacker compromises the npm package, its maintainer account, or a dependency used by a future package release. 2. The attacker publishes a malicious version under the existing `@symbolstar/shipcheck` package name. 3. A user invokes the skill and follows the ...[truncated 1280 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Pin `@symbolstar/shipcheck` to an exact, reviewed version in both the OpenClaw metadata and installation examples. 2. Replace the unversioned `npx -y @symbolstar/shipcheck` command with an exact version and avoid automatic, non-interactive execution for security-sensitive scanning. 3. Use a lockfile and verify npm integrity metadata or cryptographic checksums before execution. 4. Verify package provenance and signatures where supported by the package registry and deployment environment. 5. Include or vendor the scanner source in the reviewed artifact so its filesystem, process, and network behavior can be audited. 6. Document whether the scanner performs network requests or telemetry and provide an offline mode. 7. Execute the scanner with least privilege, restricted filesystem access, and blocked outbound network access where practical. 8. Periodically re-audit the pinned package and its transitive dependencies before upgrading. ]]>
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (3)

Vague Triggers

Medium
Confidence
90% confidence
Finding
The trigger phrases include very broad natural-language prompts like "check leaks" and "is it safe to share?", which can cause the skill to activate in contexts the user did not specifically intend. Unintended invocation is not as severe as code execution, but it can route unrelated content into a scanning workflow and may expose additional files or text to the tool unnecessarily. In this skill's context, that matters because it is designed to inspect local packages, directories, or repositories.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding
The skill instructs users to execute `npx -y @symbolstar/shipcheck` without pinning an exact package version. That allows whatever package version is current at execution time to run on the user's machine, creating a supply-chain risk if a malicious or compromised release is published later. Because this skill is specifically about pre-publish checking, users are likely to trust and run the command locally, which increases the danger.

Whitespace Padding

Medium
Category
Prompt Injection
Content
## What it catches

| Category   | Examples                                                                                                     | Severity   |
| ---------- | ------------------------------------------------------------------------------------------------------------ | ---------- |
| `secrets`  | AWS keys, GitHub PAT (`ghp_/gho_/ghu_/ghs_/ghr_`), OpenAI `sk-…`, Anthropic `sk-ant-…`, Google `AIza…`, Slack `xox[bp]-…`, JWT, PEM/SSH private keys (~30 rules) | `critical` |
| `identity` | Emails, China mobile + E.164, `/Users/<name>/` & `/home/<name>/` absolute paths, SSH fingerprint              | `high`     |
Confidence
70% confidence
Finding
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Static analysis

No suspicious patterns detected.