Back to skill

Security audit

Journey

Security checks for vulnerabilities and agentic risk

Overview

The skill is a disclosed Camino API wrapper for route planning, but users should treat waypoint and itinerary data as sensitive because it is sent to a third-party service.

Install only from a version or commit you trust, avoid submitting home/work/client or confidential itinerary details unless you accept Camino's data handling, and store CAMINO_API_KEY with the narrowest practical scope rather than sharing global agent settings broadly.

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:13
Finding
Unpinned Third-Party Installation Commands Enable Supply-Chain Compromise## Vulnerability Details **File Location**: `SKILL.md`, lines 13-25 **Vulnerability Type**: Unpinned and mutable third-party dependencies **Risk Level**: Medium The installation documentation directs users to execute third-party package runners using the mutable `latest` tag and to install code from a GitHub repository without pinning a reviewed commit. ### Vulnerable Code ```bash # Install all skills from repo npx skills add https://github.com/barneyjm/camino-skills # Or install specific skills npx skills add https://github.com/barneyjm/camino-skills --skill journey ``` ```bash npx clawhub@latest install journey # or: pnpm dlx clawhub@latest install journey # or: bunx clawhub@latest install journey ``` ### Technical Analysis The `npx`, `pnpm dlx`, and `bunx` commands download and execute packages from an external package registry. Using `clawhub@latest` permits the executed package version to change after this project has been reviewed. No cryptographic checksum, signature, or lockfile constrains the retrieved artifact. Likewise, the GitHub installation commands reference the repository's mutable default branch rather than a specific reviewed commit SHA or immutable release. Consequently, the code installed by these commands can differ from the version considered during this audit. This creates a supply-chain trust boundary in which compromise of the package publisher account, registry artifact, repository, or upstream maintainer can introduce arbitrary code into the installation process. ### Attack Path 1. An attacker compromises the relevant package publisher account, package registry artifact, GitHub repository, or upstream maintainer workflow. 2. The attacker publishes a malicious version under the `latest` tag or modifies the repository's mutable default branch. 3. A user follows the documented installation command. 4. The package runner retrieves the attacker-controlled version or repository content. 5. Installer logic, package lifecycle scrip ...[truncated 767 chars]
Remediation
## Remediation Suggestions 1. Replace `@latest` with a specific, reviewed package version, for example: ```bash npx clawhub@<reviewed-version> install journey ``` 2. Pin GitHub installations to a full reviewed commit SHA rather than the mutable default branch: ```bash npx skills add https://github.com/barneyjm/camino-skills.git#<full-commit-sha> --skill journey ``` 3. Publish and verify cryptographic checksums or signed provenance for downloaded releases and installer artifacts. 4. Use lockfiles and integrity metadata where the package manager supports them. 5. Review package lifecycle scripts and disable unnecessary lifecycle execution during installation when supported. 6. Document the exact trusted package version, repository commit, expected checksum, and verification procedure. 7. Run installation with a non-privileged account in an isolated environment, limiting access to secrets and sensitive files.
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
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (12)

Agent Config Directory Access

High
Category
Agent Snooping
Content
**Add your key to Claude Code:**

Add to your `~/.claude/settings.json`:

```json
{
Confidence
90% confidence
Finding
The skill instructs users to place an API key into `~/.claude/settings.json`, which is a sensitive agent configuration location. While common for setup, directing edits to a global config path can expand blast radius if mishandled, expose secrets to other skills or sessions, or normalize modification of privileged agent configuration.

Lp3

Medium
Category
MCP Least Privilege
Confidence
90% confidence
Finding
The skill documents shell-based usage and installation commands but does not declare any tool scope or allowed-tools boundary. In an agent environment, this can lead to over-broad shell access being implicitly available, increasing the chance that a model executes commands beyond the minimum needed for the skill.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding
Using `npx skills add https://github.com/barneyjm/camino-skills` without a pinned version or commit allows whatever code is currently served by that package/repository to be fetched at install time. This creates a supply-chain risk where upstream compromise or repository changes could silently alter the installed skill.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding
The skill-specific install command still references an unpinned remote GitHub source, so the exact content installed can change over time. In a security-sensitive agent environment, that weakens trust and makes review non-repeatable.

Rp1

Medium
Category
MCP Rug Pull
Confidence
88% confidence
Finding
`npx clawhub@latest install journey` explicitly opts into the latest package version, which is mutable and may introduce unreviewed behavior. This is a classic supply-chain exposure because installation behavior can change without user awareness.

External Transmission

Medium
Category
Data Exfiltration
Content
**Instant Trial (no signup required):** Get a temporary API key with 25 calls:

```bash
curl -s -X POST -H "Content-Type: application/json" \
  -d '{"email": "you@example.com"}' \
  https://api.getcamino.ai/trial/start
```
Confidence
84% confidence
Finding
The documented trial flow sends a user email address to an external service to obtain an API key. This is expected product behavior, but it is still a real data transmission that carries privacy implications and should be disclosed clearly in a skill consumed by autonomous agents.

External Transmission

Medium
Category
Data Exfiltration
Content
```bash
curl -s -X POST -H "Content-Type: application/json" \
  -d '{"email": "you@example.com"}' \
  https://api.getcamino.ai/trial/start
```

Returns: `{"api_key": "camino-xxx...", "calls_remaining": 25, ...}`
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The documentation encourages sending waypoint coordinates, purposes, transport preferences, and time constraints to an external API but does not clearly warn users that sensitive location and itinerary data leaves the local environment. For travel planning, this context materially raises privacy risk because precise movements and destinations can reveal home, work, habits, or meetings.

External Transmission

Medium
Category
Data Exfiltration
Content
],
    "constraints": {"transport": "foot"}
  }' \
  "https://api.getcamino.ai/journey"
```

## Parameters
Confidence
89% confidence
Finding
The core skill functionality sends waypoints and constraints to `https://api.getcamino.ai/journey`, which means user-provided location and itinerary data is transmitted off-box. In the context of journey planning, this is expected but still sensitive because it can expose movement patterns, meeting locations, and other personal data if users are not warned.

External Transmission

Medium
Category
Data Exfiltration
Content
fi

# Make API request
curl -s -X POST \
    -H "X-API-Key: $CAMINO_API_KEY" \
    -H "Content-Type: application/json" \
    -H "X-Client: claude-code-skill" \
Confidence
93% confidence
Finding
The script transmits user-supplied waypoint data and the API credential to an external third-party service via curl. This creates a data exfiltration and trust-boundary risk because potentially sensitive itinerary, location, and scheduling information leaves the local environment and is processed remotely.

External Transmission

Medium
Category
Data Exfiltration
Content
-H "Content-Type: application/json" \
    -H "X-Client: claude-code-skill" \
    -d "$INPUT" \
    "https://api.getcamino.ai/journey" | jq .
Confidence
95% confidence
Finding
The hardcoded external endpoint confirms that the skill always sends data to a remote service outside the local execution boundary. In the context of a journey planner, this is functionally expected, but it is still security-relevant because travel routes and waypoints can be highly sensitive and the transfer is mandatory for operation.

Context-Inappropriate Capability

Low
Confidence
79% confidence
Finding
The manifest describes a journey-planning skill focused on route optimization, feasibility, and time constraints, but does not mention authentication or secret access. While network access to a routing backend may be an expected implementation detail, explicitly requiring and reading a credential from the environment is an additional capability not described in the stated purpose.