T03 · Remote Payload Retrieval and Execution
- Location
references/mcp.md:22- Finding
Remote installer output is executed directly by system shells
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is a legitimate Tiger Brokers API skill, but it warrants Review because it handles brokerage credentials and live financial actions while including unsafe setup, broad activation, and confirmation-bypass examples.
Install only after review. Use paper trading and MCP read-only mode by default, require explicit human confirmation before any live order, order change, cancellation, fund transfer, or forex conversion, avoid -y in agent workflows, pin and review package versions, do not run curl-to-shell installer commands, never disable TLS verification for real API use, and keep Tiger private keys/tokens out of project or synced editor config files.
references/mcp.md:22Remote installer output is executed directly by system shells
references/mcp.md:13Unpinned packages are executed with access to brokerage credentials and trading tools
references/quickstart.md:438Troubleshooting guidance globally disables HTTPS certificate verification
references/mcp.md:40Long-lived brokerage secrets are embedded in environment variables and persistent editor configuration
Piping network content directly into sh is a dangerous shell-chaining pattern because any compromise of the hosting site, transport path, or referenced script results in immediate arbitrary command execution. Given this skill configures an MCP server for trading-related API access, successful exploitation could also expose credentials and enable downstream account abuse.
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows PowerShell
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
The institutional example includes TIGEROPEN_SECRET_KEY and TIGERMCP_TOKEN alongside the private key without a strong warning about handling highly sensitive authentication material. Because this MCP server can expose trading operations to AI editors, compromise of these secrets could lead to unauthorized API access, account misuse, or potentially fraudulent trading actions.
Skill reads from agent configuration directories (.claude/, .codex/, .gemini/). These directories may contain API keys, personal settings, and other credentials that the skill has no legitimate need to access.
| 编辑器 Editor | 配置路径 Config Path |
|--------------|---------------------|
| Cursor | `.cursor/mcp.json` (项目级) 或 `~/.cursor/mcp.json` (全局) |
| Claude Code | `.claude/settings.local.json` 或 `~/.claude/settings.json` |
| Trae | `.trae/mcp.json` |
| Kiro | `.kiro/settings/mcp.json` (项目级) 或 `~/.kiro/settings/mcp.json` (全局) |
The hidden HTML comment contains behavioral instructions for when the skill should activate around buying, selling, and order placement. Hidden instructions are risky because they influence agent behavior outside normal user-visible content, and in a trading skill they can silently steer the agent toward initiating financial transactions.
---
## 下单 / Place Orders
<!-- 当用户提到 "买入"、"卖出"、"下单"、"buy"、"sell"、"order"、"place order" 时 -->
### 限价单 LMT / Limit Order
The hidden comment before the modify-order section instructs activation on generic modification requests. Because it is concealed from normal readers, it can bias agent behavior toward editing live orders without transparent review, which is especially sensitive in a brokerage context.
## 修改订单 / Modify Order
<!-- 当用户提到 "改单"、"修改订单"、"modify"、"change order" 时 -->
```python
order = trade_client.get_order(id=123456789)
The hidden comment in the order-query section invisibly instructs activation for generic order-related terms. Even though querying is less severe than execution, hidden routing rules undermine transparency and can trigger retrieval of sensitive brokerage information without clearly bounded user intent.
# 所有订单 / All orders
The auto-activation list is extremely broad and includes generic terms like price, account, order, buy, sell, trade, and quote that are common in ordinary financial discussion. This can cause the trading skill to trigger in contexts where the user did not intend brokerage/API assistance, increasing the chance of inappropriate tool exposure, unsafe trade-oriented suggestions, or accidental handling of sensitive account-related workflows.
This documentation explicitly shows how to place a live trade while bypassing the default confirmation prompt using -y. In an AI-agent skill context, that materially lowers the safety barrier for autonomous execution, since an agent could submit real orders without a final human check. Because this skill is specifically for trading operations against a brokerage API, the context makes the issue more dangerous than generic CLI automation guidance.
tigeropen trade order place --symbol AAPL --action BUY --quantity 100 --limit-price 150
tigeropen trade order place --symbol AAPL --action BUY --quantity 100 --limit-price 150 -y
The example shows modifying an existing live order while skipping confirmation with -y, enabling an agent to alter price or quantity without interactive review. Although modification is narrower than initial order placement, it can still materially change execution risk, cost, and market exposure. In a trading skill, this is meaningfully dangerous because order changes can have immediate financial consequences.
tigeropen trade order modify 12345678 --aux-price 140
tigeropen trade order modify 12345678 --limit-price 155 -y
The documentation shows canceling orders with -y, which removes the human confirmation checkpoint for a sensitive account action. While canceling an order is often protective rather than harmful, an autonomous or compromised agent could still disrupt intended trading activity, interfere with strategy execution, or cause financial loss through mistimed cancellations. The trading context increases the significance of this autonomy-enabling pattern.
tigeropen trade order cancel 12345678
tigeropen trade order cancel 12345678 -y
uvx/uv tool run commands without ==version create a rug-pull risk.
uvx/uv tool run commands without ==version create a rug-pull risk.
The skill instructs users to place account identifiers and especially TIGEROPEN_PRIVATE_KEY into environment variables, but it does not clearly warn that these values are highly sensitive and may be exposed through shell history, process inspection, crash logs, screenshots, editor integrations, or misconfigured MCP environments. In the context of a trading MCP server, secret exposure is more dangerous because leaked credentials could enable unauthorized account access or transaction capability.
The file includes multiple code examples that directly call trade_client.place_order(order) for live option and combo trades, but it does not place a clear, prominent warning immediately around those examples that they can execute real transactions against a funded brokerage account. In a trading skill, this is especially risky because users may copy-paste examples into a configured environment and unintentionally submit market-impacting orders, creating immediate financial loss or unwanted positions.
The document instructs users to connect with client_config.tiger_id and client_config.private_key, and earlier references loading config from a local path. Although this is part of the skill's purpose, the markdown does not include an explicit warning that the private key is sensitive credential material and should not be exposed in logs, shared configs, or source control.
This markdown file demonstrates subscribing to order, position, asset, and transaction push events, which expose sensitive account and portfolio information. While the examples explain how to enable these feeds, they do not warn that these callbacks surface private financial data and should be handled, logged, and shared carefully.
The documentation shows private keys and other secrets in properties files, environment variables, and inline code examples without strong warnings about leakage through source control, shell history, logs, screenshots, or shared development environments. In a trading context, exposed credentials could enable unauthorized access to market data or trading APIs, making the omission more dangerous than in a non-financial SDK.
The SSL troubleshooting snippet globally disables HTTPS certificate verification by assigning ssl._create_default_https_context = ssl._create_unverified_context. In a trading SDK skill, this can expose API credentials, account data, and trading actions to man-in-the-middle attacks if users copy the snippet into real code, even though it is labeled 'debug only'.
The skill embeds broad trigger phrases like 'buy', 'sell', 'order', and 'place order' in hidden comments to drive invocation of order-placement behavior. In a trading skill, over-broad activation increases the chance that routine discussion is interpreted as intent to place trades, which could lead to unintended high-risk financial actions.
The CLI documentation includes a '-y' option to skip confirmation for order cancellation. In an agent-executable context, suppressing confirmation reduces friction around state-changing financial actions and can enable accidental or automated cancellation of live orders without a user checkpoint.
# CLI
tigeropen trade order cancel ORDER_ID
tigeropen trade order cancel ORDER_ID -y # 跳过确认 / skip confirmation
撤销为异步操作。使用
id(全局订单ID)。Cancellation is async. Use global orderid.
The hidden trigger comment for order queries uses generic terms like 'orders' and 'order list', which may activate this skill in contexts that are merely informational. While querying orders is less dangerous than placing them, it can still expose sensitive account activity or cause the agent to enter a trading workflow unexpectedly.
The fund transfer section documents moving money between trading segments without an explicit warning that this affects real funds and may alter margin availability and liquidation risk. In a live brokerage skill, omission of a strong warning and confirmation flow materially increases the risk of accidental movement of real capital.
The forex order example omits an explicit warning that currency conversion is a real executable financial transaction with potential fees, slippage, and account-balance effects. In a brokerage skill, presenting conversion as a simple utility call can cause users or agents to treat it as harmless data manipulation rather than a live order.
pip install without ==version installs the latest release, which could include malicious changes.
The instruction curl -LsSf https://astral.sh/uv/install.sh | sh downloads and executes a remote script in one step, preventing meaningful inspection before execution and creating a classic supply-chain/code-execution risk. In a developer-tooling skill, this is more dangerous because users are likely to run the command on workstations that also hold source code, tokens, and trading credentials.
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows PowerShell
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
No suspicious patterns detected.