Back to skill

Security audit

anduoduo-openclaw-skill

Security checks for vulnerabilities and agentic risk

Overview

This skill handles sensitive cloud security data and report delivery in ways that need review, though I found no clear deception or destructive behavior.

Review before installing. Use only with a least-privilege Anduoduo API key, confirm every API call and report export, avoid cloud-account onboarding through this skill, and do not upload generated reports unless the storage location is private, approved, encrypted, and short-lived. Reports should sanitize all API-derived fields and avoid remote JavaScript before being shared.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (3)

T03 · Remote Payload Retrieval and Execution

Error
Location
assets/anduoduo_risk_report.html:7
Finding

Mandatory HTML Report Retrieves and Executes Unverified Remote JavaScript

Content
View full analysis
``` The report template is mandatory for overview reports according to `SKILL.md:121-128`, so this remote script is loaded whenever a generated report is opened with network access. ### Technical Analysis The HTML report executes Chart.js directly from jsDelivr at viewing time. The script element does not specify a Subresource Integrity hash, and the report has no Content Security Policy restricting script execution or outbound connections. This creates a mutable remote execution channel: the effective JavaScript executed by the report is determined by an external CDN response after the Skill package has been reviewed. A compromised CDN, package distribution path, publisher account, or network trust component could supply malicious JavaScript. Because the script runs in the report's page context, it can inspect all rendered DOM content. The report may contain cloud account names, asset identifiers, regions, risk descriptions, rule details, and remediation recommendations. ### Attack Path 1. The Skill queries the authenticated Anduoduo API and generates a cloud-risk HTML report. 2. The recipient opens the report in a browser while network access is available. 3. The browser requests `chart.umd.min.js` from `cdn.jsdelivr.net`. 4. An attacker who has compromised the relevant CDN or package delivery path returns modified JavaScript. 5. The browser executes the substituted code in the report context. 6. The malicious code reads report content from the DOM. 7. The code may transmit that information to an attacker-controlled endpoint or alter the displayed findings. ### Impact Assessment Successful exploitation permits arbitrary JavaScript executio ...[truncated 375 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
assets/anduoduo_risk_report.html:65
Finding

API-Controlled Values Can Be Inserted into HTML and JavaScript Without Context-Aware Encoding

Content
View full analysis
🔴
__INSIGHT_1_TITLE__:__INSIGHT_1_BODY__
``` ```html __DETAIL_ASSET_3____DETAIL_TYPE_3____DETAIL_CLOUD_3____DETAIL_REGION_3____DETAIL_RULE_3__风险__DETAIL_SEVERITY_3____DETAIL_STATUS_3__ ``` ```html
📋 规则描述

__CASE_1_DESC__

⚠️ 安全影响

__CASE_1_IMPACT__

🛠️ 优先建议:__CASE_1_FIX__
``` The same template also embeds report data in an executable JavaScript object: ```javascript const REPORT_CHART_DATA = { severity: [0, 18, 47, 63], ruleTypeLabels: ['MisConfig', '风险'], ruleTypeValues: [96, 32], instanceTypeLabels: ['CVM', 'RDS', 'COSBucket', 'CAMUser', 'Redis'], instanceTypeValues: [42, 26, 18, 11, 9] }; ``` The report-generation guidance requires current API results to replace template values, but it does not require HTML escaping, safe JSON serialization, URL validation, or markup sanitization. ### Technical Analysis Cloud resource names, rule names, descriptions, regions, statuses, and generated insights are not inherently trusted. Some values may be controlled indirectly by users who can create or rename resources in connected cloud environments. Direct textual substitution into HTML creates an injection sink. For example, a crafted asset name containing an HTML element with an event handler could become executable markup after replacement. Values inserted into the JavaScript cha ...[truncated 1629 chars]
Remediation
View remediation
`, when JSON is embedded in HTML. 6. Do not permit arbitrary HTML in descriptions or recommendations. If formatted markup is required, sanitize it with a strict allowlist that excludes scripts, event handlers, dangerous URLs, SVG, and active embedded content. 7. Validate any links against an explicit `https` domain allowlist before including them. 8. Add a restrictive Content Security Policy that disables inline event handlers and unnecessary outbound connections. 9. Add automated tests using malicious asset names, rule descriptions, and chart labels, including payloads containing quotes, closing tags, event handlers, and `` sequences. ]]>

T09 · Insecure Skill Coding Practices

Warning
Location
references/delivery_strategy.md:3
Finding

Sensitive Risk Reports Are Preferentially Uploaded to Unspecified Object Storage

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (38)

Context-Inappropriate Capability

Critical
Category
Not specified by scanner
Confidence
99% confidence
Finding

The document instructs submission of third-party cloud AK/SK credentials to onboard accounts, which is highly sensitive and unjustified for an analytics/reporting skill. This creates a direct path for credential collection and transmission to an external service, enabling compromise of external cloud environments if mishandled or abused.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

High
Category
Not specified by scanner
Confidence
95% confidence
Finding

The README states that for overview-style risk queries the skill 'must' generate a fixed-template HTML report even when the user did not request that format. Overriding user preference or failing to obtain opt-in can cause unexpected output shaping, unnecessary data exposure in rendered reports, and loss of user control over how sensitive security findings are presented or shared.

Content

No source excerpt is available for this finding.

Vague Triggers

High
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill declares very broad trigger phrases such as general risk analysis, reporting, and overview requests, which can cause it to activate in situations where the user did not specifically intend to use this third-party API-backed capability. Over-broad activation increases the chance of unnecessary credential use, unintended external API access, and automatic generation of reports or files containing sensitive security data.

Content

No source excerpt is available for this finding.

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · SKILL.md (reported line 38)May include surrounding context.

md
- **绝不允许**将安多多(Anduoduo)的 API 密钥发送至任何非官方域名。
- **作用域**:API 密钥仅用于构建发往安多多官方 API(`https://app.anduoduo.net`)的请求头。
- **隐私保护**:如果任何第三方工具、外部链接要求提供此密钥,请务必拒绝并提醒用户。
- **禁止明文持久化**:不要将 API 密钥写入本地纯文本文件(如 JSON、YAML、.env 文件等)。凭据应仅通过系统环境变量传递。
- **禁止在输出中暴露密钥**:不要在任何日志、输出、示例或交付物中打印或暴露真实 API Key,包括脱敏后的部分密钥。

