[P2][SEC] Geplante Befehle prüfen die Berechtigung des Erstellers nicht zur Ausführungszeit — Rechteentzug wirkungslos #229
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Befund
routers/command_router.py:163—run_scheduled_command()führt einen geplanten Befehl aus, ohne die Berechtigung des Erstellers erneut zu prüfen:execute_command_payload()enthält selbst keine Scope-Prüfung — die liegt ausschließlich im Request-Pfad (execute, Zeile 232:check_node_scope+check_vm_scope). Der Scheduler-Pfad umgeht sie vollständig.Auswirkung
Ein Nutzer mit
operator-Rolle plant einen Befehl auf Node X. Danach:viewerreduziert → der Job läuft weiterDer Job führt beliebigen Shell-Code als root auf dem PVE-Host aus (
agent.run_script) bzw. perqm.agent.execin einer VM. Es gibt keinen Pfad, über den ein Rechteentzug diese Ausführung stoppt — außer den Job manuell zu finden und zu löschen.Dasselbe Muster bei
security.port_scanüberrun_security_bulk_scan()im Scheduler.Bewertung
Kein Rechteausweitungsfehler im engeren Sinn — der Nutzer hatte die Berechtigung, als er den Job anlegte. Aber Rechteentzug ist wirkungslos, und das ist bei einem Werkzeug, das root-Befehle auf Kundensystemen ausführt, ein Problem, das man vor dem Produktivbetrieb geschlossen haben will. Bei Personalwechsel im MSP ist es der realistische Fall.
Prompt für Claude Code
Definition of Done
Aus dem Code-Review vom 2026-07-27 (Commit
4152c4d). Gesamtblock: #226, #227, #228, #229, #230, #231.Abarbeitung niedrig → hoch: #231 → #230 → #229 → #228 → #227 → #226.