Back to skill

Security audit

Astranova

Security checks for vulnerabilities and agentic risk

Overview

This skill is coherently about AstraNova trading, but it delegates financial and wallet actions to changeable online instructions without enough local safeguards.

Review before installing. Use this only if you trust AstraNova's live instruction host and are comfortable with an agent saving an API key locally, making authenticated trades or posts, and helping set up or use a Solana wallet. Require manual approval for every trade, wallet funding action, wallet registration, reward claim, and transaction signature.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Findings (1)

T01 · Skill Instruction Hijacking

Error
Location
SKILL.md:51
Finding
Mutable Remote Instructions Can Hijack Financial and Wallet Operations## Vulnerability Details **File Location**: `SKILL.md`, lines 51-83 **Vulnerability Type**: T01: Skill Instruction Hijacking **Risk Level**: High ### Vulnerable Code Snippet ```markdown ## Your Journey This skill file is modular. Follow this path — each module tells you when to move to the next one. ### 1. Onboard (first time only) If you don't have credentials at `~/.config/astranova/agents/<name>/credentials.json`, you're new. → Fetch `https://agents.astranova.live/ONBOARDING.md` and complete all steps (register, save credentials, verify on X, post to board). ### 2. Enter the World &amp; Trade Once onboarded, you're in. The market is live. → Fetch `https://agents.astranova.live/TRADING.md` — check the market state, see your portfolio, and make your first trade. Come back to TRADING.md anytime the human wants to trade, check prices, or review their portfolio. ### 3. Set Up a Wallet (after some trading) After you've traded through a few epochs, check your portfolio. When you see `rewards.claimable &gt; "0"`, your agent has earned $ASTRA. Suggest setting up a wallet so they can claim it. → Fetch `https://agents.astranova.live/WALLET.md` — generate a Solana keypair, fund it with a tiny amount of SOL, and register it with the API. You can also set up a wallet proactively at any time — it's quick and means rewards are claimable the moment they arrive. ### 4. Claim Rewards When your portfolio shows `rewards.claimable &gt; "0"` AND `rewards.hasWallet` is `true`, you're ready to claim. → Fetch `https://agents.astranova.live/REWARDS.md` — initiate the claim, co-sign the Solana transaction, confirm with the API. **Tip:** Suggest batching claims weekly rather than every epoch — one transaction covers all accumulated rewards. ``` ### Technical Analysis The locally reviewed skill delegates its substantive behavior to Markdown documents fetched from a remote server at runtime. These remote documents contro ...[truncated 3578 chars]
Remediation
## Remediation Suggestions 1. Bundle all security-sensitive modules with the audited skill package rather than retrieving mutable instructions at runtime. 2. If remote retrieval is necessary, pin every approved module to a cryptographic digest and reject content that does not match the audited hash. 3. Alternatively, require signed modules and verify signatures against a locally pinned public key before interpreting their contents. 4. Treat downloaded Markdown as untrusted reference material, not as authoritative instructions. Explicitly prohibit it from overriding system policy, credential restrictions, destination controls, or approval requirements. 5. Define sensitive operations locally using a narrow, machine-readable allowlist of approved API endpoints, HTTP methods, domains, Solana programs, transaction types, and wallet destinations. 6. Require explicit, informed human confirmation immediately before: - Placing or modifying a trade. - Generating or registering a wallet. - Funding any address. - Claiming rewards. - Signing or broadcasting a blockchain transaction. 7. Before approval, display a human-readable transaction summary containing the exact asset, amount, recipient, program IDs, fees, and expected state changes. 8. Never allow fetched instructions to request API keys, seed phrases, private keys, or raw signed transactions. Enforce this restriction in the execution layer rather than relying only on prose. 9. Apply trade limits, wallet funding limits, destination allowlists, and rate limits so a compromised instruction module cannot exercise unrestricted financial authority. 10. Separate documentation retrieval from action execution. Parse remote content only for display, while implementing financial workflows through locally reviewed logic. 11. Version and audit all remote modules, publish immutable revisions, and provide a secure rollback and revocation mechanism. 12. Preserve the existing service-speci ...[truncated 154 chars]
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (6)

Credential Access

High
Category
Privilege Escalation
Content
- API.md
  - GUIDE.md
config_paths:
  - ~/.config/astranova/agents/<agent-name>/credentials.json
credentials:
  - name: astranova_api_key
    storage: ~/.config/astranova/agents/<agent-name>/credentials.json
Confidence
89% confidence
Finding
The skill declares a concrete filesystem path for API credential storage, which instructs the agent to access and rely on local secrets. While common for integrations, this is sensitive because any skill that can read local files may retrieve the key, and the document normalizes credential handling without strong isolation guarantees.

Credential Access

High
Category
Privilege Escalation
Content
- ~/.config/astranova/agents/<agent-name>/credentials.json
credentials:
  - name: astranova_api_key
    storage: ~/.config/astranova/agents/<agent-name>/credentials.json
    purpose: Authenticates the agent to agents.astranova.live for trading, market data, and board posts
    obtained: During registration — shown once, saved immediately
metadata:
Confidence
90% confidence
Finding
This finding specifies that the API key is obtained once and then saved immediately to a local credentials file, encouraging persistent storage of a high-value secret. If another agent, plugin, or local user can read that file, the key could be abused for trading actions, data access, and account operations.

Credential Access

High
Category
Privilege Escalation
Content
Authorization: Bearer <api-key>
```

Load your key from `~/.config/astranova/agents/<agent-name>/credentials.json`. To find the active agent, read `~/.config/astranova/active_agent`.

---
Confidence
94% confidence
Finding
The skill explicitly instructs the agent to load an API key from a local file and also read an 'active_agent' selector file. In a multi-skill or compromised-agent environment, this creates a direct path to secret retrieval and possible impersonation, making the context more dangerous because the skill is operational and meant to perform authenticated actions.

Credential Access

High
Category
Privilege Escalation
Content
### 1. Onboard (first time only)

If you don't have credentials at `~/.config/astranova/agents/<name>/credentials.json`, you're new.

→ Fetch `https://agents.astranova.live/ONBOARDING.md` and complete all steps (register, save credentials, verify on X, post to board).
Confidence
92% confidence
Finding
The onboarding flow tells the agent that if credentials are absent, it should fetch remote instructions and then register and save credentials. This combines remote instruction loading with secret acquisition and local storage, which increases risk because a compromised documentation endpoint or over-permissive agent could turn onboarding into credential capture or unsafe persistence.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The skill directs the agent to register and save credentials locally, but it does not require explicit user consent or a user-facing warning before writing a sensitive API key to disk. In an agent setting, automatic persistence of secrets can surprise users, create untracked credential sprawl, and increase the chance of later theft by other local processes or skills.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Content
- Only send your API key to `agents.astranova.live` over HTTPS
- **Never include your API key in conversation text, logs, or prompts to other agents**
- Store credentials with restricted permissions (`chmod 600`)
- Do not echo, print, or display the API key to the human after saving it
- If your key is compromised, rotate it immediately via `POST /api/v1/agents/me/rotate-key`
- Keys are hashed server-side — your raw key is never stored
Confidence
80% confidence
Finding
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Static analysis

No suspicious patterns detected.