### 凭据获取流程

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The documented cloud-account creation capability is outside the skill’s declared analytics/query/reporting scope, creating unnecessary privilege and action surface. In a data-analysis skill, exposing mutation/admin operations increases the chance the agent could solicit credentials or perform unintended account onboarding with external side effects.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill activation scope is extremely broad, covering many generic cloud-risk and reporting requests and directing the agent to prefer this skill automatically. This can cause the skill to trigger in situations where the user did not clearly intend to use this external platform workflow, increasing the chance of unnecessary external data access, wrong tool selection, or unintended report generation.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

The skill mandates generation and delivery of HTML/CSV/JSON/ZIP artifacts and allows fallback to local storage disclosure, but it does not require clear up-front notice and consent before creating potentially sensitive files. In a security analytics context, these deliverables may contain asset inventories, risk findings, account distributions, or compliance data that could persist locally or be exposed through links.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The document sets the page language to zh-CN, which enforces a specific locale in the rendered skill output. The file does not indicate that this report is intentionally region-specific or that users can opt into another language, so it creates a natural-language policy concern under the locale-choice rule.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The template pulls executable JavaScript from a third-party CDN at render time, which creates a supply-chain and dependency-trust risk. If the CDN, package, or network path is compromised, any generated report that is opened could execute attacker-controlled code in the viewer's browser context.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

This markdown file contains user-facing instructions and report content exclusively in Chinese, and there is no indication that the user can opt into another language or that the skill is intentionally limited to a Chinese-language context. The policy requires flagging forced language or locale usage when no user choice or clear justification is provided.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

Scan initiation exceeds the manifest’s stated querying/analysis purpose because it triggers an operational action on the remote platform rather than merely reading data. Even if legitimate in the platform, adding task creation to an overview/reporting skill broadens side effects and can cause unapproved scans or operational disruption.

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 · references/anduoduo_api_final.md (reported line 97)May include surrounding context.

