T09 · Insecure Skill Coding Practices
- Location
scripts/scrape_html.sh:25- Finding
TLS Certificate Verification Disabled in HTML Scraper
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is mostly coherent for copying public website styling, but it sends arbitrary target URLs through Bright Data using an API key and disables TLS verification, which creates avoidable credential and privacy risk.
Install only if you are comfortable sending reference URLs and fetched page content to Bright Data. Do not use it on private dashboards, localhost, intranet sites, authenticated pages, or confidential customer/prototype URLs. The scripts should be fixed before use by removing curl -k, validating HTTPS public URLs, and constructing JSON with a proper encoder.
scripts/scrape_html.sh:25TLS Certificate Verification Disabled in HTML Scraper
scripts/screenshot.sh:25TLS Certificate Verification Disabled in Screenshot Capture
scripts/scrape_html.sh:25Unsafe JSON Construction in HTML Scraper
scripts/screenshot.sh:25Unsafe JSON Construction in Screenshot Capture
The skill claims to replicate visual style for a user's codebase, but the concrete instructions focus on screenshotting and scraping arbitrary websites through an external provider rather than safely bounded local design analysis. Because the true behavior is broader than the declared purpose, operators may unknowingly enable a generic web-capture pipeline with credentialed third-party access, which can be abused for unauthorized collection or policy-violating scraping.
The skill claims to replicate visual style for a user's codebase, but the concrete instructions focus on screenshotting and scraping arbitrary websites through an external provider rather than safely bounded local design analysis. Because the true behavior is broader than the declared purpose, operators may unknowingly enable a generic web-capture pipeline with credentialed third-party access, which can be abused for unauthorized collection or policy-violating scraping.
Using curl with -k disables TLS certificate validation, allowing man-in-the-middle interception or spoofing of the HTTPS connection to the Bright Data API. Because the request includes a bearer token and user-controlled URL data, an active attacker could steal credentials, alter requests, or return tampered content.
echo "Scraping HTML from: $URL" >&2
curl -k -s -X POST 'https://api.brightdata.com/request' \
-H "Authorization: Bearer $BRIGHTDATA_API_KEY" \
-H 'Content-Type: application/json' \
-d "{\"zone\":\"$BRIGHTDATA_UNLOCKER_ZONE\",\"url\":\"$URL\",\"format\":\"raw\"}" \
Using curl with -k disables TLS certificate validation, allowing man-in-the-middle interception or modification of the request to the Bright Data API. Because the request carries a bearer token and user-controlled target URL, an attacker on the network path could steal credentials, alter destinations, or return tampered screenshot content.
echo "Capturing screenshot of: $URL" >&2
curl -k -s -X POST 'https://api.brightdata.com/request' \
-H "Authorization: Bearer $BRIGHTDATA_API_KEY" \
-H 'Content-Type: application/json' \
-d "{\"zone\":\"$BRIGHTDATA_UNLOCKER_ZONE\",\"url\":\"$URL\",\"format\":\"raw\",\"data_format\":\"screenshot\"}" \
The skill invokes shell scripts to fetch screenshots and scrape HTML from arbitrary user-supplied URLs, but it declares no tool scope or allowed-tools restrictions. That makes the effective capability broader than advertised and weakens containment, increasing the chance of unintended command execution or unreviewed networked actions in environments that honor explicit tool permissions.
The trigger conditions are extremely broad, causing the skill to activate on ordinary design requests or vague references to another site. In context, that matters because activation can lead to scraping and screenshotting arbitrary URLs via external services, so over-triggering increases the chance of unintended data transfer and unnecessary exposure.
The hardcoded external endpoint confirms that all scraping traffic is routed to a third-party API rather than directly to the destination site. In a design-mirroring skill, this increases risk because users may point the tool at arbitrary sites, including internal or proprietary web apps, causing unintended disclosure of target URLs and fetched content to an outside service.
echo "Scraping HTML from: $URL" >&2
curl -k -s -X POST 'https://api.brightdata.com/request' \
-H "Authorization: Bearer $BRIGHTDATA_API_KEY" \
-H 'Content-Type: application/json' \
-d "{\"zone\":\"$BRIGHTDATA_UNLOCKER_ZONE\",\"url\":\"$URL\",\"format\":\"raw\"}" \
The hardcoded external endpoint confirms that all scraping traffic is routed to a third-party API rather than directly to the destination site. In a design-mirroring skill, this increases risk because users may point the tool at arbitrary sites, including internal or proprietary web apps, causing unintended disclosure of target URLs and fetched content to an outside service.
echo "Scraping HTML from: $URL" >&2
curl -k -s -X POST 'https://api.brightdata.com/request' \
-H "Authorization: Bearer $BRIGHTDATA_API_KEY" \
-H 'Content-Type: application/json' \
-d "{\"zone\":\"$BRIGHTDATA_UNLOCKER_ZONE\",\"url\":\"$URL\",\"format\":\"raw\"}" \
The script sends user-supplied URLs and authentication context to a third-party service (Bright Data) to retrieve screenshots. In this skill's context, that means arbitrary user-requested destinations are transmitted off-system, which can expose sensitive internal URLs, trigger outbound access to internal resources through the provider, and create privacy/compliance risks.
echo "Capturing screenshot of: $URL" >&2
curl -k -s -X POST 'https://api.brightdata.com/request' \
-H "Authorization: Bearer $BRIGHTDATA_API_KEY" \
-H 'Content-Type: application/json' \
-d "{\"zone\":\"$BRIGHTDATA_UNLOCKER_ZONE\",\"url\":\"$URL\",\"format\":\"raw\",\"data_format\":\"screenshot\"}" \
The script sends user-supplied URLs and authentication context to a third-party service (Bright Data) to retrieve screenshots. In this skill's context, that means arbitrary user-requested destinations are transmitted off-system, which can expose sensitive internal URLs, trigger outbound access to internal resources through the provider, and create privacy/compliance risks.
echo "Capturing screenshot of: $URL" >&2
curl -k -s -X POST 'https://api.brightdata.com/request' \
-H "Authorization: Bearer $BRIGHTDATA_API_KEY" \
-H 'Content-Type: application/json' \
-d "{\"zone\":\"$BRIGHTDATA_UNLOCKER_ZONE\",\"url\":\"$URL\",\"format\":\"raw\",\"data_format\":\"screenshot\"}" \