Back to skill

Security audit

Safety Checker

Security checks for vulnerabilities and agentic risk

Overview

This is a coherent location-safety API skill, but users should know it sends exact coordinates and setup email data to Camino and uses unpinned install commands.

Install only the safety-checker skill from a reviewed source if possible, avoid the all-skills install unless you need the broader suite, and understand that exact coordinates, search radius, context text, and trial setup email are sent to Camino's external service. Store the API key only where you are comfortable exposing it to Claude Code sessions.

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:12
Finding
Unpinned Third-Party Installers and Mutable Repository Source## Vulnerability Details **File Location**: `SKILL.md`, lines 12–24 **Vulnerability Type**: Supply-chain risk caused by unpinned executable dependencies and mutable source references **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 safety-checker ``` ```bash npx clawhub@latest install safety-checker # or: pnpm dlx clawhub@latest install safety-checker # or: bunx clawhub@latest install safety-checker ``` ### Technical Analysis The documented installation commands download and execute third-party npm tooling without pinning it to an immutable, reviewed version. The explicit `@latest` reference selects whichever `clawhub` release is current at installation time. The unversioned `skills` package similarly allows the npm registry to determine the executed version. The GitHub installation source references a mutable repository rather than a reviewed commit SHA or cryptographically verified release artifact. Consequently, the code installed by these commands can change after this audit without any modification to the audited project. Package runners such as `npx`, `pnpm dlx`, and `bunx` may execute downloaded package code and lifecycle behavior under the privileges of the invoking user. Installing every companion skill also unnecessarily increases the amount of third-party code trusted by the user. ### Attack Path 1. An attacker compromises the publisher account, npm package, GitHub repository, release process, or another relevant supply-chain component. 2. The attacker publishes a malicious package version or modifies the mutable repository content. 3. A user follows the installation instructions in `SKILL.md`. 4. The package runner retrieves the current unpinned dependency or repository state. 5. Malicious installer, lifecycle ...[truncated 775 chars]
Remediation
## Remediation Suggestions 1. Pin npm tools to exact, reviewed versions instead of using unversioned packages or `@latest`. 2. Commit and verify package-manager lockfiles where installation occurs, and enforce registry integrity hashes. 3. Reference the GitHub repository using a reviewed commit SHA rather than its mutable default branch. 4. Prefer signed, checksummed release artifacts and document how users can verify signatures or hashes before installation. 5. Recommend installing only the required `safety-checker` skill rather than all companion skills. 6. Run installation in a least-privileged, isolated environment without unnecessary credentials or access to sensitive files. 7. Establish a dependency-review process for version updates, including publisher verification and inspection of package lifecycle scripts.
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 (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 modify `~/.claude/settings.json`, which is a sensitive agent configuration location. While adding an API key there is common, directing users to edit agent config increases risk because mistakes or future malicious modifications in similar instructions could alter trusted runtime behavior or expose secrets broadly to other skills.

Lp3

Medium
Category
MCP Least Privilege
Confidence
90% confidence
Finding
The skill documents shell-based installation and execution but does not declare any explicit tool scope such as allowed-tools or permissions. That makes the skill's operational capabilities less transparent to the agent/runtime and can lead to overbroad shell access being granted implicitly when users run installation or helper scripts.

Rp1

Medium
Category
MCP Rug Pull
Confidence
84% confidence
Finding
The installation command uses `npx skills add` against a remote GitHub repository without pinning a specific version, tag, or commit. This creates a supply-chain risk because future upstream changes could alter what gets installed, including malicious or compromised content.

Rp1

Medium
Category
MCP Rug Pull
Confidence
84% confidence
Finding
The skill-specific `npx skills add` command still references an unpinned remote repository, so the installed content may change over time. An attacker controlling or compromising the upstream source could deliver modified skill definitions or scripts to users.

Rp1

Medium
Category
MCP Rug Pull
Confidence
80% confidence
Finding
`npx clawhub@latest install safety-checker` uses the moving `latest` tag, which is not reproducible and may fetch a different package version in the future. If the package or distribution channel is compromised, users may execute unreviewed code or install altered skill content.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
This skill's core function requires transmitting precise latitude/longitude to a third-party API, but the documentation does not clearly warn users that sensitive location data leaves the local environment. In a safety-oriented context, location can be especially sensitive because it may reveal where a user lives, stays, or travels at night.

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
86% confidence
Finding
The documented trial setup sends a user email address to an external service to obtain an API key. This is a real external data transmission and should be treated as privacy-relevant, especially since users may not realize they are disclosing personal information to a third party during setup.

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.

External Transmission

Medium
Category
Data Exfiltration
Content
curl -X POST -H "X-API-Key: $CAMINO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"location": {"lat": 40.7506, "lon": -73.9935}, "radius": 500, "context": "late night safety: 24-hour businesses, transit, police, hospitals"}' \
  "https://api.getcamino.ai/context"
```

## Parameters
Confidence
95% confidence
Finding
The usage example explicitly posts precise coordinates and contextual safety information to an external API. In this skill's context, that is expected functionality, but it still creates a meaningful privacy and surveillance risk because it can disclose a user's exact whereabouts and movement-related intent.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The script transmits precise latitude/longitude and radius to a third-party API, but provides no user-facing disclosure, consent prompt, or indication that sensitive location data leaves the local environment. Because this skill is explicitly marketed for safety use, users may reasonably assume it performs a local lookup, making the undisclosed exfiltration of precise location data a real privacy risk.

External Transmission

Medium
Category
Data Exfiltration
Content
}')

# Make context 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
91% confidence
Finding
This curl invocation performs the actual outbound transmission of user-supplied location data and the API key to an external service. External transmission is expected for this skill's function, but it remains a true security/privacy concern because sensitive geolocation is sent off-host without any warning, consent flow, or visible safeguards beyond HTTPS.

External Transmission

Medium
Category
Data Exfiltration
Content
-H "Content-Type: application/json" \
    -H "X-Client: claude-code-skill" \
    -d "$CONTEXT_BODY" \
    "https://api.getcamino.ai/context" | jq .
Confidence
89% confidence
Finding
The hardcoded external endpoint confirms that the skill sends user location data to a third-party service outside the user's environment. In a location-safety skill, the sensitivity of the data is elevated because users may query their current whereabouts at night, which can reveal routines or vulnerable situations if mishandled.