Back to skill

Security audit

Kuvera Portfolio & Market Data

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent read-only Kuvera data tool, but its login flow exposes financial-account credentials and stores a reusable token without clear local protections.

Review this before installing. Market-data commands are low concern, but logging in gives the skill access to sensitive Kuvera profile and investment data. Avoid entering a real password as a command-line argument on shared or logged systems, and understand that the saved bearer token may remain readable according to local filesystem permissions until removed or expired.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (2)

T09 · Insecure Skill Coding Practices

Error
Location
kuvera-cli.js:288
Finding

Kuvera Password Exposed Through Command-Line Arguments

Content
View full analysis
"); process.exit(1); } await login(args[0], args[1]); break; ``` The insecure invocation pattern is also documented in: - `README.md:24` - `SKILL.md:111` - `references/api-guide.md:27` ### Technical Analysis The login command requires the user's Kuvera email address and password to be supplied as positional command-line arguments. Command-line arguments are not a secure secret-input mechanism. Depending on the operating system and execution environment, the password may become visible through: - Shell history files. - Process listings and process-inspection interfaces while the command is running. - OpenClaw, terminal, audit, or command-execution logs. - Diagnostic reports that capture process command lines. - Monitoring or observability tools that record executed commands. The credential is legitimately transmitted over HTTPS to the fixed Kuvera authentication endpoint, but accepting it through `process.argv` exposes it locally before transmission. This exceeds the minimum exposure necessary for authentication because the password can instead be collected through a hidden interactive prompt or protected standard input. ### Attack Path 1. A user follows the documented workflow and runs: ```bash kuvera-cli login victim@example.com KuveraPassword ``` 2. The command, including the plaintext password, is recorded in shell history, execution logs, or another command-recording facility. Alternatively, a local process with sufficient process-inspection access reads the arguments while the CLI is running. 3. An attacker who can access one of these sources extracts the email address and password. 4. The attacker authenticates directly ...[truncated 755 chars]
Remediation
View remediation
` positional-argument examples from `README.md`, `SKILL.md`, `references/api-guide.md`, help output, and error messages. 7. Review OpenClaw command logging and redact authentication inputs from execution records. 8. Encourage users who previously invoked the documented command to remove exposed history entries and rotate their Kuvera passwords where logs or history may have been accessible. ]]>

T09 · Insecure Skill Coding Practices

Warning
Location
kuvera-cli.js:42
Finding

Bearer Token Stored Without Explicit Restrictive File Permissions

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Rogue AgentSelf-Modification, Session Persistence
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (5)

Session Persistence

Medium
Category
Rogue Agent
Confidence
60% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · README.md (reported line 10)May include surrounding context.

md
- 📊 **Market Data** — Gold prices, USD/INR rate, NIFTY 50 fund NAVs
- 🏦 **Fund Lookup** — Search mutual fund schemes, browse categories
- 👤 **Portfolio** — View user profile & investment summary (requires login)
- 🔒 **Read-Only Safety** — All write APIs are blocked at the code level

## Installation

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The README instructs users to pass their email and password directly on the command line, which can expose credentials through shell history, process listings, terminal logs, and automation traces. In a skill that accesses financial portfolio data, this is particularly sensitive because compromise of those credentials could expose personal investment information and potentially enable account access beyond this tool.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding

The skill invokes a CLI with detected environment and network capabilities but does not declare any explicit tool scope such as allowed tools or permissions. That creates an authorization gap: an agent may run a network-capable binary without clear policy constraints, and the same CLI also supports authenticated access to sensitive portfolio data via prior login state or environment-derived credentials.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The CLI accepts a password on the command line and sends credentials to a remote service, then stores the returned bearer token unencrypted on disk under the user's home directory. Command-line passwords can be exposed via shell history or process listings, and plaintext token storage increases the risk of account compromise if the local machine or filesystem is accessed by another user or malware.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The documentation instructs use of kuvera-cli login <email> <password> and states that a JWT token is stored, but it provides no guidance about secure credential entry, token storage location, file permissions, shell history exposure, or token lifecycle. In a CLI skill that handles financial account access, this omission can lead users to expose passwords via process lists or shell history and leave reusable tokens stored insecurely on disk.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.