Spaces:
Running
Running
| { | |
| "tasks": [ | |
| { | |
| "id": "basic_validation", | |
| "name": "Basic Endpoint Validation", | |
| "difficulty": "easy", | |
| "description": "Test all CRUD endpoints with valid inputs and verify correct status codes.", | |
| "max_steps": 25, | |
| "bugs": ["BUG_TASK_01", "BUG_TASK_02", "BUG_TASK_03"] | |
| }, | |
| { | |
| "id": "edge_cases", | |
| "name": "Edge Cases & Error Handling", | |
| "difficulty": "medium", | |
| "description": "Test boundary conditions, invalid inputs, and error responses.", | |
| "max_steps": 35, | |
| "bugs": [ | |
| "BUG_TASK_01", "BUG_TASK_02", "BUG_TASK_03", | |
| "BUG_TASK_04", "BUG_TASK_05", "BUG_TASK_06", | |
| "BUG_USER_01", "BUG_USER_02", "BUG_AUTH_02" | |
| ] | |
| }, | |
| { | |
| "id": "security_workflows", | |
| "name": "Security & Multi-Step Workflows", | |
| "difficulty": "hard", | |
| "description": "Discover authorization flaws, injection vulnerabilities, and workflow bugs.", | |
| "max_steps": 45, | |
| "bugs": [ | |
| "BUG_TASK_01", "BUG_TASK_02", "BUG_TASK_03", | |
| "BUG_TASK_04", "BUG_TASK_05", "BUG_TASK_06", | |
| "BUG_TASK_07", "BUG_TASK_08", "BUG_TASK_09", | |
| "BUG_USER_01", "BUG_USER_02", | |
| "BUG_AUTH_01", "BUG_AUTH_02" | |
| ] | |
| } | |
| ], | |
| "bug_registry": { | |
| "BUG_TASK_01": { | |
| "severity": "easy", | |
| "category": "status_code", | |
| "owasp": "API8:2023 Security Misconfiguration", | |
| "description": "GET /tasks/{id} returns 200 with null for non-existent task", | |
| "recommendation": "Return 404 Not Found for non-existent resources" | |
| }, | |
| "BUG_TASK_02": { | |
| "severity": "easy", | |
| "category": "validation", | |
| "owasp": "API8:2023 Security Misconfiguration", | |
| "description": "POST /tasks with missing title returns 500 instead of 400", | |
| "recommendation": "Validate required fields and return 400/422 with descriptive error" | |
| }, | |
| "BUG_TASK_03": { | |
| "severity": "easy", | |
| "category": "validation", | |
| "owasp": "API8:2023 Security Misconfiguration", | |
| "description": "GET /tasks?page=-1 returns 200 instead of 400", | |
| "recommendation": "Validate pagination parameters: page >= 1, limit > 0" | |
| }, | |
| "BUG_TASK_04": { | |
| "severity": "medium", | |
| "category": "validation", | |
| "owasp": "API8:2023 Security Misconfiguration", | |
| "description": "PUT /tasks/{id} accepts invalid email format", | |
| "recommendation": "Validate email format with regex before accepting" | |
| }, | |
| "BUG_TASK_05": { | |
| "severity": "medium", | |
| "category": "status_code", | |
| "owasp": "API8:2023 Security Misconfiguration", | |
| "description": "DELETE /tasks/{id} returns 200 for non-existent task", | |
| "recommendation": "Check resource existence before deletion, return 404 if missing" | |
| }, | |
| "BUG_TASK_06": { | |
| "severity": "medium", | |
| "category": "validation", | |
| "owasp": "API4:2023 Unrestricted Resource Consumption", | |
| "description": "No pagination cap on limit parameter", | |
| "recommendation": "Cap pagination limit at 100, reject values above maximum" | |
| }, | |
| "BUG_TASK_07": { | |
| "severity": "hard", | |
| "category": "security", | |
| "owasp": "API1:2023 Broken Object Level Authorization", | |
| "description": "BOLA: any user can access any task", | |
| "recommendation": "Verify resource ownership: check task.owner_id matches authenticated user" | |
| }, | |
| "BUG_TASK_08": { | |
| "severity": "hard", | |
| "category": "validation", | |
| "owasp": "API4:2023 Unrestricted Resource Consumption", | |
| "description": "Long title causes 500 error", | |
| "recommendation": "Add input length validation: title max 200 chars" | |
| }, | |
| "BUG_TASK_09": { | |
| "severity": "hard", | |
| "category": "security", | |
| "owasp": "API8:2023 Security Misconfiguration", | |
| "description": "SQL injection payload stored verbatim", | |
| "recommendation": "Sanitize user input before storage, escape HTML/SQL special characters" | |
| }, | |
| "BUG_USER_01": { | |
| "severity": "medium", | |
| "category": "validation", | |
| "owasp": "API8:2023 Security Misconfiguration", | |
| "description": "POST /users accepts invalid email", | |
| "recommendation": "Validate email format server-side before creating user" | |
| }, | |
| "BUG_USER_02": { | |
| "severity": "medium", | |
| "category": "security", | |
| "owasp": "API3:2023 Broken Object Property Level Authorization", | |
| "description": "Response exposes password hash", | |
| "recommendation": "Never return sensitive fields (password_hash) in API responses" | |
| }, | |
| "BUG_AUTH_01": { | |
| "severity": "hard", | |
| "category": "security", | |
| "owasp": "API1:2023 Broken Object Level Authorization", | |
| "description": "Broken authorization: cross-user token access", | |
| "recommendation": "Enforce ownership check on all write operations (PUT/DELETE)" | |
| }, | |
| "BUG_AUTH_02": { | |
| "severity": "medium", | |
| "category": "security", | |
| "owasp": "API2:2023 Broken Authentication", | |
| "description": "Empty password login succeeds", | |
| "recommendation": "Validate password is non-empty and verify against stored hash" | |
| } | |
| } | |
| } | |