T09 · Insecure Skill Coding Practices
- Location
scripts/analyze-headers.py:81- Finding
TLS Certificate and Hostname Verification Disabled
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill is a user-directed HTTP header scanner, but it disables TLS certificate checks and overstates its TLS security analysis, so results could be misleading.
Review before installing or relying on this skill. It appears to be a straightforward scanner with no persistence or credential behavior, but HTTPS scans are performed without certificate validation and the TLS analysis is weaker than advertised. Treat its results as advisory only unless the implementation is changed to verify certificates by default and clearly mark any intentionally insecure scans.
scripts/analyze-headers.py:81TLS Certificate and Hostname Verification Disabled
The skill advertises and demonstrates network and shell-capable behavior by invoking a Python script that makes outbound HTTP/TLS requests, but it does not declare any explicit tool scope such as permissions or allowed-tools. This creates a trust and containment gap: an agent or platform may permit broader execution than intended, and users are not clearly informed that the skill can perform network access against arbitrary targets.
The docstring says the tool checks 'security headers and TLS config', but the TLS path only fetches basic connection metadata such as protocol, selected cipher, certificate subject/issuer, and expiry. There is no evaluation logic for weak ciphers, insecure protocol versions, certificate trust, or TLS misconfiguration, so the documentation overstates what the code does.
Outbound HTTPS requests are made with certificate validation disabled via verify=False. This makes the analyzer trust responses from attackers performing man-in-the-middle interception, which can produce false header-analysis results and mislead users about the target's real security posture.
Using verify=False creates an unsafe default for all HTTPS scans. In the context of a security-analysis skill, this is more dangerous because users rely on the tool for trustworthy results, and disabling verification can silently invalidate the assessment under hostile network conditions.
def fetch_headers(url, timeout=10, follow=True, user_agent=None):
headers = {"User-Agent": user_agent or "Mozilla/5.0 Security Header Analyzer"}
if HAS_REQUESTS:
resp = requests.get(url, timeout=timeout, allow_redirects=follow, headers=headers, verify=False)
return dict(resp.headers), resp.status_code
else:
import urllib.request
The urllib fallback disables both hostname checking and certificate validation, accepting any certificate for HTTPS connections. An active network attacker can spoof the destination and feed arbitrary headers or responses to the tool, undermining the integrity of its security assessment.
The TLS inspection path disables certificate and hostname verification before collecting protocol, cipher, and certificate metadata. This allows a man-in-the-middle to present a bogus certificate and TLS session, causing the tool to report attacker-controlled TLS characteristics instead of the real server's configuration.