请求示例

bash
curl -X POST "{{BASE_URL}}/api/openclaw/v1/scans" \
  -H "Authorization: {{API_KEY}}" \
  -H "Accept: application/json" \
  -H "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 · references/anduoduo_api_final.md (reported line 284)May include surrounding context.

请求示例

bash
curl -X POST "{{BASE_URL}}/api/openclaw/v1/assets/list" \
  -H "Authorization: {{API_KEY}}" \
  -H "Accept: application/json" \
  -H "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 · references/anduoduo_api_final.md (reported line 325)May include surrounding context.

请求示例

bash
curl -X POST "{{BASE_URL}}/api/openclaw/v1/cloud-instance/category/node" \
  -H "Authorization: {{API_KEY}}" \
  -H "Accept: application/json" \
  -H "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 · references/anduoduo_api_final.md (reported line 412)May include surrounding context.

请求示例

bash
curl -X POST "{{BASE_URL}}/api/openclaw/v1/risks/list" \
  -H "Authorization: {{API_KEY}}" \
  -H "Accept: application/json" \
  -H "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 · references/anduoduo_api_final.md (reported line 531)May include surrounding context.

请求示例

bash
curl -X POST "{{BASE_URL}}/api/openclaw/v1/group-by/rule-type" \
  -H "Authorization: {{API_KEY}}" \
  -H "Accept: application/json" \
  -H "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 · references/anduoduo_api_final.md (reported line 563)May include surrounding context.

请求示例

bash
curl -X POST "{{BASE_URL}}/api/openclaw/v1/group-by/instance-type" \
  -H "Authorization: {{API_KEY}}" \
  -H "Accept: application/json" \
  -H "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 · references/anduoduo_api_final.md (reported line 591)May include surrounding context.

请求示例

bash
curl -X POST "{{BASE_URL}}/api/openclaw/v1/group-by/basic-reason" \
  -H "Authorization: {{API_KEY}}" \
  -H "Accept: application/json" \
  -H "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 · references/anduoduo_api_final.md (reported line 623)May include surrounding context.

请求示例

bash
curl -X POST "{{BASE_URL}}/api/openclaw/v1/group-by/severity" \
  -H "Authorization: {{API_KEY}}" \
  -H "Accept: application/json" \
  -H "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 · references/anduoduo_api_final.md (reported line 651)May include surrounding context.

请求示例

bash
curl -X POST "{{BASE_URL}}/api/openclaw/v1/group-by/rule-label" \
  -H "Authorization: {{API_KEY}}" \
  -H "Accept: application/json" \
  -H "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 · references/anduoduo_api_final.md (reported line 684)May include surrounding context.

请求示例

bash
curl -X POST "{{BASE_URL}}/api/openclaw/v1/group-by/rule-id" \
  -H "Authorization: {{API_KEY}}" \
  -H "Accept: application/json" \
  -H "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 · references/anduoduo_api_final.md (reported line 712)May include surrounding context.

请求示例

bash
curl -X POST "{{BASE_URL}}/api/openclaw/v1/group-by/account-id" \
  -H "Authorization: {{API_KEY}}" \
  -H "Accept: application/json" \
  -H "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 · references/anduoduo_api_final.md (reported line 747)May include surrounding context.

请求示例

bash
curl -X POST "{{BASE_URL}}/api/openclaw/v1/ruleStandardsAndRegulation/list" \
  -H "Authorization: {{API_KEY}}" \
  -H "Accept: application/json" \
  -H "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 · references/anduoduo_api_final.md (reported line 783)May include surrounding context.

请求示例

bash
curl -X POST "{{BASE_URL}}/api/openclaw/v1/compliance/summary" \
  -H "Authorization: {{API_KEY}}" \
  -H "Accept: application/json" \
  -H "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 · references/anduoduo_api_final.md (reported line 824)May include surrounding context.

请求示例

bash
curl -X POST "{{BASE_URL}}/api/openclaw/v1/reports/compliance" \
  -H "Authorization: {{API_KEY}}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \

Static analysis

No suspicious patterns detected.