T09 · Insecure Skill Coding Practices
- Location
SKILL.md:207- Finding
Destructive MCP operations lack an enforced approval gate
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 207–219
Vulnerability Type: Missing authorization enforcement for destructive MCP operations
Risk Level: HighEvidence:
text The skill delivers reads and writes and records them; it does **not** decide whether a write is permitted. That is your agent's judgement, or the permission of the account you connect it with — use a Proxmox VE user or API token granted only read privileges (no VM.*/Datastore.* write roles), and writes then fail at the server. There is no read-only switch, policy file, or approval gate. - **Audit is the guarantee, and it is not bypassable.** Every operation — MCP and CLI alike — is logged to `~/.proxmox-aiops/audit.db` (relocatable via `PROXMOX_AIOPS_HOME`): params, result, status, duration, and the risk tier. The CLI writes the same row the MCP path does. - `PROXMOX_AUDIT_APPROVED_BY` / `PROXMOX_AUDIT_RATIONALE` are optional annotations recorded on the audit row (who/why); they are never required and never block. - **Runaway guard** — a safety backstop, not authorization: the same call looped in a tight window trips a circuit breaker. Disable with `PROXMOX_RUNAWAY_MAX=0`; optional hard ceilings via `PROXMOX_MAX_TOOL_CALLS` / `PROXMOX_MAX_TOOL_SECONDS`. - Undo store records inverse descriptors for reversible writes (start/stop/shutdown/reconfigure/clone/migrate/snapshot-create, container start/stop). - Writes support `--dry-run` / `dry_run=True` and double confirmation at the CLI.Technical Analysis
The Skill exposes MCP write operations capable of changing or destroying Proxmox resources, while explicitly stating that it has no read-only mode, policy file, or approval gate. Double confirmation is limited to the CLI layer; the documented MCP path has no equivalent mandatory approval control.
Consequently, a model-generated MCP call can cross from an agent session into privileged Proxmox infrastructure without an in ...[truncated 2115 chars]
- Remediation
View remediation
Remediation Suggestions
- Default the MCP interface to read-only and require an explicit configuration option to enable writes.
- Require a short-lived, operation-bound approval token for high-risk MCP operations. Bind it to the exact target, action, and parameters.
- Enforce a two-stage workflow for destructive actions: mandatory dry-run preview followed by explicit approval of the previewed operation.
- Add configurable operation, target, node, storage, pool, and VM allowlists.
- Require stronger confirmation for irreversible operations such as VM deletion, snapshot rollback, and forced restore.
- Keep audit logging and risk labels, but treat them as supplementary controls rather than authorization mechanisms.
- Reject high-risk MCP writes when approval metadata is absent instead of treating approval fields as optional annotations.
- Continue recommending dedicated least-privilege Proxmox tokens so compromise or erroneous invocation is limited to the minimum required resource scope.
