T08 · Insecure Dependencies
- Location
SKILL.md:29- Finding
Release binaries are downloaded and installed without enforced integrity verification
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This appears to be a legitimate Hookaido webhook-operations skill, but its installer and optional MCP setup make persistent local trust changes that deserve review before installation.
Install this only if you trust the Hookaido upstream binary source. Prefer the checksum-verifying fallback installer or another verified install path, keep MCP registration project-local when possible, start with the read-only MCP role, and enable queue mutations or DLQ deletion only for deliberate operational work after inspecting the affected items.
SKILL.md:29Release binaries are downloaded and installed without enforced integrity verification
scripts/publish.sh:27Publishing script downloads and executes a mutable npm CLI version
The declared purpose focuses on webhook operations, but the metadata and workflow also include downloading binaries from GitHub, extracting archives, installing executables into user-writable locations, and source-based installation via go install. This expands the trust and attack surface into supply-chain and local-execution territory without making that elevated behavior explicit in the primary description or permission model.
The declared purpose focuses on webhook operations, but the metadata and workflow also include downloading binaries from GitHub, extracting archives, installing executables into user-writable locations, and source-based installation via go install. This expands the trust and attack surface into supply-chain and local-execution territory without making that elevated behavior explicit in the primary description or permission model.
The skill instructs users to modify .claude/settings.json or ~/.claude/settings.json to register an MCP server. Accessing or changing agent config directories is sensitive because it can persist new command execution pathways, alter trust boundaries, and affect future sessions beyond the immediate task.
Add to .claude/settings.json (or ~/.claude/settings.json for global use):
{
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.
}
Use `~/.claude/settings.json` for global registration across all projects.
The skill clearly instructs use of shell-capable commands (bash, go install, curl, CLI execution) but does not declare an explicit tool scope such as permissions or allowed-tools. In an agent environment, missing scope boundaries can allow broader-than-expected command execution and make it harder to constrain or audit what the skill may do at runtime.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
5. Start runtime and verify health:
- `hookaido run --config ./Hookaidofile --db ./.data/hookaido.db`
- `hookaido run --config ./Hookaidofile --postgres-dsn "$HOOKAIDO_POSTGRES_DSN"` when `queue postgres` is selected.
- `curl http://127.0.0.1:2019/healthz?details=1`
6. Validate end-to-end behavior:
- ingress request accepted and queued
- consumer `dequeue`/`ack`/`nack`/`extend` path works (HTTP pull, batch `ack`/`nack`, plus gRPC pull when enabled)
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
# Dequeue
curl -sS -X POST "http://localhost:9443/pull/github/dequeue" \
-H "Authorization: Bearer $HOOKAIDO_PULL_TOKEN" \
-H "Content-Type: application/json" \
-d '{"batch":10,"lease_ttl":"30s","max_wait":"5s"}'
This markdown file includes a concrete command to delete DLQ items via the admin API, which can permanently remove queued data. While the section provides an audit-reason header, it does not explicitly warn the user that the operation is destructive or irreversible.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
archive="${tmpdir}/${artifact}"
echo "Downloading ${url}"
curl --proto '=https' --tlsv1.2 -fL "$url" -o "$archive"
actual_sha="$(normalize_sha256 "$(hash_file_sha256 "$archive")")"
if [[ "$actual_sha" != "$expected_sha" ]]; then
The script documents use of npx clawhub@latest login, which pulls and executes the latest published package version at runtime rather than a pinned, reviewed version. If the upstream package is compromised or a breaking/malicious release is published, a developer running the command could execute untrusted code during authentication or publishing workflows.
The npx clawhub@latest whoami example relies on an unpinned latest tag, which causes execution of whatever version is currently published under that package name. In a supply-chain compromise scenario, this could run attacker-controlled code on the maintainer workstation and expose credentials or tamper with the release process.
The publish script directly executes npx clawhub@latest publish, making the release path depend on a mutable remote package version at the time of execution. Because this is a publishing workflow for a webhook-related skill, compromise of the package could alter published artifacts, steal auth tokens, or perform arbitrary code execution on the maintainer machine.
No suspicious patterns detected.