T03 · Remote Payload Retrieval and Execution
- Location
SKILL.md:106- Finding
Unverified Remote Installer Is Downloaded and Executed by a Shell
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This devnet Solana game is mostly coherent, but it includes under-disclosed wallet-signing/admin actions and unsafe setup/dependency risks that users should review carefully before installing.
Install only in an isolated devnet environment with a disposable Solana keypair and no mainnet funds. Do not run the curl-piped installer without independently verifying it, review all wallet-signing transactions before approval, and avoid using this code for real-value gambling unless the randomness, jackpot accounting, dependency vulnerabilities, and admin-command separation are fixed.
SKILL.md:106Unverified Remote Installer Is Downloaded and Executed by a Shell
program/src/lib.rs:101Gambling Results Are Derived from Predictable and Influenceable On-Chain Values
program/src/lib.rs:133Historical Winning Tickets Can Claim Jackpot Funds Deposited for Later Rounds
next==16.0.10 is explicitly identified as having multiple advisories, including critical issues such as unauthenticated RCE in the Image Optimization API and middleware/proxy bypasses. In a wallet-connected gaming application, compromise of the frontend server could enable phishing flows, transaction manipulation, session abuse, or user data exposure.
The skill description presents a simple devnet jackpot game, while the static findings indicate hidden or inconsistent behavior such as admin withdrawal capability, operator fees, or a different execution environment. Mismatches between stated behavior and actual behavior are dangerous because users may approve actions involving funds or trust assumptions they would reject if accurately disclosed.
The skill description presents a simple devnet jackpot game, while the static findings indicate hidden or inconsistent behavior such as admin withdrawal capability, operator fees, or a different execution environment. Mismatches between stated behavior and actual behavior are dangerous because users may approve actions involving funds or trust assumptions they would reject if accurately disclosed.
The skill description presents a simple devnet jackpot game, while the static findings indicate hidden or inconsistent behavior such as admin withdrawal capability, operator fees, or a different execution environment. Mismatches between stated behavior and actual behavior are dangerous because users may approve actions involving funds or trust assumptions they would reject if accurately disclosed.
The skill description presents a simple devnet jackpot game, while the static findings indicate hidden or inconsistent behavior such as admin withdrawal capability, operator fees, or a different execution environment. Mismatches between stated behavior and actual behavior are dangerous because users may approve actions involving funds or trust assumptions they would reject if accurately disclosed.
The skill description presents a simple devnet jackpot game, while the static findings indicate hidden or inconsistent behavior such as admin withdrawal capability, operator fees, or a different execution environment. Mismatches between stated behavior and actual behavior are dangerous because users may approve actions involving funds or trust assumptions they would reject if accurately disclosed.
The skill description presents a simple devnet jackpot game, while the static findings indicate hidden or inconsistent behavior such as admin withdrawal capability, operator fees, or a different execution environment. Mismatches between stated behavior and actual behavior are dangerous because users may approve actions involving funds or trust assumptions they would reject if accurately disclosed.
The skill description presents a simple devnet jackpot game, while the static findings indicate hidden or inconsistent behavior such as admin withdrawal capability, operator fees, or a different execution environment. Mismatches between stated behavior and actual behavior are dangerous because users may approve actions involving funds or trust assumptions they would reject if accurately disclosed.
The withdraw-fees command can transfer operator funds from the game vault using the local authority wallet, but this administrative capability is not justified by the end-user gameplay description. If bundled into a user-consumable skill, it creates a high-risk path for unauthorized or accidental fund movement when an operator wallet is available on the machine.
The close-game-v1 command performs a destructive lifecycle action that can close a game PDA for migration, yet it is exposed in the same script as routine gameplay commands. This is dangerous because a user or automation invoking the script may trigger irreversible administrative state changes under the authority wallet without appreciating the impact.
The destructive close-game-v1 operation lacks an explicit confirmation prompt or safety interlock before submitting the transaction. Because it is adjacent to normal commands in a game demo script, the absence of a confirmation step materially raises the risk of accidental irreversible administrative actions.
bigint-buffer 1.1.5 is flagged for a buffer overflow in toBigIntLE(), and it is present as a production transitive dependency via Solana token tooling. Even though this lockfile alone does not prove a reachable exploit path, memory-corruption issues in parsing/serialization libraries are generally high risk because malformed input can trigger crashes or undefined behavior in client processes.
brace-expansion 2.0.2 has multiple DoS issues involving pathological pattern expansion. In this lockfile it appears as a dev/test dependency path, so it is less likely to affect production runtime, but it remains a real vulnerability if CI, local tooling, or any service-side developer utility processes untrusted glob-like patterns.
js-yaml 4.1.1 has several CPU exhaustion issues on crafted YAML input. In this project it is present through dev tooling, which reduces direct user-facing risk, but YAML parsers are commonly exposed in CI/config workflows and can still be abused for denial of service if untrusted files are processed.
minimatch 9.0.5 is affected by ReDoS conditions from crafted glob patterns. Since it is a dev dependency in this tree, production exploitability is reduced, but any automation or service that accepts attacker-controlled patterns could suffer CPU exhaustion.
ws 8.19.0 is flagged for memory disclosure and memory exhaustion issues, and it is included in the runtime path via rpc-websockets used by Solana web3 connectivity. Because this skill interacts with live blockchain infrastructure over WebSockets, a vulnerable WS client/server library is more relevant than usual and could enable denial of service or leakage during hostile network interactions.
serialize-javascript 6.0.2 has an RCE-related advisory and a CPU exhaustion issue, but in this lockfile it is only present through mocha as a dev dependency. That makes the risk much lower for the deployed skill, though it is still a real issue in developer or CI environments that serialize attacker-influenced objects.
toml 3.0.0 is affected by uncontrolled recursion and prototype pollution. Anchor depends on toml at runtime for configuration parsing, so if this skill or adjacent tooling ingests attacker-controlled TOML, it could trigger crashes or object prototype corruption with broader application consequences.
ws 7.5.10 is vulnerable to memory exhaustion from fragmented frames, but this instance is under jayson and appears in a secondary dependency path. It is still a genuine DoS risk if hostile WebSocket traffic reaches that stack, though likely less central than the ws 8.x instance used by rpc-websockets.
This component builds a block with dangerouslySetInnerHTML from dynamic values in config, including chart keys and color/theme strings, without escaping or constraining them. If any part of config can be influenced by untrusted input, an attacker can break out of the CSS context and inject arbitrary style content and potentially script-adjacent payloads, resulting in DOM-based injection/XSS risk.
return (
<style
dangerouslySetInnerHTML={{
__html: Object.entries(THEMES)
.map(
([theme, prefix]) => `
The test script invokes ts-mocha through npx without pinning an exact version, which can cause execution of whatever version is resolved at runtime from the local environment or registry. In a development workflow, this introduces supply-chain risk: a compromised, typosquatted, or unexpectedly updated package could execute arbitrary code during test runs.
The example command uses a local keypair path without clearly stating that only a disposable devnet/test wallet should be used. Users may accidentally run the command with a real wallet file, increasing risk of operational mistakes, privacy loss, or signing unintended transactions in a blockchain context.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
# Game state (base64 -> decode with IDL layout)
curl -s https://api.devnet.solana.com -X POST -H "Content-Type: application/json" -d '{
"jsonrpc": "2.0", "id": 1,
"method": "getAccountInfo",
"params": ["AAEwxhqM1EGjTbCyPqSCX7YpyuRqzBBfyf2kJG1nsGqd", {"encoding": "base64"}]
The skill invokes Node-based commands, references external APIs, and instructs users to interact with wallets and network resources, but it declares no explicit tool scope or permissions. That weakens least-privilege controls and makes it harder for agents or users to understand that network and environment access are required before running the skill.
The enter command causes a wallet-funded USDC transaction, but the skill does not present a prominent warning at the point of use that real wallet funds will be spent. In an agent context, insufficient spend disclosure can trick or rush users into authorizing transfers they do not fully understand, especially when a wallet path is accepted as an argument.
Detected: suspicious.env_credential_access, suspicious.potential_exfiltration