{ "$schema": "http://json-schema.org/draft-07/schema#", "title": "Security Scan Results", "description": "Output from the security scan step", "type": "object", "required": ["target", "findings", "summary", "timestamp"], "properties": { "target": { "type": "string", "minLength": 1, "description": "What was scanned" }, "attack_surface": { "type": "array", "items": { "type": "object", "required": ["entry_point", "type", "description"], "properties": { "entry_point": { "type": "string", "minLength": 1 }, "type": { "type": "string", "enum": ["http_handler", "cli_input", "file_parser", "db_query", "api_call", "ipc", "other"] }, "description": { "type": "string", "minLength": 1 }, "risk_level": { "type": "string", "enum": ["high", "medium", "low"] } } } }, "findings": { "type": "array", "items": { "type": "object", "required": ["id", "title", "severity", "category", "location", "description"], "properties": { "id": { "type": "string", "pattern": "^SEC-[0-9]{3}$" }, "title": { "type": "string", "minLength": 5 }, "severity": { "type": "string", "enum": ["CRITICAL", "HIGH", "MEDIUM", "LOW"] }, "category": { "type": "string", "minLength": 1 }, "location": { "type": "string", "minLength": 1 }, "description": { "type": "string", "minLength": 10 }, "evidence": { "type": "string" }, "exploitability": { "type": "string" } } } }, "secrets_check": { "type": "object", "properties": { "hardcoded_secrets": { "type": "array", "items": { "type": "string" } }, "insecure_configs": { "type": "array", "items": { "type": "string" } } } }, "summary": { "type": "object", "required": ["total_findings", "by_severity", "risk_assessment"], "properties": { "total_findings": { "type": "integer", "minimum": 0 }, "by_severity": { "type": "object", "required": ["CRITICAL", "HIGH", "MEDIUM", "LOW"], "properties": { "CRITICAL": { "type": "integer", "minimum": 0 }, "HIGH": { "type": "integer", "minimum": 0 }, "MEDIUM": { "type": "integer", "minimum": 0 }, "LOW": { "type": "integer", "minimum": 0 } } }, "risk_assessment": { "type": "string", "minLength": 10 } } }, "timestamp": { "type": "string", "format": "date-time" } } }