T08 · Insecure Dependencies
- Location
SKILL.md:12- Finding
Unpinned Third-Party Installation Chain
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill does what it says: it sends user-provided real-estate locations to Camino AI for neighborhood analysis, with some privacy and supply-chain cautions.
Install only if you are comfortable with Camino receiving the addresses or precise coordinates you evaluate, plus your email if you use the trial signup. Store the API key carefully, prefer a scoped environment variable or secret store over a broad agent settings file when possible, and use pinned install references if you need reproducible installs.
SKILL.md:12Unpinned Third-Party Installation Chain
The instructions tell users to place an API key into ~/.claude/settings.json, which is a sensitive agent configuration location. Modifying agent config directories increases risk because secrets may be broadly exposed to the agent runtime, inherited by other skills, or accidentally committed or disclosed through tooling.
Add your key to Claude Code:
Add to your ~/.claude/settings.json:
{
The skill documents shell-based execution paths but does not declare any explicit tool scope such as allowed-tools or permissions. That increases the chance an agent can invoke shell actions more broadly than users expect, reducing containment and making misuse or accidental command execution more likely.
Using npx skills add without a pinned version makes installation dependent on whatever package version is current at execution time. This creates a supply-chain risk where a compromised or breaking upstream release could change behavior or introduce malicious code during install.
The second npx skills add example also uses an unpinned package invocation. Reproducibility and trust are weakened because future installs may fetch different code than what was originally reviewed.
npx clawhub@latest explicitly tracks the latest release, which is inherently non-deterministic and raises supply-chain exposure. If the upstream package is compromised or publishes a faulty release, users may execute unreviewed code immediately.
The skill processes addresses and coordinates by sending them to Camino's external API, but the description does not clearly warn users that location data leaves the local environment. Since home and rental searches often involve sensitive residential locations, this omission can mislead users about privacy exposure.
The trial signup example sends a user email address to an external service. This is an external data transmission involving personal information, and without a prominent privacy notice it can expose users to unexpected disclosure or tracking.
Instant Trial (no signup required): Get a temporary API key with 25 calls:
curl -s -X POST -H "Content-Type: application/json" \
-d '{"email": "you@example.com"}' \
https://api.getcamino.ai/trial/start
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
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, ...}
The geocoding request sends a user-supplied address and API key to an external API. For a real-estate skill, addresses may correspond to homes, prospective residences, or other sensitive locations, so transmission to a third party has meaningful privacy implications.
# Step 1: Geocode the address
curl -H "X-API-Key: $CAMINO_API_KEY" \
"https://api.getcamino.ai/query?query=742+Evergreen+Terrace+Springfield&limit=1"
# Step 2: Get context with real estate focus
curl -X POST -H "X-API-Key: $CAMINO_API_KEY" \
The context request transmits precise coordinates, search radius, and real-estate-related context to an external service. Precise location combined with housing-interest context can reveal sensitive behavioral or residential information if mishandled or retained.
curl -X POST -H "X-API-Key: $CAMINO_API_KEY"
-H "Content-Type: application/json"
-d '{"location": {"lat": 40.7589, "lon": -73.9851}, "radius": 1000, "context": "real estate evaluation: schools, transit, grocery, parks, restaurants, walkability"}'
"https://api.getcamino.ai/context"
## Parameters
The script transmits a user-supplied street address to a third-party geocoding API without any explicit user-facing notice or consent step. Addresses and coordinates are sensitive location data, and in a real-estate evaluation skill this behavior is expected for functionality but still creates a privacy exposure because users may not realize their exact location is being sent off-platform.
The GET request sends the user-provided address to an external Camino endpoint for geocoding. A home or rental address is highly sensitive in this skill context, so transmitting it to a third party without visible warning increases privacy risk even if there is no obvious code injection or command execution issue.
GEOCODE_RESULT=$(curl -s -X GET \
-H "X-API-Key: $CAMINO_API_KEY" \
-H "X-Client: claude-code-skill" \
"https://api.getcamino.ai/query?query=${encoded_query}&limit=1")
# Extract lat/lon from first result
LAT=$(echo "$GEOCODE_RESULT" | jq -r '.results[0].lat // empty')
This POST request sends precise latitude/longitude and search radius derived from user input to an external service. Even though the transmission is core to the skill's purpose, it is still a true privacy/security concern because sensitive location information leaves the local environment and could be logged, retained, or correlated by the remote provider.
}')
# 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" \
This endpoint receives the built context payload containing the user's location and radius for neighborhood analysis. In the real-estate context, collecting nearby schools, parks, and walkability is legitimate, but the skill still exports sensitive location intelligence to an external API, which is a meaningful data exposure if users are not informed.
-H "Content-Type: application/json" \
-H "X-Client: claude-code-skill" \
-d "$CONTEXT_BODY" \
"https://api.getcamino.ai/context" | jq .