T05 · Unauthorized Access and Privilege Escalation
- Location
scripts/trade.py:22- Finding
Undocumented Direct Live-Order Trading Capability
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This Hummingbot skill is trading-related, but it needs Review because it ships under-documented direct order placement and weak credential/API configuration practices that could affect real funds.
Review this before installing if it will connect to real exchange accounts. Use paper trading or testnet first, remove or avoid scripts/trade.py if direct order placement is not intended, disable withdrawals on exchange API keys, avoid passing secrets on the command line, set an explicit trusted local or HTTPS Hummingbot API URL, and change any default admin/admin credentials.
scripts/trade.py:22Undocumented Direct Live-Order Trading Capability
scripts/hbot_client.py:17Undeclared Working-Directory Environment File Loading
scripts/history.py:28Basic Authentication Credentials Can Be Sent over Plaintext HTTP to an Arbitrary Host
scripts/hbot_client.py:41Known Default Administrative Credentials Are Used When Configuration Is Missing
SKILL.md:6Security-Sensitive API Client Dependency Is Not Reproducibly Pinned
The declared description says this skill faithfully reproduces core Hummingbot CLI trading commands such as connect, balance, create, start, stop, status, and history. However, the provided code chunk is focused on account administration and credential management, not trading workflow execution. While listing connectors and adding credentials is somewhat adjacent to a 'connect' concept, the script does not expose the declared command set and instead adds undeclared capabilities around account creation and credential deletion/storage. This is a material description-behavior mismatch because the primary purpose differs from the declared trading CLI replication.
The declared description says the skill reproduces key Hummingbot CLI commands for core trading workflows, naming connect, balance, create, start, stop, status, and history. The supplied code does not implement those account/trading workflow commands. Instead, it manages bot lifecycle operations: list, deploy, stop, status, logs, controllers, and scripts. While there is partial overlap on stop and status, the primary purpose is materially different: bot deployment and inspection rather than general Hummingbot CLI command reproduction. It also exposes undeclared capabilities such as fetching logs and listing controllers/scripts.
The declared description says the skill faithfully reproduces multiple Hummingbot CLI commands through the API as a core trading workflow agent. This code chunk does not support that broad purpose. It is limited to a create.py helper that lists controllers/scripts/configs and partially handles controller config creation. There is no evidence here of trading workflow commands like connect, balance, start, stop, status, or history. Additionally, even within 'create', functionality is partial: script creation is not implemented, and controller creation mostly checks template existence and prints a config path rather than fully creating/configuring a bot. This is a material description-to-behavior mismatch due to substantially narrower and different actual functionality.
The declared purpose describes a skill that reproduces core Hummingbot CLI commands through the API. The supplied code does not perform those commands; instead, it is a utility module for loading API credentials from local .env files/environment variables, instantiating the API client, and formatting table output. While this helper could support such a skill, the code chunk itself does not match the declared primary functionality. Therefore this chunk is a description/behavior mismatch.
The declared description presents the skill as a broader Hummingbot CLI replica covering multiple core commands. The supplied code chunk, however, is narrowly focused on retrieving and displaying trading history for a bot, with an optional summary view. It uses the Hummingbot API consistently with the description and does not show unrelated or suspicious extra behavior, but it materially underdelivers relative to the declared scope. Therefore this is a description-to-behavior mismatch for this chunk because the actual primary purpose is just history retrieval, not the full set of CLI workflows described.
There is a clear description-behavior mismatch. The declared description says this skill faithfully reproduces core Hummingbot CLI commands related to account connection, balances, strategy creation, bot lifecycle control, and history. The supplied code instead defines a separate utility for market data access only. Its subcommands are price, orderbook, candles, and funding, all calling c.market_data APIs. No code handles account connectivity, balances, creating strategies, starting/stopping bots, status checks, or history retrieval. This is not a minor implementation detail; it is a materially different primary purpose and adds undeclared capabilities while omitting the declared ones.
There is a clear description-behavior mismatch. The declared purpose says the skill faithfully reproduces core Hummingbot CLI commands related to connection management, balances, strategy creation, bot lifecycle control, status, and history. However, the supplied code chunk only provides portfolio management/reporting functionality: querying overall state, total value, distribution, and token-specific holdings. These are materially different capabilities and do not correspond to the declared command set. While both relate to Hummingbot APIs, the primary purpose of the code is portfolio analysis rather than reproducing the stated Hummingbot CLI trading workflow commands.
The description says the skill reproduces multiple Hummingbot CLI commands and focuses on V1 core trading workflows. This code only covers a narrow subset: starting bots and listing running bots. It does not implement connect, balance, create, stop, status, or history in this chunk. More importantly, the code repeatedly states that the Hummingbot API supports V2 strategies only and that V1 strategies must use the traditional client, which materially conflicts with the declared V1 focus. Therefore, the code behavior is not accurately represented by the declared description.
The description says the skill reproduces a specific set of Hummingbot CLI commands: connect, balance, create, start, stop, status, and history. This code chunk instead provides a different trading interface focused on direct order management and positions: order, orders, cancel, positions, and history. While both are related to Hummingbot trading workflows and the use of the Hummingbot API is consistent, the declared description materially misrepresents the actual command surface and capabilities of this code. The mismatch is both by omission of undeclared capabilities (order placement/cancellation, positions) and by absence of several prominently declared capabilities (connect, balance, create, start, stop, status).
The skill documents commands that can start live trading bots and close positions, but it does not prominently warn that these actions can create real financial loss, market exposure, or irreversible executions. In this context, omission of risk warnings is more dangerous because the skill is specifically aimed at automated trading workflows where agent or user mistakes can immediately trigger loss-causing actions.
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
Shared Hummingbot API client helper.
Auth priority:
1. ./hummingbot-api/.env (API_USER, API_PASS)
2. ~/.hummingbot/.env
3. .env (current directory)
4. Environment variables
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
Shared Hummingbot API client helper.
Auth priority:
1. ./hummingbot-api/.env (API_USER, API_PASS)
2. ~/.hummingbot/.env
3. .env (current directory)
4. Environment variables
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
Shared Hummingbot API client helper.
Auth priority:
1. ./hummingbot-api/.env (API_USER, API_PASS)
2. ~/.hummingbot/.env
3. .env (current directory)
4. Environment variables
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
Shared Hummingbot API client helper.
Auth priority:
1. ./hummingbot-api/.env (API_USER, API_PASS)
2. ~/.hummingbot/.env
3. .env (current directory)
4. Environment variables
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
ENV_PATHS = [
"hummingbot-api/.env",
os.path.expanduser("~/.hummingbot/.env"),
".env",
]
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
ENV_PATHS = [
"hummingbot-api/.env",
os.path.expanduser("~/.hummingbot/.env"),
".env",
]
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
ENV_PATHS = [
"hummingbot-api/.env",
os.path.expanduser("~/.hummingbot/.env"),
".env",
]
The skill exposes capabilities that involve reading environment/config secrets and interacting with a local API over the network, but it does not declare any tool scope such as permissions or allowed-tools. This weakens least-privilege controls and makes it harder for a host agent or reviewer to understand that the skill can access credentials and trigger trading-related API actions.
The skill instructs users to provide exchange API keys and also documents fallback default API credentials of admin/admin for the Hummingbot API without a strong warning. In a trading context, this increases the chance of credential leakage, insecure deployment, or unauthorized access to a local trading service that can manage exchange connections and bot actions.
The manifest says the skill faithfully reproduces a limited set of Hummingbot CLI commands such as connect, balance, create, start, stop, status, and history via the Hummingbot API. This file instead documents an advanced PMM Mister controller with detailed trading-strategy configuration, leverage, position management, and risk controls, indicating the skill surface includes strategy-specific guidance beyond the manifest's stated core command-reproduction scope.
The documentation promotes leveraged perpetual trading and automated stop-loss/take-profit behavior without an explicit risk disclosure. In a trading skill context, omission of clear warnings can lead users to apply high-risk strategies without understanding liquidation, slippage, and rapid-loss scenarios, increasing the chance of financial harm.
The aggressive example normalizes 20x leverage and rapid-refresh scalping settings without any suitability warning or guardrails. In this skill context, examples are likely to be copied directly by users, so presenting extreme leverage as a ready-to-use template materially increases the risk of severe financial losses or liquidation.
The documentation describes an automated market-making controller that continuously places, cancels, and refreshes live exchange orders, but it does not prominently warn users that enabling it can immediately affect real balances, create unintended trades, and incur fees. In a trading skill context, omission of this warning increases the chance that a user treats the controller as informational rather than fund-impacting automation, which can lead to financial loss from misconfiguration or accidental live deployment.
The usage examples explicitly encourage users to pass API keys, secret keys, and passphrases on the command line. Command-line arguments are commonly exposed through shell history, process listings, audit logs, and terminal recording, which can lead to credential disclosure and downstream account compromise.
This script implements adding and removing exchange API credentials, which goes beyond the manifest’s described CLI scope of trading workflows such as connect, balance, create, start, stop, status, and history. Scope expansion around credential management is security-relevant because it introduces secret-handling capabilities that may not be expected, reviewed, or constrained by users and operators.
No suspicious patterns detected.