T03 · Remote Payload Retrieval and Execution
- Location
SKILL.md:20- Finding
Unpinned Remote Installer Downloaded and Executed Without Verification
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is mostly a disclosed Zerodha CLI command router, but it gives unsafe install commands and handles trading credentials in a way users should review carefully.
Before installing, review the installer source and prefer a pinned release with checksum or signature verification instead of piping GitHub content directly into a shell. Do not paste Zerodha API secrets into ordinary chat or run commands that expose secrets in shell history; use a safer credential prompt or rotate credentials if they were exposed. Treat generated order, cancel, exit, revoke, delete, and SIP/MF commands as live financial actions and confirm them manually before running.
SKILL.md:20Unpinned Remote Installer Downloaded and Executed Without Verification
SKILL.md:68API Secrets Exposed Through Generated Command-Line Arguments
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
- If no profile is selected, use:
`zerodha config profile use <name>`
5. Auth/session:
- API data/order commands require an access token.
- If missing, run `zerodha auth login ...`.
- CLI auto-refreshes access token when refresh token exists.
6. Never guess missing required fields for write actions; ask for the missing values.
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
- If no profile is selected, use:
`zerodha config profile use <name>`
5. Auth/session:
- API data/order commands require an access token.
- If missing, run `zerodha auth login ...`.
- CLI auto-refreshes access token when refresh token exists.
6. Never guess missing required fields for write actions; ask for the missing values.
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
- If no profile is selected, use:
`zerodha config profile use <name>`
5. Auth/session:
- API data/order commands require an access token.
- If missing, run `zerodha auth login ...`.
- CLI auto-refreshes access token when refresh token exists.
6. Never guess missing required fields for write actions; ask for the missing values.
The skill explicitly instructs downstream agents to install the CLI by piping remote scripts from GitHub directly into a shell (sh/iex). This creates a supply-chain and arbitrary code execution risk because any compromise of the repository, network path, or referenced script causes immediate code execution on the user's machine without verification or warning.
The login flow directs users to pass sensitive values such as api_key, api_secret, and request tokens on the command line. Secrets supplied as CLI arguments can be exposed through shell history, process listings, terminal logging, or agent telemetry, increasing the chance of credential leakage.
The skill description includes irreversible or impactful operations such as removing profiles, logging out, revoking refresh tokens, cancelling orders, exiting orders, and deleting GTT triggers. The markdown does not warn users that these actions can disrupt access or trading state, despite affecting account and order integrity.
The command curl ... | sh fetches a script from an external source and immediately executes it. This is dangerous because it trusts remote content at runtime without integrity verification, allowing arbitrary code execution if the source is tampered with.
Install commands:
- Linux/macOS (`curl`): `curl -fsSL https://raw.githubusercontent.com/jatinbansal1998/zerodha-kite-cli/main/scripts/install.sh | sh`
- Linux/macOS (`wget`): `wget -qO- https://raw.githubusercontent.com/jatinbansal1998/zerodha-kite-cli/main/scripts/install.sh | sh`
- Windows PowerShell: `irm https://raw.githubusercontent.com/jatinbansal1998/zerodha-kite-cli/main/scripts/install.ps1 | iex`
- Windows CMD: `powershell -NoProfile -ExecutionPolicy Bypass -Command "irm https://raw.githubusercontent.com/jatinbansal1998/zerodha-kite-cli/main/scripts/install.ps1 | iex"`
The wget -qO- ... | sh pattern has the same arbitrary code execution and supply-chain exposure as curl | sh. It silently downloads remote content and pipes it to a shell without validation, making compromise of the upstream source immediately impactful.
Install commands:
- Linux/macOS (`curl`): `curl -fsSL https://raw.githubusercontent.com/jatinbansal1998/zerodha-kite-cli/main/scripts/install.sh | sh`
- Linux/macOS (`wget`): `wget -qO- https://raw.githubusercontent.com/jatinbansal1998/zerodha-kite-cli/main/scripts/install.sh | sh`
- Windows PowerShell: `irm https://raw.githubusercontent.com/jatinbansal1998/zerodha-kite-cli/main/scripts/install.ps1 | iex`
- Windows CMD: `powershell -NoProfile -ExecutionPolicy Bypass -Command "irm https://raw.githubusercontent.com/jatinbansal1998/zerodha-kite-cli/main/scripts/install.ps1 | iex"`
The intent defaults repeat unsafe installer behavior by routing generic install requests to remote script execution commands. Because this is a default path, the skill increases the likelihood that downstream agents will suggest unsafe one-liners broadly and automatically.
# Intent to Command Defaults
- If user asks generic "install zerodha cli":
- Linux/macOS: `curl -fsSL https://raw.githubusercontent.com/jatinbansal1998/zerodha-kite-cli/main/scripts/install.sh | sh`
- Windows: `irm https://raw.githubusercontent.com/jatinbansal1998/zerodha-kite-cli/main/scripts/install.ps1 | iex`
- If user asks generic "login" and no auth fields are provided:
- ask for `api_key` and `api_secret` first (profile defaults to `default` unless specified)
No suspicious patterns detected.