Back to skill

Security audit

Rauto Operator

Security checks for vulnerabilities and agentic risk

Overview

This appears to be a real rauto operations helper, but it needs Review because it can handle network-device credentials and destructive changes with weak scoping and redaction safeguards.

Install only if you want an agent to run rauto against real devices. Prefer protected saved connections or an external secret manager, avoid inline passwords and --save-password unless you understand where secrets are stored, require sanitized command output, protect ~/.rauto records/backups/history, and insist on dry-run plus explicit confirmation before deletes, replace restores, orchestration, or configuration changes.

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 (1)

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:69
Finding
Plaintext SSH Credentials Exposed Through Process Arguments and Agent Responses<![CDATA[ ## Vulnerability Details **File Location**: - `SKILL.md:60-61` - `SKILL.md:69-73` - `references/agent-execution.md:127-130` - `references/cli.md:29-37` - `references/cli.md:113-127` - `references/examples.md:31-39` - `references/examples.md:98-103` - `references/scenarios.md:43-49` **Vulnerability Type**: Plaintext sensitive-data exposure **Risk Level**: High ### Vulnerable Code Snippets `SKILL.md:60-61` directs the agent to obtain full credentials when a saved connection is unavailable: ```markdown - For `exec/template/tx/tx-workflow/orchestrate/connection test`: - need either full host credentials or usable `--connection`. ``` `SKILL.md:69-73` requires the exact executed command to be returned: ```markdown When command is executed, report: 1. `Operation`: what was run 2. `Command`: exact rauto command 3. `Result`: key output summary ``` `references/agent-execution.md:127-130` places the SSH password directly in a command-line argument: ```bash rauto exec "show version" \ --host <host> --username <username> --password <password> \ --ssh-port 22 --device-profile cisco ``` `references/cli.md:29-37` repeats the direct plaintext-password pattern: ```bash # Direct execute rauto exec "show version" \ --host <host> --username <username> --password <password> --ssh-port 22 # Direct execute with mode rauto exec "show ip route" \ --host <host> --username <username> --password <password> \ --mode Enable ``` `references/cli.md:113-127` also uses plaintext credentials when saving connections and explicitly supports password persistence: ```bash # Add/update saved connection rauto connection add lab1 \ --host <host> --username <username> --password <password> \ --ssh-port 22 --device-profile cisco # List/show/delete rauto connection list rauto connection show lab1 rauto connection delete lab1 # Save effective connection after successful run rauto exec "show version" \ --host <host> --username <username> --password <password> \ --s ...[truncated 3399 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. **Never include secrets in reported commands** - Change the response requirement from “exact command” to “sanitized command.” - Redact all sensitive options, including: - `--password` - `--enable-password` - tokens, private keys, and future secret-bearing flags - Example: ```text Command: rauto exec "show version" --host 10.0.0.5 --username admin --password [REDACTED] ``` 2. **Avoid command-line password arguments** - Prefer a protected saved-connection reference. - If supported by `rauto`, obtain passwords through standard input, an interactive prompt, environment-independent file descriptors, or an operating-system credential store. - Do not place credentials in shell command text or process arguments. 3. **Use secure secret storage** - Store saved passwords in an operating-system keychain, encrypted credential vault, or equivalent protected secret manager. - Keep only a credential reference in connection profiles. - If local files are unavoidable, enforce restrictive permissions such as owner-only access and encrypt secrets at rest. 4. **Require explicit consent before persistence** - Treat `--save-password` as a sensitive operation. - Explain where and how the credential will be stored. - Require explicit confirmation before persisting it. - Prefer saving connection metadata without the password by default. 5. **Apply centralized redaction** - Sanitize commands before they enter agent responses, logs, recordings, telemetry, error messages, or history. - Redaction should happen structurally by recognizing sensitive flags rather than relying only on regular expressions. - Add tests for both `--password value` and `--password=value` forms. 6. **Add recording and backup safeguards** - Warn that full device recordings and configuration output may contain credentials, keys, community strings, or other secrets. - Default to the minimum required r ...[truncated 433 chars]
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (22)

Ae1

High
Category
analysis-evasion
Content
- Runnable workflow JSON templates (EN): `references/workflow-json-template.md`
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Ae1

High
Category
analysis-evasion
Content
- Web tab/card mapping (only when user asks for Web operations): `references/web.md`
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Vague Triggers

Medium
Confidence
95% confidence
Finding
The skill trigger text is extremely broad and encourages activation for many ordinary operational requests, increasing the chance the agent will invoke this skill in contexts the user did not clearly intend. Because the skill is designed to execute infrastructure/device commands directly, overbroad routing materially raises the risk of unintended command execution or disclosure of operational data.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
4. For explicit read-only commands (for example `show`), tx/workflow is not required.
5. Resolve connection in this priority:
   - explicit command args > `--connection <name>` > ask for missing fields.
6. Do not ask the user to manually run commands if agent can run them.
7. Summarize outputs with important fields:
   - target, mode, success/failure, key errors, next action.
Confidence
80% confidence
Finding
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
- Prefer `tx`/`tx-workflow`/`orchestrate` with rollback-aware planning over direct apply patterns.
- Run/offer `--dry-run` first for workflow-based changes.
- For `orchestrate`, review target scope, `fail_fast`, concurrency, and rollback boundary before execution.
- Never auto-run agent-generated change commands without confirmation.
- Include rollback path in the proposal before execution.

If user explicitly asks to execute destructive action, proceed.
Confidence
95% confidence
Finding
The instruction 'If user explicitly asks to execute destructive action, proceed' weakens safety gating for operations like restore with replace, deletion, or configuration changes across devices. In a skill whose purpose is direct execution against infrastructure, obeying destructive requests without an additional confirmation or scope verification can lead to irreversible outages, mass misconfiguration, or data loss from a single prompt.

Vague Triggers

Medium
Confidence
92% confidence
Finding
The default prompt uses broad trigger language such as 'run rauto directly for me' and 'ask only for missing required inputs,' which encourages execution-oriented behavior with minimal friction. In a skill explicitly designed to operate devices, run workflows, orchestrate multiple devices, and perform restore/replay actions, this broad invocation scope increases the chance of unintended or unsafe execution from ambiguous user requests.

Session Persistence

Medium
Category
Rogue Agent
Content
- `rauto orchestrate ...`
- `rauto connection add ...`
- `rauto templates create|update ...`
- `rauto backup create [...]`
- `rauto backup restore <archive>` (merge mode)

## 4) Destructive operations (confirmation required)
Confidence
71% confidence
Finding
This playbook explicitly supports backup creation and restore operations, which can persist and reapply potentially sensitive system state across sessions. In an agent that executes user requests directly, restore and history/replay capabilities increase the chance of sensitive data exposure or unintended reuse of prior state unless access controls, scoping, and confirmation boundaries are strict.

Natural-Language Policy Violations

Medium
Confidence
97% confidence
Finding
The playbook allows destructive commands to be executed immediately when the user includes certain phrases such as '删除' or 'replace 恢复', which weakens the explicit-confirmation safeguard and creates a language-trigger bypass. In an agent-execution context, natural-language ambiguity, prompt injection, or quoted text could cause unintended destructive actions like delete or replace-restore without a separate affirmative confirmation step.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The recording examples advertise `--record-level full` without warning that recordings may capture sensitive command output, configuration data, secrets, or authentication material entered during sessions. Because this skill is intended for direct execution, replay, and history handling, users are likely to follow the example verbatim and create durable artifacts containing sensitive operational data.

Session Persistence

Medium
Category
Rogue Agent
Content
rauto device show cisco

# Copy builtin profile to custom
rauto device copy-builtin cisco my-cisco --overwrite

# Delete custom profile
rauto device delete-custom my-cisco
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.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The examples explicitly use `--save-password` when saving a connection, which encourages credential persistence without any warning about secure storage, file permissions, or secret exposure risk. In a skill designed to execute network-device operations directly, this increases the chance that operators will store reusable device credentials locally where they may be recovered by other users, malware, backups, or logs.

Missing User Warnings

Medium
Confidence
90% confidence
Finding
The restore examples show merge and especially `--replace` operations without warning that restore can overwrite or materially alter local state, including saved connections, templates, history, and possibly stored credentials. In an automation skill that manages profiles, connections, and backups, this can lead to accidental destructive changes or restoration of unsafe state from an untrusted archive.

Session Persistence

Medium
Category
Rogue Agent
Content
Execution-style answer:
```text
Operation: Duplicate builtin profile to custom profile
Command: rauto device copy-builtin cisco my-cisco --overwrite
Result: Custom profile my-cisco created/updated
Notes: Inspect with: rauto device show my-cisco
```
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.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The documentation instructs users to pass passwords directly on the command line when testing and saving connections. Command-line secrets can be exposed via shell history, process listings, logs, screenshots, or terminal recording, which creates unnecessary credential leakage risk in an operational network automation context.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The recording and replay guidance encourages capturing and reusing session data without warning that recordings may contain credentials, device configuration, topology, prompts, and other sensitive operational details. In a network administration tool, saved session artifacts can become a high-value source of secrets and internal infrastructure information if stored insecurely or shared broadly.

Unrestricted Tool Access

Medium
Category
Excessive Agency
Content
### Web UI

1. Execute any command with recording enabled.
2. Open Recording drawer (REC floating button).
3. Use List/Raw view, filters; click “Use in Replay”.
4. Replay tab → List Records / Replay Command.
Confidence
80% confidence
Finding
Skill grants unrestricted tool access without appropriate constraints. An agent with unfettered tool access can perform arbitrary actions including file modification, network requests, and code execution.

Session Persistence

Medium
Category
Rogue Agent
Content
### CLI

1. Create backup with auto timestamp name:
```
rauto backup create
```
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.

Missing User Warnings

Medium
Confidence
87% confidence
Finding
The restore example includes a destructive `--replace` operation with only minimal labeling and no strong operational safeguards. In this context, an incautious restore can overwrite current configuration/state, causing outages, loss of data, or rollback of security-relevant settings across the automation environment.

Vague Triggers

Medium
Confidence
95% confidence
Finding
The instruction 'Use this file when the user asks for Web operations' is ambiguous and overly broad for a markdown reference file. It does not define specific trigger phrases, scope boundaries, or exclusion conditions, so many ordinary requests involving web activity could unintentionally invoke this skill content.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
Line L001 labels the skill content as '(EN)', which signals an English-only requirement in natural language. The file does not offer an alternate language option or explain why English is required for a region-specific or compliance reason, so it appears to impose a locale constraint without user opt-in.

Natural-Language Policy Violations

Low
Confidence
88% confidence
Finding
The file labels multiple references as "(EN)" and "English Q/A examples" without indicating that other languages are supported or that English is optional. This can constitute a language-policy issue when the skill appears to assume English content by default rather than offering a user choice.

Natural-Language Policy Violations

Low
Confidence
89% confidence
Finding
The heading explicitly labels the template as "(EN)", which imposes an English-language constraint in natural language without offering an opt-in, alternative locale, or a justification that this template is region-specific. This matches the language/locale policy violation category for natural-language content.

Static analysis

No suspicious patterns detected.