Back to skill

Security audit

cloud189-storage

Security checks for vulnerabilities and agentic risk

Overview

This is a coherent Cloud189 storage skill, but it handles account access tokens with under-scoped persistence and weak secret-handling guidance.

Install only if you are comfortable giving the skill access to your Cloud189 account data. Treat any authCode, accessToken, and download URL as secrets; do not store them in project files or chat logs, and prefer temporary in-memory use unless you explicitly choose secure storage. For generic cloud-drive requests, confirm Cloud189 is the intended provider before starting authentication.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Warning
Location
reference/auth.md:65
Finding

Insecure Persistence and Transmission of Cloud189 Access Tokens

Content
View full analysis

Vulnerability Details

File Location: reference/auth.md, lines 65–70 and 85–87
Vulnerability Type: Plaintext credential storage and exposure through URL parameters
Risk Level: Medium

Vulnerable Documentation

Lines 65–70 instruct the agent to persist the access token in memory or a configuration file:

text
After successfully obtaining the accessToken, save it in the user's memory
or configuration file so that it can be used for subsequent cloud API calls.

Recommended storage methods:
- Save the accessToken as an environment variable or project configuration.

Lines 85–87 also document passing the token as a URL query parameter:

text
Or in the request parameters:
?accessToken={accessToken}

Technical Analysis

The access token is a bearer credential that authorizes Cloud189 API operations. The Skill recommends storing it in an environment variable or project configuration without requiring a managed secret store, restrictive file permissions, encryption, log redaction, or exclusion from version control.

Project configuration files can be committed to source control, included in backups, copied into build artifacts, or exposed to other users and processes. Environment variables may also be readable through process inspection, diagnostic output, crash reports, or CI/CD logs.

Passing the token in a URL query parameter creates an additional exposure path. URLs may be recorded in browser history, proxy and server access logs, monitoring platforms, debugging output, referrer data, and copied command histories.

Attack Path

  1. A user completes the documented OAuth2 flow and supplies an authorization code.
  2. The Skill exchanges that code for a Cloud189 access token.
  3. Following the documentation, the agent stores the bearer token in a project configuration file or environment variable without dedicated secret protections.
  4. Alternatively, the token is included in a URL q ...[truncated 1182 chars]
Remediation
View remediation

Remediation Suggestions

  1. Keep access tokens in memory only when persistence is not necessary.

  2. If persistence is required, use an operating-system keychain, credential manager, or managed secret-storage service rather than a project configuration file.

  3. Never store tokens in source-controlled files. Add any local secret files to .gitignore and provide only placeholder-based configuration templates.

  4. Apply restrictive filesystem permissions so that only the intended user or service account can read persisted credentials.

  5. Remove the recommendation to transmit access tokens in URL query parameters. Require the following header instead:

    http
    Authorization: Bearer {accessToken}
    
  6. Redact authorization codes, access tokens, signed download URLs, and other bearer credentials from console output, application logs, error messages, telemetry, and audit traces.

  7. Avoid exposing complete tokens in user-facing responses. Display only a short masked fingerprint when confirmation is necessary.

  8. Document token expiration and revocation procedures, and request the narrowest available authorization scope.

  9. Ensure temporary credential material is deleted after use and is not included in backups, crash reports, command histories, or generated artifacts.

Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • YARA SignaturesMalware Match, Webshell Match, Cryptominer Match
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (29)

Vague Triggers

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The trigger condition is overly broad because it activates the Tianyi Cloud auth flow even when the user only asks for generic cloud-drive operations without explicitly requesting Cloud189. This can cause unnecessary credential collection and redirect users into authenticating with the wrong service, increasing the risk of over-collection of sensitive authorization data.

Content

No source excerpt is available for this finding.

YARA rule 'agent_skill_mcp_tool_poisoning_metadata': MCP/tool metadata poisoning indicators in tool schemas or skill manifests [agent_skills]

High
Category
YARA Match
Confidence
80% confidence
Finding

YARA rule matched a hack tool or exploit indicator (offensive tools, reconnaissance, privilege escalation, or exploit frameworks).

Content

