T09 · Insecure Skill Coding Practices
- Location
SKILL.md:28- Finding
Long-Lived Bearer Session Token Transmitted Through URLs
- Content
View full analysis
&redirectState= ``` ```text 3. The callback carries `?token=`; store `Bearer ` as the session token (in web: `localStorage`; in app: uni storage under key `token`). ``` ```text - **Mode A (agent has browser automation):** open the login URL, read `token` from the callback URL, store `Bearer `. ``` ```text 2. If not connected, initiate OAuth connect. Build: ``` {API_BASE_URL}/oauth2/connectGoogleBusiness?token=&redirectState= ``` ``` ### Technical Analysis The skill directs the agent to place a bearer session token in OAuth callback and Google Business connection URLs. URL encoding changes only the representation of the credential; it does not protect its confidentiality. Query-string values can be retained or disclosed through: - Browser history and address-bar synchronization - Screenshots, copied URLs, and support diagnostics - Reverse-proxy, load-balancer, web-server, and monitoring logs - Browser extensions and local browser data - Analytics and crash-reporting systems - Referrer propagation where an appropriate `Referrer-Policy` is absent - Automation tool traces and navigation logs HTTPS protects the URL while it is in transit, but it does not prevent the browser, endpoints, intermediaries, or application telemetry from retaining the query string. This exposure is particularly serious because `SKILL.md` describes the session JWT as having an approximately seven-year lifetime. The network access itself is consistent with the declared onboarding function. However, transmitting the bearer credential in a URL is not necessary to pro ...[truncated 1590 chars]- Remediation
View remediation
