Back to skill

Security audit

Webhook Relay

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly a disclosed Webhook Relay guide, but it includes under-warned instructions that can expose private services persistently and send a real webhook signing secret to an external HMAC endpoint.

Review carefully before installing. Use the skill only with non-sensitive demo endpoints unless you understand Webhook Relay's exposure model, avoid sending real webhook signing secrets to /v1/hmac, compute signatures locally instead, do not put real tunnel passwords directly on the command line, and avoid installing the relay as a background service unless you also know how to stop and remove it.

Vulnerability Patterns
  • System PersistenceInstalls backdoors, hooks, services, or scheduled tasks that survive the run
  • 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 (3)

other

Error
Location
SKILL.md:307
Finding

Webhook Signing Secret Transmitted to an External HMAC Service

Content
View full analysis
Remediation
View remediation

T06 · System Persistence

Error
Location
SKILL.md:135
Finding

Relay Agent Installed as a Persistent Operating-System Service

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:212
Finding

Tunnel Password Supplied Through Command-Line Arguments

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (7)

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
80% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · SKILL.md (reported line 314)May include surrounding context.

text

Bin endpoint reference: `POST /v1/bins` (create), `GET /v1/bins/{id}` (read +
requests), `PUT /v1/bins/{id}` (configure response), `DELETE /v1/bins/{id}`,
`(any) /v1/webhooks/{id}` (receiver), `GET /v1/events?stream={id}` (SSE),
`POST /v1/hmac`. Bodies are capped at 500 KB; the service is rate limited (429
when flooded).

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The tunnel section instructs users to expose local or internal services via a public hostname but does not prominently warn that this makes those services internet-reachable. In a security-sensitive skill, omission of an explicit warning can lead users to unintentionally publish development or private services without authentication, IP restrictions, or hardening.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 257)May include surrounding context.

md
echo "$B/v1/webhooks/$BIN"

# 3. Send a test request
curl -s -X POST "$B/v1/webhooks/$BIN" -H 'Content-Type: application/json' -d '{"hello":"world"}'

# 4. Read back every captured request as JSON
curl -s "$B/v1/bins/$BIN" | jq '.requests'

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 284)May include surrounding context.

and probabilistic failures (test a sender's retry logic):

bash
curl -s -X PUT "$B/v1/bins/$BIN" -H 'Content-Type: application/json' -d '{
  "id": "'"$BIN"'",
  "response": {
    "status": 201,

External Transmission

Medium
Category
Data Exfiltration
Confidence
82% confidence
Finding

The HMAC verification example sends both the webhook body and the secret to a third-party /v1/hmac service for computation. Even though presented as a convenience feature, transmitting shared secrets off-system expands trust boundaries and can expose credentials or sensitive payload data to the external service, logs, or intermediaries.

Content

Scanner excerpt · SKILL.md (reported line 307)May include surrounding context.

md
RAW=$(curl -s "$B/v1/bins/$BIN" | jq -r '.requests | sort_by(.receivedAt) | last | .body')
# Pipe base64 through `tr -d '\n'` — GNU base64 wraps at 76 cols and would
# embed newlines in the body, producing a wrong signature.
SIG=$(curl -s -X POST "$B/v1/hmac" -H 'Content-Type: application/json' -d "$(jq -nc \
  --arg s "$WEBHOOK_SECRET" --arg b "$(printf %s "$RAW" | base64 | tr -d '\n')" \
  '{algorithm:"sha256", secret:$s, body:$b}')" | jq -r .signature)
echo "expected: sha256=$SIG"

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 398)May include surrounding context.

md
- **Forwarding (internal):** start a throwaway server (`python3 -m http.server
  8080`), run `relay forward -b my-app http://localhost:8080`, then
  `curl -X POST https://my.webhookrelay.com/v1/webhooks/<id> -d '{"hi":1}'` and
  watch the agent log + local server receive it.
- **Tunnel:** open the printed `https://<host>` in a browser; requests appear in
  the agent's terminal. Connection errors usually mean the local service is down

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 403)May include surrounding context.

md
- **Tunnel:** open the printed `https://<host>` in a browser; requests appear in
  the agent's terminal. Connection errors usually mean the local service is down
  or `--rewrite-host-header` doesn't match what the app expects.
- **Bin:** `BIN=$(curl -s -X POST $B/v1/bins | jq -r .id); curl -s -X POST
  "$B/v1/webhooks/$BIN" -d '{"smoke":1}'; curl -s "$B/v1/bins/$BIN" | jq
  '.requests | length'` should be `>= 1`.