T09 · Insecure Skill Coding Practices
- Location
README.md:119- Finding
Plaintext Storage of Full Account Bearer Token in Cursor Configuration
- Content
View full analysis
Vulnerability Details
File Location:
README.md, lines 119–120
Vulnerability Type: Plaintext sensitive credential storage
Risk Level: MediumVulnerable Code Snippet
text `${env:LOOP_SERVER_TOKEN}` resolves from Cursor's environment. If your Cursor version does not interpolate env references in headers, keep the entry in the global, uncommitted `~/.cursor/mcp.json` and paste the token there manually — never into a project-committed file.Technical Analysis
The documented fallback instructs users to place the Loop Server token directly into
~/.cursor/mcp.jsonwhen environment-variable interpolation is unavailable. Although keeping this file outside the project reduces the likelihood of committing the token to source control, it still stores a long-lived bearer credential as plaintext on disk.The same documentation identifies this token as a full account credential that can claim a Loop web session. Consequently, possession of the token is sufficient for account access; no additional authentication factor is described. A global configuration file does not inherently provide encryption, secret isolation, or protection from other processes running under the user's account.
Sending the bearer token over TLS to the declared Loop MCP endpoint is necessary for the Skill's stated remote task-management functionality. The excessive behavior is specifically the plaintext-storage fallback, not the authenticated network request itself.
Attack Path
- A user runs a Cursor version that does not interpolate environment references in MCP headers.
- Following the README, the user inserts the literal Loop Server token into
~/.cursor/mcp.json. - Local malware, a compromised process operating as the user, an overly broad backup or synchronization service, another account with filesystem access, or a diagnostic collection process reads the configuration file.
- The attacker extracts the bearer token.
...[truncated 675 chars]
- Remediation
View remediation
Remediation Suggestions
- Remove the recommendation to paste a literal token into
~/.cursor/mcp.json. - Require a Cursor version that securely supports environment-variable interpolation in MCP headers.
- Where interpolation is unavailable, use an OS credential manager, an approved secret-injection mechanism, or a narrowly scoped launcher that obtains the token from protected secret storage without persisting it in the MCP configuration.
- Treat clients that cannot securely inject the bearer token as unsupported rather than documenting plaintext storage as a fallback.
- If a credential file is unavoidable, clearly label this as a last resort, enforce owner-only filesystem permissions, exclude it from backup and synchronization systems, and provide explicit rotation instructions.
- Encourage immediate token rotation after suspected disclosure and minimize the credential's lifetime and privileges where supported by the service.
- Remove the recommendation to paste a literal token into
