Back to skill

Security audit

Httpstat

Security checks for vulnerabilities and agentic risk

Overview

This is a coherent URL timing tool, but it needs review because redirects can accidentally pass supplied tokens or request bodies to another site.

Review before installing. Use it only against trusted URLs, avoid passing secrets in headers or request bodies, and be especially cautious with --follow until redirect handling strips credentials across origins and enforces real limits.

Vulnerability Patterns
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (5)

T09 · Insecure Skill Coding Practices

Error
Location
httpstat.py:156
Finding

Cross-Origin Redirects Forward Credentials and Request Bodies

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
httpstat.py:156
Finding

Ineffective Redirect Limit Allows Recursive Denial of Service

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
httpstat.py:109
Finding

Unsanitized Request Components Permit HTTP CRLF Injection

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
httpstat.py:128
Finding

Unbounded Response Buffering Enables Memory Exhaustion

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Note
Location
httpstat.py:224
Finding

Untrusted HTTP Metadata Can Inject Terminal Control Sequences

Content
View full analysis
= 2: try: result.status = int(parts[1]) except ValueError: pass result.reason = parts[2] if len(parts) > 2 else "" for line in lines[1:]: if ": " in line: k, v = line.split(": ", 1) result.headers[k] = v ``` The untrusted values are then rendered directly: ```python lines = [ f"", f" {BOLD}{result.method} {result.url}{RESET}", f" {color_status(result.status)} {result.reason}", f"", ] interesting = ["Content-Type", "Server", "Cache-Control", "X-Request-Id", "CF-Ray", "X-Powered-By", "Strict-Transport-Security"] shown = [] for h in interesting: if h in result.headers: shown.append(f" {DIM}{h}: {result.headers[h]}{RESET}") ``` ### Technical Analysis HTTP reason phrases and selected response-header values originate from a remote server. Text-mode output writes those values to an ANSI-capable terminal without escaping the ESC character or other C0/C1 controls. A malicious server can therefore include terminal control sequences in displayed metadata. Terminal behavior varies, but common effects include clearing or rewriting the display, changing colors, moving the cursor, creating misleading output, or interacting with terminal-specific features. ### Attack Path 1. An attacker controls an HTTP server queried by the user. 2. The server places control sequences in its reason phrase or in a displayed response header such as `Server` or `Content-Type`. 3. The parser preserves those characters. 4. `format_text()` writes the values directly to the user's term ...[truncated 460 chars]
Remediation
View remediation
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 (7)

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 · README.md (reported line 3)May include surrounding context.

md
# httpstat ⚡

Pretty HTTP response statistics with timing waterfall. Like `curl -v` but readable.

## Features

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
93% confidence
Finding

The skill invokes a Python script that performs outbound HTTP requests and is meant to be run from the shell, yet the manifest declares no explicit tool scope or permissions. That creates a least-privilege gap: an agent may use network and shell capabilities without clear restriction or review boundaries, increasing the chance of unintended external access or misuse.

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 3)May include surrounding context.

md
---
name: httpstat
description: Pretty HTTP response statistics with timing waterfall. Use when asked to check a URL's response time, debug slow requests, measure TTFB, or get HTTP timing breakdown. Like curl -v but readable. Zero dependencies.
---

# httpstat ⚡

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 · httpstat.py (reported line 9)May include surrounding context.

python
Examples:
    httpstat https://example.com
    httpstat https://api.github.com/zen --header "Accept: text/plain"
    httpstat https://httpbin.org/post --method POST --data '{"key":"value"}'
"""

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 · scripts/httpstat.py (reported line 9)May include surrounding context.

python
Examples:
    httpstat https://example.com
    httpstat https://api.github.com/zen --header "Accept: text/plain"
    httpstat https://httpbin.org/post --method POST --data '{"key":"value"}'
"""

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
87% confidence
Finding

This markdown file describes making network requests, including POST bodies and Authorization headers, which can transmit user data or credentials to external systems. The usage and options sections explain how to do this but do not include any warning about privacy, credential handling, or ensuring the target endpoint is trusted.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
87% confidence
Finding

This code performs outbound network requests using the provided URL, headers, and optional body, which can transmit user or system data to remote hosts. While the module docstring describes usage, there is no explicit warning in code comments, help text, or runtime output that requests may send supplied headers and body content over the network.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.