T09 · Insecure Skill Coding Practices
- Location
SKILL.md:100- Finding
Third-Party Rendering Can Disclose Sensitive Staging Content
- Content
View full analysis
--formats markdown,links [--wait 3000]` fetches the **rendered** DOM through Firecrawl's keyless free tier — diff rendered vs raw HTML to expose the classic JS-SEO gap (content or links that only exist after hydration). The connector pre-flights robots.txt locally and refuses on Disallow; `--own-site` skips the pre-flight for your own staging hosts. ``` ### Technical Analysis The Skill recommends sending a user-supplied URL to Firecrawl, an external rendering service, when local crawling returns insufficient content. This behavior is relevant to technical SEO auditing, but the documented workflow does not require explicit consent before transmitting the URL and rendered page content to that third party. The `--own-site` option is specifically presented as a way to skip the robots.txt preflight for staging hosts. A staging URL may expose confidential hostnames, unreleased content, internal deployment structure, preview identifiers, or access-bearing query parameters. If Firecrawl can reach the host, it will process the rendered DOM outside the user's controlled environment. The package does not contain the referenced connector implementation, so its handling of private network addresses, credentials, query parameters, redirects, or response retention could not be verified. ### Attack Path 1. A user requests an SEO audit of a client-side-rendered staging page. 2. The initial local crawl returns an empty or thin response. 3. The Agent follows the documented fallback and invokes `firecrawl.py scrape`. 4. If robots.txt blocks the request, the Agent may use the do ...[truncated 954 chars]- Remediation
View remediation
