T03 · Remote Payload Retrieval and Execution
- Location
README.md:77- Finding
Unverified Remote Script Is Piped Directly into a Shell
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is a real Binance automation skill, but it asks for live trading credentials and can convert assets without a confirmation step while overstating safety.
Review carefully before installing. Use only a dedicated Binance sub-account with small balances, no withdrawal permission, IP allowlisting, and preferably testnet/read-only credentials first. Do not paste API secrets into chat or shell commands. Treat `/aegisclaw dust` as a real, immediate asset conversion, and avoid the README's remote `curl | sh` installer path unless independently verified.
README.md:77Unverified Remote Script Is Piped Directly into a Shell
core/asset_scanner.py:127Real Asset Conversion Executes Without Confirmation or Enforced Safety Controls
openclaw_plugin/plugin.py:110Binance API Secrets Are Requested Through Observable Chat and Command-Line Channels
core/security_checker.py:88Security Fence Uses Unreliable Account and Permission Detection
requirements.txt:4Dependencies Are Installed from Mutable Unpinned Version Ranges
install.py:11Installer Uses Shell Parsing for a Command That Does Not Require It
db/database.py:13Financial Records Are Stored in a Predictable Plaintext Database Without Explicit Access Restrictions
core/report_generator.py:56Generated Financial Report Presents a Fabricated Comparative User Ranking
The README simultaneously tells users to disable futures permissions and advertises funding-rate arbitrage that inherently depends on futures/contracts access. This contradiction can confuse operators about the necessary privileges and safety model, leading them to enable risky derivatives permissions under the false impression the tool remains 'defensive' or low-risk.
Describing a financial trading capability as 'risk-free' is an unsafe and misleading claim. Users may rely on that language to justify enabling trading permissions or deploying automation without appropriate controls, exposing them to market, execution, liquidation, and operational risk.
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
# 3. 配置环境变量
# Windows: 复制 .env.example 为 .env 并编辑
# Linux/Mac:
cp .env.example .env
# 编辑 .env 填入你的币安 API Key
# 4. 运行
The README instructs users to install software via a remote script piped directly into a shell. This bypasses normal inspection and integrity verification, creating a supply-chain execution risk where a compromised CDN, MITM, or malicious installer could run arbitrary commands on the host.
安装 Claude Code
# macOS/Linux
curl -fsSL https://cdn.anthropic.com/install.sh | sh
# Windows (使用 scoop)
scoop install claude-code
Using 'curl ... | sh' is a classic command-chaining pattern that turns fetched network content directly into code execution. In the context of a financial automation skill where users may run setup commands on machines holding API credentials, the host compromise risk is especially serious.
安装 Claude Code
# macOS/Linux
curl -fsSL https://cdn.anthropic.com/install.sh | sh
# Windows (使用 scoop)
scoop install claude-code
The closing tagline repeats the unsupported 'risk-free earning' promise, reinforcing a misleading safety narrative around a live-account financial tool. Repetition of this claim increases the likelihood that users underestimate the hazards of autonomous conversion, arbitrage, or derivatives-related workflows.
There is a clear description-to-code mismatch. The declared purpose promises substantial Binance-related capabilities and specific commands, but the provided code chunk is effectively empty and does not implement any of them. This is a materially different actual behavior because there is no functional behavior present at all.
The code only partially aligns with the description. It does support Binance asset access and dust sweep operations, which fit the declared purpose. However, it is not narrowly implementing account security checks, arbitrage scanning, or command handlers; instead it exposes a broad Binance trading client. Most notably, it includes undeclared trading capabilities such as placing and canceling spot orders and retrieving open orders and personal trade history. It also accesses futures market data endpoints, which are not mentioned in the description. While some market data methods could support arbitrage scanning, the implemented behavior is materially broader than the declared purpose, so this should be flagged as a mismatch.
The code is focused narrowly on scanning balances for idle stablecoins, detecting dust assets, suggesting Launchpool participation, converting dust to BNB, and generating a report. This only partially matches the declared description. The declaration prominently includes account security checks and arbitrage scanning, but neither capability appears in this code. It also suggests broader Binance asset management and command handling (init, check, arbitrage, status), which are not implemented in the supplied chunk. Additionally, the code includes Launchpool opportunity retrieval and recommendations, which is a material capability not mentioned in the declared purpose. Therefore the description does not accurately represent this code chunk.
The supplied code is consistent with part of the description: it does scan for arbitrage opportunities and produce a report, specifically for funding-rate arbitrage. However, the declared purpose describes a much broader skill covering Binance asset management, account security checks, automated dust sweeps, and multiple commands. None of those additional capabilities appear in this code chunk. This is a material description-to-behavior mismatch because the actual code’s primary behavior is much narrower and specialized than the declared skill. There is no evidence here of undeclared harmful behavior or inconsistent resource access; the mismatch is primarily overbroad description versus limited implementation.
There is a meaningful description-behavior mismatch. While the declared description includes account security checking, it presents the skill broadly as a Binance asset-management and trading-assistance tool with capabilities like arbitrage scanning and dust sweeps. The provided code chunk only supports the security-check portion: API connectivity testing, account/balance retrieval, heuristic account classification, permission probing, scoring, recommendations, and report formatting. The primary implemented purpose in this chunk is security auditing, not managing assets or executing/scanning trading operations. This is materially narrower and different from the declared multi-function purpose.
The declared description describes a feature-rich Binance automation and analysis skill, but the provided code chunk does not implement any of those capabilities. It is only a stub file for a database module with no functional logic. This is a material mismatch in primary purpose and actual behavior.
The declared description presents a functional Binance operations skill that can manage assets, check security, scan arbitrage, and perform dust sweeps. However, the supplied code chunk does not implement any of those behaviors. It only performs local installation and environment setup tasks: dependency installation, .env template creation, and user guidance. While this setup script references Binance API keys and mentions later running checks via main.py, that is not the same as actually implementing the declared commands or capabilities in this code chunk. Therefore, the code's actual behavior materially differs from the declared purpose.
The declared description promises a specific Binance-focused skill with multiple operational commands and reliance on Binance API credentials. The actual code chunk contains only a placeholder module file with a comment and no executable behavior matching any of those claims. This is a material mismatch in primary purpose and implemented capabilities. The module name/comment also suggests an unrelated OpenClaw plugin rather than a Binance management tool.
The manifest instructs users to initialize the plugin with an API key and API secret but provides no warning against exposing secrets in chat, logs, command history, or stored configuration. In a crypto-trading context, mishandled Binance credentials can enable unauthorized account access or trading activity, making the omission materially risky.
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
from dataclasses import dataclass, field
from typing import List
# 加载 .env 文件
env_path = Path(__file__).parent / ".env"
if env_path.exists():
from dotenv import load_dotenv
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
from dataclasses import dataclass, field
from typing import List
# 加载 .env 文件
env_path = Path(__file__).parent / ".env"
if env_path.exists():
from dotenv import load_dotenv
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
from dataclasses import dataclass, field
from typing import List
# 加载 .env 文件
env_path = Path(__file__).parent / ".env"
if env_path.exists():
from dotenv import load_dotenv
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
from dataclasses import dataclass, field
from typing import List
# 加载 .env 文件
env_path = Path(__file__).parent / ".env"
if env_path.exists():
from dotenv import load_dotenv
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
from dataclasses import dataclass, field
from typing import List
# 加载 .env 文件
env_path = Path(__file__).parent / ".env"
if env_path.exists():
from dotenv import load_dotenv
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
from dataclasses import dataclass, field
from typing import List
# 加载 .env 文件
env_path = Path(__file__).parent / ".env"
if env_path.exists():
from dotenv import load_dotenv
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
from typing import List
# 加载 .env 文件
env_path = Path(__file__).parent / ".env"
if env_path.exists():
from dotenv import load_dotenv
load_dotenv(env_path)
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
from typing import List
# 加载 .env 文件
env_path = Path(__file__).parent / ".env"
if env_path.exists():
from dotenv import load_dotenv
load_dotenv(env_path)
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).
"""运行命令"""
print(f"📦 {description}...")
try:
result = subprocess.run(cmd, shell=True, check=True, capture_output=True, text=True)
print(f"✅ {description} 完成")
return True
except subprocess.CalledProcessError as e:
The dust sweep command triggers a real asset-conversion operation immediately via execute_dust_sweep(args) and records the trade afterward, but there is no confirmation step, dry-run preview, or explicit risk acknowledgment. Because dust conversion is an irreversible financial action, accidental invocation, prompt injection, or user misunderstanding could cause unwanted trades on a live Binance account.
No suspicious patterns detected.