T09 · Insecure Skill Coding Practices
- Location
scripts/auth-bootstrap.sh:55- Finding
Authentication tokens are stored without explicit restrictive file permissions
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill’s music workflow is coherent, but it silently stores and uses local credentials, sends personal creative content to an external service, and includes unsafe credential-handling patterns that users should review before installing.
Install only if you are comfortable with this skill making authenticated calls to ClawTune, storing local auth/session files, and sending playlist prompts, draft details, order identifiers, and related creative content to the service. Before use, restrict permissions on ~/.openclaw/clawtune, avoid running the auth print command, do not set CLAWTUNE_BASE_URL to untrusted hosts, and avoid putting sensitive personal stories or secrets into prompts unless you intend to share them with ClawTune.
scripts/auth-bootstrap.sh:55Authentication tokens are stored without explicit restrictive file permissions
scripts/api-request.sh:5Unvalidated API base URL can redirect credentials and private content to an arbitrary server
scripts/auth-bootstrap.sh:193Diagnostic print mode exposes complete access and refresh tokens through standard output
This finding correctly highlights undeclared local session-state file read/write capability. Even if the advertised music features are merely overstated, hidden persistent local storage is security-relevant because it can retain user/order context, identifiers, tokens, or recovery data outside the user's awareness.
This finding correctly highlights undeclared local session-state file read/write capability. Even if the advertised music features are merely overstated, hidden persistent local storage is security-relevant because it can retain user/order context, identifiers, tokens, or recovery data outside the user's awareness.
This finding correctly highlights undeclared local session-state file read/write capability. Even if the advertised music features are merely overstated, hidden persistent local storage is security-relevant because it can retain user/order context, identifiers, tokens, or recovery data outside the user's awareness.
This finding correctly highlights undeclared local session-state file read/write capability. Even if the advertised music features are merely overstated, hidden persistent local storage is security-relevant because it can retain user/order context, identifiers, tokens, or recovery data outside the user's awareness.
This finding correctly highlights undeclared local session-state file read/write capability. Even if the advertised music features are merely overstated, hidden persistent local storage is security-relevant because it can retain user/order context, identifiers, tokens, or recovery data outside the user's awareness.
This finding correctly highlights undeclared local session-state file read/write capability. Even if the advertised music features are merely overstated, hidden persistent local storage is security-relevant because it can retain user/order context, identifiers, tokens, or recovery data outside the user's awareness.
This finding correctly highlights undeclared local session-state file read/write capability. Even if the advertised music features are merely overstated, hidden persistent local storage is security-relevant because it can retain user/order context, identifiers, tokens, or recovery data outside the user's awareness.
This finding correctly highlights undeclared local session-state file read/write capability. Even if the advertised music features are merely overstated, hidden persistent local storage is security-relevant because it can retain user/order context, identifiers, tokens, or recovery data outside the user's awareness.
This finding correctly highlights undeclared local session-state file read/write capability. Even if the advertised music features are merely overstated, hidden persistent local storage is security-relevant because it can retain user/order context, identifiers, tokens, or recovery data outside the user's awareness.
This finding correctly highlights undeclared local session-state file read/write capability. Even if the advertised music features are merely overstated, hidden persistent local storage is security-relevant because it can retain user/order context, identifiers, tokens, or recovery data outside the user's awareness.
The activation criteria are extremely broad—ordinary mentions of emotions, gifts, stories, memorials, background music, ordering, or checking results can trigger the skill. Overbroad invocation is dangerous because it can inappropriately route unrelated conversations into a skill that performs backend auth, state recovery, draft/order management, and external requests, increasing privacy and action-execution risk without clear user intent.
The README instructs operators to bootstrap local credentials and make authenticated API calls, but it provides no guidance on protecting auth artifacts such as tokens, auth.json, or refresh material. In a skill that automates production API interactions, this omission increases the chance that secrets are stored insecurely, committed to repos, or exposed through logs and shared temp directories.
The evidence/logging section states that responses, payloads, and session snapshots are persisted, but it does not warn that these artifacts may contain sensitive user data, identifiers, order details, or authentication/session material. Because this skill handles playlist, draft, order, and recovery flows, verbose evidence capture can easily become a secondary data leak path if stored in shared temp locations or retained without controls.
The skill explicitly contemplates shell execution, file read/write, state persistence, and HTTP/auth flows, but it does not declare any corresponding tool scope or permission boundary. That creates a least-privilege failure: a host may expose broader capabilities than reviewers or operators expect, increasing the chance of unintended file access, token handling, or script execution.
The instruction '中文对话默认用自然中文' sets a default language policy for user interactions. The file does not indicate that the user can choose another language or that the Chinese-only default is required for a documented region-specific reason.
The document states in Chinese that the checklist is for testing the current ClawTune skill behavior, and all prompts/expected behaviors are written exclusively in Chinese with no indication that language choice is optional. This creates a natural-language policy concern because the skill appears to assume or require a specific language/locale rather than offering user choice.
This JSON file contains natural-language requirements that the generated song experience be specifically in Chinese (e.g. "中文的") and constrains response style accordingly. Under the policy, forcing a specific language without user opt-in can be a locale-policy violation, and no justification or user choice is documented here.
This markdown file presents all user-facing example dialogue exclusively in Chinese and explicitly includes a '中文' requirement in an example, but nowhere indicates that language is optional or region-specific. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation.
The playbook explicitly instructs the agent to read local credential files and persist session identifiers to local disk, but provides no requirement to obtain user consent or disclose that local files will be accessed and modified. In an agent setting, silent access to ~/.openclaw/... and silent writes to session.json can expose secrets, overwrite another user's state, or create cross-session confusion on shared systems.
The file directs the agent to make authenticated requests, generate playlists, create drafts, and create orders against a remote service without any explicit notice that user content, session identifiers, and possibly personal creative data will be transmitted off-platform. This creates a transparency and consent problem, especially because order creation and draft submission may send sensitive user intent or personal stories to an external domain.
Lines L185-L187 instruct the agent to use Chinese by default and avoid English terms in Chinese conversations. This is a natural-language locale policy constraint that does not offer the user a language choice or opt-in, so it can violate language/locale policy requirements.
The file is an explicit set of curl templates for transmitting data to an external API, including authorization tokens and user-derived content. External transmission is expected for this skill, but it is still security-relevant because the examples encourage sending bearer tokens and personal/creative data without nearby warnings about consent, token protection, or safe execution/logging practices.
export CLAWTUNE_BASE_URL="https://clawtune.aqifun.com/api/v1"
The examples transmit potentially sensitive free-form user content and stable identifiers such as user_ref, skill_session_id, lyrics_input, proposal_summary, and playlist context IDs to a remote service without any notice, minimization guidance, or consent boundary. In this skill context, those fields can contain intimate emotional narratives, gift/anniversary details, and creative material, so undocumented transmission increases privacy, compliance, and data-handling risk.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
# ClawTune curl templates: auth
默认基址:
This is a markdown file, so SQP-2 applies to omissions in the skill description. The file instructs users to export CLAWTUNE_ACCESS_TOKEN and send it in an Authorization header, but does not warn that the token is sensitive, should be protected, and will be transmitted to the remote service.
No suspicious patterns detected.