T05 · Unauthorized Access and Privilege Escalation
- Location
src/workflow-executor.py:1820- Finding
Human Approval Can Be Bypassed Through the Direct Resume Endpoint
- Content
View full analysis
_MAX_APPROVED_BY_LEN: approved_by = approved_by[:_MAX_APPROVED_BY_LEN] result = _resume_workflow(run_id, approved_by) return jsonify(result), (200 if result.get("status") == "success" else 400) def _resume_workflow(run_id: str, approved_by: str) -> Dict: """Internal: load saved workflow state and continue execution from saved step.""" state = _load_workflow_state(run_id) if not state: log.warning("No saved state for resume", run_id=run_id) return {"status": "error", "error": f"No saved state found for run_id={run_id}."} if int(time.time()) > state["expires_at"]: _delete_workflow_state(run_id) return {"status": "error", "error": f"Workflow state for run_id={run_i ...[truncated 2810 chars]- Remediation
View remediation