Scanner excerpt · reference/searchImages.md (reported line 3)May include surrounding context.

md
---
name: searchImages
description: 引导用户使用天翼云盘的智能图片搜索功能。当用户需要搜索天翼云盘的图片时,请使用此技能。适用于需要调用天翼云盘智能搜索接口的场景。
---

# 智能图片搜索功能指南

本技能帮助你使用天翼云盘的智能图片搜索功能。

## 前提条件

- 你需要获取天翼云盘的用户accesstoken
- 需要使用支持查看网络请求的浏览器或工具(推荐 Chrome 浏览器的开发者工具)

## 注意事项

- accesstoken 有一定的有效期,过期后需要重新登录获取
- 如果

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The skill explicitly supports login and obtaining an authentication token, but it provides no guidance on protecting credentials or handling tokens as secrets. In an agent setting, this can lead to users or downstream components exposing passwords, session material, or bearer tokens in prompts, logs, or tool outputs, which could enable account compromise.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The skill tells the agent to save the access token to memory or configuration but does not require explicit user consent, define secure storage boundaries, or warn about persistence and privacy implications. In an agent environment, this can lead to secrets being retained longer than expected, exposed in logs/configs, or reused across sessions inappropriately.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The file specifies that prompts used during the flow should be in Chinese and provides only Chinese user-facing templates. There is no opt-in, language selection, or stated justification that this skill must operate only in Chinese, which creates a language policy concern.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill instructs users to obtain and submit an access token but provides no warning about treating the token as a secret, avoiding logging, redacting it from screenshots, or limiting its exposure. Because this token authorizes access to cloud storage, careless handling could enable unauthorized access to user files if the token is leaked through prompts, browser tools, logs, or copied examples.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The document instructs callers to send a user's accessToken to a remote API endpoint but does not explicitly warn about secure handling, storage avoidance, redaction in logs, or user consent/privacy implications. While token transmission to the vendor API is expected for the feature, omitting credential-handling guidance increases the risk of accidental leakage through logs, examples, or downstream tooling.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · reference/getFolderInfo.md (reported line 123)May include surrounding context.

curl命令示例

bash
curl -X POST "https://api.cloud.189.cn/smart/server/api/open/cloud/skills" \
  -H "Content-Type: application/json;charset=UTF-8" \
  -H "xkey: e87f4d25953fg" \
  -d '{"accessToken": "xxx", "functionName": "getFolderInfo", "functionData": "{\"folderPath\":\"我的应用/云盘智能体/测试目录\"}"}'

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The skill repeatedly instructs users to obtain and use an accessToken in requests but does not warn that the token is a sensitive credential that must not be exposed in logs, screenshots, shared prompts, or client-side debugging artifacts. In this context, the documentation explicitly recommends browser developer tools for inspecting network requests, which increases the chance of accidental credential disclosure and subsequent unauthorized access to the user's cloud storage.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
84% confidence
Finding

文件描述全文以中文直接规定技能使用方式,未说明可根据用户偏好切换语言,也未提供任何语言/locale 选择。按规则,若技能强制特定语言而没有用户 opt-in,属于自然语言层面的语言/地区策略风险。

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill instructs users to obtain and transmit an accessToken, which is a sensitive bearer credential, but does not warn that it grants account access or require secure handling, storage minimization, and redaction. In an agent setting, this increases the risk of credential exposure through logs, chat history, screenshots, browser tooling, or downstream requests, potentially enabling unauthorized access to the user's cloud storage.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill explicitly instructs obtaining and transmitting a user's accessToken to a remote API but does not include any guidance on secure handling, minimization, masking, storage avoidance, or redaction. Because access tokens are bearer credentials, accidental logging, copy/paste exposure, or reuse in insecure tooling could allow unauthorized access to the user's cloud storage account.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · reference/auth.md (reported line 47)May include surrounding context.

md
## 天翼云盘的SKILL统一接口调用规范

- 接口地址: `https://api.cloud.189.cn/smart/server/api/open/cloud/skills`
- 请求方式:POST
- 请求Content-Type:application/json;charset=UTF-8
- 响应Content-Type:application/json

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · reference/downloadFile.md (reported line 43)May include surrounding context.

