Back to skill

Security audit

AIOS

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly coherent for investment risk checks, but it asks for broad Bash and write access while storing sensitive financial logs in predictable local files and documenting unsafe shell command patterns.

Review this skill before installing. It may create or update local logs containing account size, holdings, trade rationale, prices, and emotional state in your current working directory. Use it only in a private workspace, avoid pasting untrusted values into the documented Bash commands, and prefer a version that uses structured argument passing and private file permissions.

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
SKILL.md:113
Finding

Shell Injection Through User-Controlled Values in Documented Bash Commands

Content
View full analysis
--stop-loss <止损价> --account <账户总额> ``` ```bash python3 $SCRIPTS/aios.py init --account <账户总额> ``` ```bash python3 $SCRIPTS/aios.py log --type 买入 --ticker <代码> --price <价格> --reasons '<理由>' --stop-loss <止损> --target <目标> --emotion <情绪> ``` ```bash python3 $SCRIPTS/aios.py position --price <价格> --stop-loss <止损价> --account <账户总额> ``` ```bash python3 $SCRIPTS/aios.py log --type <类型> --ticker <代码> --price <价格> ``` ### Technical Analysis The Skill directs the agent to construct and execute Bash commands by substituting user-provided trading data directly into command templates. Fields such as ticker, transaction type, reasons, price, and account value are not accompanied by shell-safe encoding or strict input validation requirements. Most placeholders are entirely unquoted. Although the reasons field is surrounded by single quotes, a user-controlled single quote can terminate that quoted context. Shell separators, command substitutions, redirections, or other metacharacters may consequently be interpreted by Bash before `aios.py` receives the intended arguments. The Python script uses `argparse`, but this does not prevent the vulnerability: shell parsing occurs before Python starts. The weakness is therefore in the Skill's command-construction instructions rather than in `argparse`. ### Attack Path 1. The Skill asks the user for a ticker, transaction type, reason, price, or another value used in a documented Bash command. 2. A malicious or compromised input contains shell metacharacters. For the reasons argument, the input can first close the surrounding single-quoted string. 3. The agent substitutes the value into the command template without reliable shell esca ...[truncated 1019 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/aios.py:28
Finding

Sensitive Financial Records Are Stored in Predictable Plaintext Files Without Restrictive Permissions

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (8)

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The trigger phrases are broad enough to activate on ordinary investment discussion, causing the skill to proactively steer users into a rigid workflow and potentially invoke tools like Bash, Read, Write, or WebSearch without sufficiently narrow intent matching. In an agent environment, over-broad activation increases the chance of unintended file access, local writes, or command execution in contexts where the user did not explicitly request those actions.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill instructs creation and writing of trade logs to the user's local workspace without a clear warning, consent flow, or explanation of what data will be stored. Because these logs can contain sensitive financial decisions, tickers, prices, emotions, and notes, silent or poorly disclosed persistence creates privacy and data-governance risk, especially in shared or synced environments.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The documentation at L109-L113 states that after a passed check, the system should ask whether to record the trade, making logging optional. This conflicts with the stronger requirement later at L238 that all trades must be recorded to the log, creating an intent-level contradiction inside the skill instructions.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The manual is written entirely in Chinese, including all operational instructions and checklists, with no indication that users may choose another language or that the skill is intentionally limited to a Chinese-speaking context. Under the policy, forcing a specific language without opt-in is a natural-language policy violation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The module description and all user-facing prompts are written in Chinese, establishing a Chinese-only interaction pattern. The file does not provide any opt-in, locale selection, or justification for restricting the skill to a specific language or region.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
75% confidence
Finding

L46-L55 says the user must answer all listed planning questions, including invalidation condition and planned buy amount, as part of the non-skippable workflow. However, the logging command at L113 omits some of these required elements, which weakens the documented claim that the full mandatory plan is captured and preserved.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
87% confidence
Finding

The template is entirely written in Chinese and states that every trade must use this template, which effectively imposes a specific language on users. The file does not provide an opt-in, alternative language option, or any explanation that this is a region-specific or compliance-driven requirement.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Low
Category
Not specified by scanner
Confidence
98% confidence
Finding

The manifest description says the skill is used for '月度复盘', implying an operational review capability. In code, a 'review' subcommand is registered but not implemented; it only prints a message telling the user to use interactive mode or inspect logs manually, so the advertised capability is absent.

Content

No source excerpt is available for this finding.