local-portfolio-auditor

Security checks across malware telemetry and agentic risk

Overview

This appears to be a read-only portfolio auditing skill, with the main caveat that wallet or portfolio identifiers may be sent to third-party market data services.

Install only if you are comfortable with the skill reading your local portfolio file and sending wallet addresses or market-data queries to third-party providers such as Etherscan or CoinGecko. Use limited-purpose API keys, review portfolio.json before running it, and never include private keys, seed phrases, exchange credentials, or account passwords in the portfolio file.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (3)

Vague Triggers

Medium
Confidence
87% confidence
Finding
The trigger phrases are broad, natural-language requests that could match ordinary user intents about finances without clearly signaling that a local-file-reading skill will run. This increases the chance of accidental invocation and unintended access to sensitive portfolio data from a local configuration file, even though the stated functionality is read-only.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The code transmits a wallet address and API key to Etherscan, which is an external third party, without any explicit user-facing notice or consent flow. Even though this is functionally necessary to retrieve a balance, portfolio holdings and wallet identifiers are sensitive financial metadata, and silent transmission can violate user expectations and privacy requirements.

External Transmission

Medium
Category
Data Exfiltration
Content
return 1.5 # Dummy balance

    try:
        url = f"https://api.etherscan.io/api?module=account&action=balance&address={address}&tag=latest&apikey={etherscan_api_key}"
        response = requests.get(url, timeout=10)
        response.raise_for_status()
        data = response.json()
Confidence
88% confidence
Finding
https://api.etherscan.io/

VirusTotal

64/64 vendors flagged this skill as clean.

View on VirusTotal