T03 · Remote Payload Retrieval and Execution
- Location
SKILL.md:64- Finding
Unpinned Remote Installer Is Executed Directly by a Shell
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is coherent for selling a custom API endpoint, but its install/update path runs unverified remote code and it handles stored API keys.
Review before installing. Only run the installer if you trust asale.ai's live download path, or prefer a pinned/signed release if available. Before connecting an endpoint, verify the exact base URL and use a revocable, scoped API key because the daemon will probe with it and store it for selling traffic.
SKILL.md:64Unpinned Remote Installer Is Executed Directly by a Shell
SKILL-cn.md:59Unpinned Remote Installer Is Executed Directly by a Shell in the Localized Instructions
The installation metadata uses curl ... | sh and the PowerShell equivalent irm ... | iex, which execute remotely fetched code without prior integrity verification. If the distribution endpoint, TLS trust chain, DNS, or hosting account is compromised, users can be induced to run arbitrary code on their machines.
name: asale-sell-endpoint
version: 0.2.7
description: "Sell a custom OpenAI-compatible endpoint on the asale market: probe it, connect it as an account, and price it above what its own tokens cost. 把自定义 OpenAI 兼容端点挂到 asale 市场上卖:先探测、接入成账号,并把价格定在它自己的 token 成本之上。"
metadata: {"clawdbot":{"emoji":"📤","requires":{"bins":["curl"]},"install":"curl -fsSL https://asale.ai/dl/install.sh | sh","installAlternative":"irm https://asale.ai/dl/install.ps1 | iex","homepage":"https://asale.ai","source":"https://github.com/asale-ai/asale","author":"asale","license":"see-repo","configLocation":"~/.asale/daemon.token","apiEndpoints":["127.0.0.1:9700"]},"openclaw":{"systemPrompt":"Drive the asale daemon at 127.0.0.1:9700 with the token from ~/.asale/daemon.token. connect_custom_endpoint spends and stores the user's API key — confirm before calling. Never call remove_custom_endpoint."}}
---
# asale-sell-endpoint
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.
curl -sS --noproxy 127.0.0.1 -X POST "http://127.0.0.1:9700/rpc/$1"
-H 'content-type: application/json' -H "x-asale-token: $TOKEN" -d "$body"
}
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.
curl -sS --noproxy 127.0.0.1 -X POST "http://127.0.0.1:9700/rpc/$1"
-H 'content-type: application/json' -H "x-asale-token: $TOKEN" -d "$body"
}
The metadata recommends installation via curl ... | sh and PowerShell iex, which executes remote code directly from the network without prior verification. If the hosting site, transport, or upstream distribution path is compromised, users could run attacker-controlled code immediately on their machines.
name: asale-sell-endpoint
version: 0.2.7
description: "Sell a custom OpenAI-compatible endpoint on the asale market: probe it, connect it as an account, and price it above what its own tokens cost. 把自定义 OpenAI 兼容端点挂到 asale 市场上卖:先探测、接入成账号,并把价格定在它自己的 token 成本之上。"
metadata: {"clawdbot":{"emoji":"📤","requires":{"bins":["curl"]},"install":"curl -fsSL https://asale.ai/dl/install.sh | sh","installAlternative":"irm https://asale.ai/dl/install.ps1 | iex","homepage":"https://asale.ai","source":"https://github.com/asale-ai/asale","author":"asale","license":"see-repo","configLocation":"~/.asale/daemon.token","apiEndpoints":["127.0.0.1:9700"]},"openclaw":{"systemPrompt":"Drive the asale daemon at 127.0.0.1:9700 with the token from ~/.asale/daemon.token. connect_custom_endpoint spends and stores the user's API key — confirm before calling. Never call remove_custom_endpoint."}}
---
# asale-sell-endpoint
Referenced artifact was not completely inspected
[English](./SKILL.md) · [中文](./SKILL-cn.md)
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.
curl -sS --noproxy 127.0.0.1 -X POST "http://127.0.0.1:9700/rpc/$1"
-H 'content-type: application/json' -H "x-asale-token: $TOKEN" -d "$body"
}
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
curl -sS --noproxy 127.0.0.1 -X POST "http://127.0.0.1:9700/rpc/$1"
-H 'content-type: application/json' -H "x-asale-token: $TOKEN" -d "$body"
}
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
curl -sS --noproxy 127.0.0.1 -X POST "http://127.0.0.1:9700/rpc/$1"
-H 'content-type: application/json' -H "x-asale-token: $TOKEN" -d "$body"
}
This workflow instructs the agent to submit a user-supplied API key to an arbitrary custom endpoint via connect_custom_endpoint, and the document states that the daemon will probe the remote server and then store the key. That creates a real secret-transmission risk: a mistyped, malicious, or attacker-controlled endpoint can harvest the credential, and the key is then retained locally for later use.
call connect_custom_endpoint '{"baseUrl":"https://api.example.com/v1","apiKey":"<key>","label":"house","minRatio":10,"concurrency":5}'
守护进程会先校验 URL、用这个 key 探测 GET {base}/models,然后才存任何东西——
文档在 AGENT 指令中要求“把 sellable_models 念回给用户”,且整份技能文件面向中文输出,没有说明这是用户自选语言,也没有给出仅适用于中文地区/用户的约束理由。按规则,强制特定语言而无用户 opt-in 属于自然语言政策违规。
The skill instructs the agent to send a user-supplied API key to an arbitrary custom endpoint URL and explicitly says the daemon will probe GET {base}/models with that key before storing it. This creates a real credential-exposure risk because a mistyped, malicious, or attacker-controlled endpoint can harvest the API key, and the key is then persisted by the daemon.
call connect_custom_endpoint '{"baseUrl":"https://api.example.com/v1","apiKey":"<key>","label":"house","minRatio":10,"concurrency":5}'
The daemon validates the URL and probes GET {base}/models with the key