Back to skill

Security audit

Uptime Monitor

Security checks for vulnerabilities and agentic risk

Overview

This uptime-monitoring skill does what it says, with expected network checks and optional alerts, but users should only monitor trusted URLs and understand that alerts send service details externally.

Install only if you are comfortable with a shell-based monitor that can make outbound requests from your machine. Use it with trusted URLs, avoid internal or sensitive endpoints unless that is intentional, and configure webhook/email alerts only to destinations you control because alert payloads include operational details. Treat reports and logs as operational output, not as tamper-resistant audit records.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • 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 (2)

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
scripts/check.sh:7
Finding

Unrestricted URL Checking Enables Server-Side Request Forgery

Content
View full analysis
}" CURL_OUTPUT=$(curl --silent --show-error --max-time 10 \ --write-out "%{http_code}|%{time_total}" \ --output /dev/null \ "$URL" 2>&1) ``` ### Technical Analysis The script accepts an arbitrary URL and passes it directly to `curl` without validating the URL scheme, hostname, resolved IP address, destination port, or network range. An attacker who can influence the URL submitted to this Skill can cause the host running the Skill to initiate requests to destinations reachable from its network context. Potential destinations include: - Loopback services such as `127.0.0.1` and `::1` - Private RFC1918 networks - Link-local addresses - Cloud instance metadata endpoints such as `169.254.169.254` - Internal administrative or monitoring services - Non-HTTP protocols supported by the installed version of `curl` The response body is discarded, which limits direct data extraction. However, the returned HTTP status, request success, error state, and timing still provide a blind SSRF and internal service-discovery channel. Some reachable services may also perform state-changing actions in response to a request. ### Attack Path 1. An attacker causes the Agent or another caller to invoke `check.sh` with an attacker-selected URL. 2. The attacker supplies an internal destination, such as a loopback address, private-network host, or cloud metadata endpoint. 3. `curl` connects to that destination using the network privileges of the machine running the Skill. 4. The script exposes success, failure, status code, and timing information through its output and status log. 5. The attacker repeats requests against different hosts or ports to infer internal network topology and service availability. 6. If a reachable endpoint performs an action thr ...[truncated 683 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/alert.sh:18
Finding

Unescaped Input Enables Webhook Payload, Log, and Report Injection

Content
View full analysis
> "$LOG_DIR/alerts.log" ``` ```bash echo "$(date -u +%Y-%m-%dT%H:%M:%SZ)|$URL|FAIL|000|$curl_exit" >> "$LOG_DIR/status.log" echo "$(date -u +%Y-%m-%dT%H:%M:%SZ)|$URL|OK|$status_code|${time_total}s" >> "$LOG_DIR/status.log" echo "$(date -u +%Y-%m-%dT%H:%M:%SZ)|$URL|FAIL|$status_code|http_error" >> "$LOG_DIR/status.log" ``` The report script subsequently interprets those values using word splitting and regular expressions: ```bash urls=$(cut -d'|' -f2 "$LOG_FILE" | sort -u) for url in $urls; do # Count checks for this URL checks=$(grep "|${url}|" "$LOG_FILE" | grep -v "^${cutoff_date}" | wc -l) up_checks=$(grep "|${url}|OK|" "$LOG_FILE" | grep -v "^${cutoff_date}" | wc -l) if [ "$checks" -gt 0 ]; then uptime_pct=$(echo "scale=2; ($up_checks / $checks) * 100" | bc 2>/dev/null || echo "N/A") # Determine status emoji if command -v bc &>/dev/null; then if [ "$uptime_pct" = "100.00" ]; then status="✅" elif (( $(echo "$uptime_pct >= 99" ...[truncated 2722 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • 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 (4)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
96% confidence
Finding

The skill advertises shell-based behavior via documented scripts and required binaries, but it does not declare any explicit tool scope or permissions boundary. This increases the chance of overbroad execution in an agent environment, making it harder to constrain what commands the skill may run or access.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The description and usage language are broad enough that an agent may invoke this skill for many generic website or service-health requests, not just narrowly defined uptime checks. Overbroad invocation can cause unintended network access, repeated monitoring behavior, or triggering of alerting flows when the user did not explicitly request those side effects.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill supports sending alerts to webhook and email destinations but does not clearly warn that monitored URLs, status codes, timing data, and failure details may be transmitted to third-party services. In practice, this can leak internal service names, endpoint structure, outage information, or operational metadata outside the user's environment.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
70% 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 · scripts/alert.sh (reported line 39)May include surrounding context.

sh
# Send webhook alert if configured
if [ -n "$WEBHOOK_URL" ]; then
  payload=$(build_webhook_payload)
  response=$(curl --silent --max-time 10 \
    -H "Content-Type: application/json" \
    -d "$payload" \
    "$WEBHOOK_URL" 2>&1)

Static analysis

No suspicious patterns detected.