Back to skill

Security audit

Query

Security checks for vulnerabilities and agentic risk

Overview

This is a straightforward Camino place-search helper with expected external API use, but users should treat location queries and the API key as sensitive.

Install from a reviewed or pinned source where possible. Use a revocable Camino API key, protect the local settings file that stores it, and avoid sending home, work, travel, or other sensitive location queries unless you are comfortable sharing them with Camino's API.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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
Findings (2)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:13
Finding
Unpinned Third-Party Installation Commands Permit Supply-Chain Code Substitution<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 13-23 **Vulnerability Type**: Unpinned and mutable third-party dependencies **Risk Level**: Medium ### 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 query ``` ```bash npx clawhub@latest install query # or: pnpm dlx clawhub@latest install query # or: bunx clawhub@latest install query ``` ### Technical Analysis The documented installation procedures execute third-party package runners and retrieve skill content from mutable sources. The GitHub commands do not pin the repository to a reviewed commit hash or signed release. The package-runner commands explicitly use `@latest`, causing installation behavior to depend on whichever package version is current at execution time. Consequently, the code installed by users can differ from the code that was audited. If a package registry account, package release process, source repository, or maintainer account is compromised, an attacker can replace or modify the retrieved installation payload. This is a supply-chain weakness rather than evidence that the currently reviewed files contain a malicious payload. ### Attack Path 1. An attacker compromises the relevant package registry account, GitHub repository, maintainer credentials, or release pipeline. 2. The attacker publishes a malicious version of the package or modifies the repository's default branch. 3. A user follows one of the documented installation commands. 4. `npx`, `pnpm dlx`, or `bunx` retrieves the current mutable package, or the installer retrieves the current repository head. 5. Malicious installation or skill code executes under the user's account. ### Impact Assessment Successful exploitation could allow arbitrary code execution with the privileges of the user performing the installation. Depending on that user's per ...[truncated 269 chars]
Remediation
<![CDATA[ ## Remediation Suggestions - Replace `@latest` with an explicitly reviewed package version. - Pin GitHub installations to a full immutable commit hash rather than the repository's default branch. - Publish and verify cryptographic integrity hashes for downloaded artifacts. - Prefer signed releases and document signature-verification procedures. - Use lockfiles where supported and review dependency changes before upgrading. - Avoid executing package-runner downloads directly in sensitive environments; retrieve and inspect the package before execution. - Run installation with the minimum necessary user privileges and without unrelated secrets in the environment. ]]>

T09 · Insecure Skill Coding Practices

Note
Location
SKILL.md:43
Finding
API Key Is Persisted in Plaintext User Configuration<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 43-51 **Vulnerability Type**: Plaintext storage of sensitive credentials **Risk Level**: Low ### Vulnerable Code ```json { "env": { "CAMINO_API_KEY": "your-api-key-here" } } ``` The documentation instructs the user to add this value to: ```text ~/.claude/settings.json ``` ### Technical Analysis The setup instructions direct users to persist `CAMINO_API_KEY` in a plaintext JSON configuration file. The script subsequently reads that value from the process environment and sends it in the `X-API-Key` header to the declared Camino HTTPS endpoint. Although no hardcoded production credential is present in the project, a real credential stored using the documented configuration is recoverable by any user or process capable of reading the settings file. It may also be exposed through insecure backups, accidental configuration sharing, support bundles, or source-control inclusion. ### Attack Path 1. A user stores a valid Camino API key in `~/.claude/settings.json` as instructed. 2. A local process, another account with file-read access, an insecure backup system, or an unintended recipient obtains the configuration file. 3. The attacker extracts the plaintext `CAMINO_API_KEY`. 4. The attacker submits requests to the Camino API using the stolen credential. 5. Unauthorized requests continue until the key expires, is exhausted, or is revoked. ### Impact Assessment Exploitation does not directly grant operating-system privilege escalation. It grants the effective API permissions and quota associated with the exposed Camino credential. Potential consequences include unauthorized API consumption, quota depletion, financial charges where applicable, and access to any Camino service capabilities authorized for that key. Scope is limited by the key's server-side permissions and lifetime. ]]>
Remediation
<![CDATA[ ## Remediation Suggestions - Prefer an operating-system keychain, credential manager, or dedicated secret-management service instead of a plaintext JSON file. - If file-based storage is unavoidable, require restrictive permissions such as owner-only read and write access. - Ensure the settings file is excluded from source control, shared archives, diagnostic bundles, and unencrypted backups. - Use short-lived, narrowly scoped, and revocable API credentials. - Rotate the credential immediately if the configuration file may have been disclosed. - Document key revocation and rotation procedures. - Avoid exposing the credential through command-line arguments, debug logs, or error output. ]]>
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 (10)

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
90% confidence
Finding
The skill documents shell-based installation and execution paths but does not declare any explicit tool scope or allowed-tools boundary. In an agent environment, missing scope increases the chance the skill can invoke shell actions more broadly than users expect, reducing containment and reviewability.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding
The installation command uses `npx skills` from a remote source without pinning an exact version or commit. This creates a supply-chain risk because future upstream changes or a compromised package could cause users to install or execute unintended code.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding
This command again relies on an unpinned `npx skills` invocation to fetch and install code, which exposes users to supply-chain drift and possible malicious upstream changes. In agent tooling contexts, install-time code execution is especially sensitive.

Rp1

Medium
Category
MCP Rug Pull
Confidence
93% confidence
Finding
Using `npx clawhub@latest` explicitly tracks the latest release, which is non-deterministic and increases exposure to malicious or breaking updates. If the package is compromised, users may execute attacker-controlled code during installation.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill encourages sending natural-language queries, coordinates, and possibly sensitive place preferences to a third-party API but does not warn users about privacy implications or data handling. Location queries can reveal home, work, travel patterns, or other sensitive context, making silent transmission riskier in this skill than in many generic API integrations.

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 skill instructs users to transmit an email address to an external service to obtain a trial API key. While this is expected product behavior, it is still an external data transmission that can expose personal information without any accompanying privacy disclosure or consent guidance.

External Transmission

Medium
Category
Data Exfiltration
Content
```bash
curl -H "X-API-Key: $CAMINO_API_KEY" \
  "https://api.getcamino.ai/query?query=coffee+shops+near+Times+Square&limit=5"
```

## Parameters
Confidence
90% confidence
Finding
The example sends user search terms and potentially sensitive location intent to an external API, authenticated with an API key, without warning about third-party processing. In a location-intelligence skill, these requests may reveal highly sensitive behavioral or geographic information, so the context makes the transmission meaningfully more dangerous.

External Transmission

Medium
Category
Data Exfiltration
Content
curl -s -X GET \
    -H "X-API-Key: $CAMINO_API_KEY" \
    -H "X-Client: claude-code-skill" \
    "https://api.getcamino.ai/query?${QUERY_STRING}" | 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
curl -s -X GET \
    -H "X-API-Key: $CAMINO_API_KEY" \
    -H "X-Client: claude-code-skill" \
    "https://api.getcamino.ai/query?${QUERY_STRING}" | 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.