Back to skill

Security audit

Places

Security checks for vulnerabilities and agentic risk

Overview

This place lookup skill does what it says, but users should know their place searches and setup email are sent to Camino's external service.

Install only from a source/version you trust, prefer pinned versions when available, and avoid sending home addresses, private destinations, or other sensitive location data unless you are comfortable sharing it with Camino. Store the API key only in the intended environment configuration and rotate it if exposed.

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 Installer Execution## Vulnerability Details **File Location**: `SKILL.md`, lines 13-25 **Vulnerability Type**: Supply-chain risk through mutable third-party installers **Risk Level**: Medium ```bash npx skills add https://github.com/barneyjm/camino-skills # Or install specific skills npx skills add https://github.com/barneyjm/camino-skills --skill places ``` **Via clawhub:** ```bash npx clawhub@latest install places # or: pnpm dlx clawhub@latest install places # or: bunx clawhub@latest install places ``` ### Technical Analysis The documented installation commands execute third-party npm packages and retrieve content from a GitHub repository without pinning them to immutable versions or commit hashes. In particular, the `@latest` tag is mutable, while the repository URL does not identify a reviewed commit. No integrity hash or signature-verification procedure is supplied. Consequently, the code executed when a user follows these instructions can differ from the code available at audit time. Although no malicious behavior was identified in the bundled `scripts/places.sh`, the installation path crosses an unverified supply-chain boundary. ### Attack Path 1. An attacker compromises the npm publisher account, the relevant package, the GitHub repository, or an upstream maintainer account. 2. The attacker publishes a malicious release under `latest` or modifies the repository branch resolved by the installer. 3. A user follows one of the documented `npx`, `pnpm dlx`, or `bunx` installation commands. 4. The package runner downloads and executes the mutable installer or repository content. 5. Malicious installation code runs with the permissions of the invoking user. ### Impact Assessment Successful exploitation could provide arbitrary code execution under the installing user's account. Depending on that account's permissions and local environment, an attacker could read or alter user-accessible files, access environment variables ...[truncated 226 chars]
Remediation
## Remediation Suggestions - Replace `@latest` with an explicitly reviewed package version. - Pin the GitHub source to a specific immutable commit hash rather than a mutable branch or repository default. - Use npm lockfiles and integrity metadata where the installation workflow supports them. - Publish expected checksums or signatures and document how users must verify downloaded artifacts before execution. - Prefer a trusted registry release with provenance attestations and reproducible build information. - Review dependency updates before changing pinned versions, and automate supply-chain scanning for newly approved releases. - Avoid recommending package-runner commands that immediately execute freshly downloaded code unless its identity and integrity are verified.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (11)

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
Skill reads from agent configuration directories (.claude/, .codex/, .gemini/). These directories may contain API keys, personal settings, and other credentials that the skill has no legitimate need to access.

Lp3

Medium
Category
MCP Least Privilege
Confidence
93% confidence
Finding
The skill documents shell-based installation and execution but does not declare an explicit tool scope such as permissions or allowed-tools. In an agent environment, missing tool restrictions can let the skill invoke broader shell capabilities than necessary, increasing the blast radius if the skill is misused or later modified.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding
The installation command uses `npx skills add https://github.com/barneyjm/camino-skills` without pinning a specific version, tag, or commit. This creates a supply-chain risk: future upstream changes or a compromised dependency source could alter what gets installed without the user's awareness.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding
The skill-specific install command still references an unpinned remote repository via `npx skills add ... --skill places`. Even when installing a single skill, the content can change over time, enabling silent supply-chain compromise.

Rp1

Medium
Category
MCP Rug Pull
Confidence
90% confidence
Finding
Using `npx clawhub@latest install places` pulls the latest package version at execution time, which is inherently mutable. If the package or its transitive dependencies are compromised, users may execute unexpected code during installation.

Missing User Warnings

Medium
Confidence
89% confidence
Finding
The skill is specifically designed to send user-supplied place queries and structured address data to an external API, but the documentation does not clearly warn about privacy implications or data sharing. Because location and address data can be sensitive personal information, omission of a clear disclosure can lead to unintended exposure.

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
88% confidence
Finding
The documented trial signup sends an email address to an external service to obtain an API key. This is an external transmission of user data and, without an explicit warning or consent framing, can expose personal information to a third party.

External Transmission

Medium
Category
Data Exfiltration
Content
curl -X POST -H "X-API-Key: $CAMINO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query": "Eiffel Tower", "include_photos": true}' \
  "https://api.getcamino.ai/search"
```

## Parameters
Confidence
94% confidence
Finding
The example API call transmits user-provided place queries and potentially sensitive location data to `https://api.getcamino.ai/search`. In the context of a geocoding skill, this is expected functionality, but it still constitutes third-party data transmission that should be clearly disclosed because addresses and place searches may reveal private habits or locations.

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
70% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
-H "Content-Type: application/json" \
    -H "X-Client: claude-code-skill" \
    -d "$INPUT" \
    "https://api.getcamino.ai/search" | jq .
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
-H "Content-Type: application/json" \
    -H "X-Client: claude-code-skill" \
    -d "$INPUT" \
    "https://api.getcamino.ai/search" | jq .
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.