Back to skill

Security audit

School Finder

Security checks for vulnerabilities and agentic risk

Overview

This school search skill is coherent and purpose-aligned, with the main cautions being external Camino AI API use and mutable install examples.

Before installing, prefer a pinned or versioned source if available, verify that the Camino AI package and publisher are the ones you intend to trust, and install only this skill rather than the full suite unless you need it. Searches may send precise locations or home-related queries to Camino AI, so use a dedicated API key and avoid submitting sensitive locations unless that is acceptable.

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 Installation Commands Create Supply-Chain Risk<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 12-24 **Vulnerability Type**: `T08: Insecure 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 school-finder ``` ```bash npx clawhub@latest install school-finder # or: pnpm dlx clawhub@latest install school-finder # or: bunx clawhub@latest install school-finder ``` ### Technical Analysis The documented installation commands execute third-party package tooling and install content from mutable sources. The GitHub commands do not pin the repository to a reviewed commit, while the package-manager commands explicitly use the mutable `latest` release tag. No checksum, lockfile, signature, exact version, or commit identifier is provided to verify that users receive the same content that was audited. The repository-wide installation command also installs all available skills rather than only the component required for the stated school-finder functionality. This unnecessarily expands the dependency, code, and instruction trust surface. This issue is contingent on an upstream package, repository, release process, or maintainer account being compromised. The audited project itself does not contain evidence that those upstream sources are currently malicious. ### Attack Path 1. An attacker compromises the upstream npm package, GitHub repository, release pipeline, or a maintainer account. 2. The attacker publishes malicious installation logic under the `latest` package tag or modifies the repository's default branch. 3. A user follows one of the documented installation commands. 4. `npx`, `pnpm dlx`, or `bunx` downloads and executes the mutable package, or the installer retrieves the modified repository content. 5. The malicious installer or installed skill executes with the privileges of the invok ...[truncated 873 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Pin package-manager tools to exact, reviewed versions instead of using `@latest`, for example: ```bash npx clawhub@<reviewed-version> install school-finder ``` 2. Pin GitHub installations to a reviewed immutable commit hash or signed release tag rather than the repository's default branch. 3. Publish and verify cryptographic checksums or package signatures where the installation mechanism supports them. 4. Recommend installation of only the `school-finder` skill by default. Present suite-wide installation as an explicit optional action with a clear explanation of the additional trust surface. 5. Maintain lockfiles or equivalent integrity metadata for installation tooling and review dependency changes before updating pinned versions. 6. Document the expected package publisher, repository owner, version, and commit so users can verify provenance before executing installation commands. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
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
89% confidence
Finding
The skill documents shell-based execution (`./scripts/school-finder.sh`, `curl`) but does not declare any tool scope such as `permissions` or `allowed-tools`. This creates an execution-trust gap where an agent may invoke shell capabilities without explicit least-privilege constraints, increasing the chance of unintended command execution or unsafe composition with other skills.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding
The installation command uses `npx skills add https://github.com/barneyjm/camino-skills` without pinning a version, tag, or commit. This allows future upstream changes or repository compromise to alter what gets installed, creating a supply-chain risk for anyone following the instructions.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding
This skill-specific install example still references the GitHub repo through `npx skills add` without any pinned revision. Users may believe they are installing a stable, reviewed skill, but the fetched content can change over time or be replaced if the source is compromised.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding
The command `npx clawhub@latest install school-finder` explicitly tracks the latest version, which is mutable and can introduce unreviewed or malicious updates. In security-sensitive agent ecosystems, using `latest` increases supply-chain exposure and undermines reproducibility.

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
60% 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 script sends user-supplied query parameters such as latitude, longitude, radius, and search terms to an external API via curl. While the code is functional, there is no user-facing notice at the point of execution explaining that provided location data will be transmitted to a third-party service.

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.

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.