Back to skill

Security audit

RPA Caller

Security checks for vulnerabilities and agentic risk

Overview

This RPA HTTP skill is coherent, but it needs Review because it can trigger broad automation with bearer tokens, arbitrary endpoints, screenshots, form submission, and task cancellation without enough scoping or secret handling.

Install only if you control the RPA server and can enforce HTTPS, approved hosts, least-privilege short-lived tokens, redacted request previews, and explicit confirmation for screenshots, form submission, file download, and stop or force-stop actions. Do not paste high-privilege API keys into normal chat context.

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
SKILL.md:42
Finding
Bearer Token Exposure Through Complete Request Display and Plaintext HTTP Configuration## Vulnerability Details **File Location**: `SKILL.md:42-59`, `SKILL.md:99-105`, and `SKILL.md:126` **Vulnerability Type**: Credential exposure and insecure transport configuration **Risk Level**: Medium ### Vulnerable Code `SKILL.md:42-54`: ```text ### Step 4:构建 HTTP 请求 ``` Method: [GET / POST / PUT / DELETE] URL: {BASE_URL}{endpoint} Headers: Content-Type: application/json Authorization: Bearer {API_KEY} ← 如功能清单中有鉴权要求 Body (JSON): { "task_id": "唯一任务ID(可用时间戳)", "params": { // 根据功能清单填入具体参数 } } ``` `SKILL.md:57-59`: ```text ### Step 5:展示请求并确认 在执行前,以结构化方式展示完整的请求内容,请用户确认后再发送。 ``` `SKILL.md:99-105`: ```text ## 全局配置(首次使用时设置) 使用本 Skill 前,需要确认以下配置信息: ``` BASE_URL: http://your-rpa-server:8088 ← RPA 服务地址 API_KEY: your-api-key-here ← 鉴权 Token(如有) ``` 如果用户没有提供,主动询问这两个值,并在对话中记住它们。 ``` `SKILL.md:126`: ```text 1. **安全**:不要在对话中明文显示完整的密码或高权限 Token ``` ### Technical Analysis The skill constructs requests containing a bearer credential in the `Authorization` header and subsequently instructs the agent to display the complete request for confirmation. A complete request display would normally include the authorization header, causing the API key to be exposed in conversation history, model context, telemetry, screenshots, or audit logs. Although line 126 advises against displaying complete passwords or high-privilege tokens, no concrete masking procedure is defined. This conflicts with the earlier instruction to display the complete request. The skill does not require replacement of the header value with a marker such as `Bearer ****`, so execution behavior may depend on how the agent resolves these inconsistent instructions. The example `BASE_URL` also uses plaintext HTTP. Bearer tokens provide no independent protection against interception: any party capable of observing plaintext network traffic can recover and replay the token. The skill addi ...[truncated 2068 chars]
Remediation
## Remediation Suggestions 1. Require `https://` for every non-loopback RPA endpoint and reject plaintext HTTP configuration by default. 2. Validate `BASE_URL` against an administrator-controlled allowlist of approved schemes, hosts, ports, and path prefixes. 3. Replace the instruction to display the complete request with an explicit sanitized preview requirement. Always render the header as `Authorization: Bearer [REDACTED]`. 4. Never place the raw API key in generated request previews, ordinary assistant messages, error messages, logs, screenshots, or task identifiers. 5. Obtain credentials from a protected runtime secret store or environment-backed credential provider at execution time rather than asking the user to enter them into conversational context. 6. If interactive credential entry is unavoidable, use a dedicated secret-input mechanism and prevent the value from being retained in conversation history or long-term memory. 7. Define a single unambiguous credential-handling policy and remove the conflict between displaying a complete request and prohibiting plaintext token disclosure. 8. Apply least privilege to RPA tokens, use short expiration periods, support rotation and revocation, and separate tokens by environment and workflow. 9. Do not forward authorization headers across redirects or to hosts other than the validated RPA origin. 10. Add automated tests that fail if a request preview, error response, or log output contains the original bearer token.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (11)

Vague Triggers

High
Confidence
95% confidence
Finding
The skill declares that it 'must' be used for a wide range of generic phrases such as automation, form filling, clicking, batch processing, and running tasks. In this context, broad mandatory triggers can cause the agent to invoke an HTTP-capable RPA workflow for ordinary requests that were not meant to launch automation, increasing the chance of unintended external actions or dangerous task execution.

Natural-Language Policy Violations

Medium
Confidence
88% confidence
Finding
The description and invocation rules are written entirely around Chinese trigger wording, including a mandatory-use instruction keyed to Chinese phrases. There is no indication that the skill supports user language choice or that it is intentionally limited to a Chinese-only environment for a documented reason.

Vague Triggers

Medium
Confidence
88% confidence
Finding
The description broadly mandates use of this skill for many generic automation-related phrases without clear scope, safety gates, or user-confirmation constraints. Because this skill triggers HTTP-based RPA actions that can cause real-world automated behavior, overly broad activation increases the risk of unintended task execution, parameter forwarding, or invocation in contexts where stronger validation should occur.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The form automation entry describes submission to a target system but omits any warning that user-supplied data may be transmitted to external or internal web applications and potentially auto-submitted. In context, this is dangerous because the skill is designed to trigger automated actions over HTTP and could cause users or operators to underestimate the sensitivity of the operation.

Vague Triggers

Medium
Confidence
92% confidence
Finding
The trigger terms for form automation are broad enough to match ordinary user requests about entering data or filling forms, which can cause the agent to invoke an external automation flow when the user did not clearly intend that action. Because this endpoint can submit data to a target system, accidental invocation could lead to unintended data entry or transactions.

Vague Triggers

Medium
Confidence
90% confidence
Finding
The status-query trigger list includes an ambiguous conversational phrase that could be matched in casual dialogue, causing unnecessary or incorrect task-status lookups. While less severe than write actions, it can still leak operational information about task existence, progress, and timing.

Description-Behavior Mismatch

Medium
Confidence
87% confidence
Finding
The API map exposes a screenshot-capture action that can collect visual data from arbitrary pages, which expands the skill from task orchestration into content capture. In this skill context, screenshots may contain credentials, personal data, internal dashboards, or other sensitive information, and the manifest description does not clearly bound or warn about that capability.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The screenshot capability lacks any warning that captures may include sensitive on-screen information such as PII, financial data, session state, or internal application content. Given this skill's automation context and ability to target arbitrary URLs, the omission increases the likelihood of unsafe use and inadvertent data exfiltration.

Vague Triggers

Medium
Confidence
94% confidence
Finding
Generic keywords like screenshot-related terms are common in normal conversation and may trigger a sensitive capture action without clear user intent. In this skill, that creates risk of collecting sensitive page content from internal or authenticated systems through an external automation backend.

Vague Triggers

Medium
Confidence
91% confidence
Finding
Overly broad stop-task terms such as generic requests to stop or pause can be matched outside a clear RPA context, leading to unintended cancellation of running automation. This can interrupt business workflows, leave systems in inconsistent states, or cause data incompleteness, especially since forced termination is supported.

Natural-Language Policy Violations

Low
Confidence
80% confidence
Finding
The manifest description is written only in Chinese, which can impose a language expectation without offering the user any language choice or indicating that the skill is region-specific. This may conflict with language or locale policy where user opt-in or documented justification is expected.

Static analysis

No suspicious patterns detected.