md
## 天翼云盘的SKILL统一接口调用规范

- 接口地址: `https://api.cloud.189.cn/smart/server/api/open/cloud/skills`
- 请求方式:POST
- 请求Content-Type:application/json;charset=UTF-8
- 响应Content-Type:application/json

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · reference/downloadFile.md (reported line 131)May include surrounding context.

md
## 天翼云盘的SKILL统一接口调用规范

- 接口地址: `https://api.cloud.189.cn/smart/server/api/open/cloud/skills`
- 请求方式:POST
- 请求Content-Type:application/json;charset=UTF-8
- 响应Content-Type:application/json

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · reference/getFolderInfo.md (reported line 36)May include surrounding context.

md
## 天翼云盘的SKILL统一接口调用规范

- 接口地址: `https://api.cloud.189.cn/smart/server/api/open/cloud/skills`
- 请求方式:POST
- 请求Content-Type:application/json;charset=UTF-8
- 响应Content-Type:application/json

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · reference/getFolderInfo.md (reported line 123)May include surrounding context.

md
## 天翼云盘的SKILL统一接口调用规范

- 接口地址: `https://api.cloud.189.cn/smart/server/api/open/cloud/skills`
- 请求方式:POST
- 请求Content-Type:application/json;charset=UTF-8
- 响应Content-Type:application/json

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · reference/listFiles.md (reported line 39)May include surrounding context.

md
## 天翼云盘的SKILL统一接口调用规范

- 接口地址: `https://api.cloud.189.cn/smart/server/api/open/cloud/skills`
- 请求方式:POST
- 请求Content-Type:application/json;charset=UTF-8
- 响应Content-Type:application/json

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · reference/listFiles.md (reported line 172)May include surrounding context.

md
## 天翼云盘的SKILL统一接口调用规范

- 接口地址: `https://api.cloud.189.cn/smart/server/api/open/cloud/skills`
- 请求方式:POST
- 请求Content-Type:application/json;charset=UTF-8
- 响应Content-Type:application/json

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · reference/searchFiles.md (reported line 40)May include surrounding context.

md
## 天翼云盘的SKILL统一接口调用规范

- 接口地址: `https://api.cloud.189.cn/smart/server/api/open/cloud/skills`
- 请求方式:POST
- 请求Content-Type:application/json;charset=UTF-8
- 响应Content-Type:application/json

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · reference/searchFiles.md (reported line 127)May include surrounding context.

md
## 天翼云盘的SKILL统一接口调用规范

- 接口地址: `https://api.cloud.189.cn/smart/server/api/open/cloud/skills`
- 请求方式:POST
- 请求Content-Type:application/json;charset=UTF-8
- 响应Content-Type:application/json

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · reference/searchImages.md (reported line 33)May include surrounding context.

md
## 天翼云盘的SKILL统一接口调用规范

- 接口地址: `https://api.cloud.189.cn/smart/server/api/open/cloud/skills`
- 请求方式:POST
- 请求Content-Type:application/json;charset=UTF-8
- 响应Content-Type:application/json

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · reference/searchImages.md (reported line 104)May include surrounding context.

md
## 天翼云盘的SKILL统一接口调用规范

- 接口地址: `https://api.cloud.189.cn/smart/server/api/open/cloud/skills`
- 请求方式:POST
- 请求Content-Type:application/json;charset=UTF-8
- 响应Content-Type:application/json

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · reference/downloadFile.md (reported line 131)May include surrounding context.

curl调用示例

bash
curl --location --request POST 'https://api.cloud.189.cn/smart/server/api/open/cloud/skills' \
--header 'Content-Type: application/json;charset=UTF-8' \
--header 'xkey: e87f4d25953fg' \
--data-raw '{

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · reference/listFiles.md (reported line 172)May include surrounding context.

curl调用示例

bash
curl --location --request POST 'https://api.cloud.189.cn/smart/server/api/open/cloud/skills' \
--header 'Content-Type: application/json;charset=UTF-8' \
--header 'xkey: e87f4d25953fg' \
--data-raw '{