766 行
17 KiB
JSON
766 行
17 KiB
JSON
{
|
|
"generated_at": "2026-03-18T18:39:23+00:00",
|
|
"advisory_total": 1498,
|
|
"latest_statuses": {
|
|
"triage-manual": 1409,
|
|
"verified-real": 89
|
|
},
|
|
"historical_statuses": {
|
|
"verified-real": 136,
|
|
"blocked-artifact": 3,
|
|
"triage-manual": 1
|
|
},
|
|
"verified_real": 89,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 1409,
|
|
"verified_ratio": 5.9,
|
|
"complete": false,
|
|
"systems": [
|
|
{
|
|
"system_id": "adobe-commerce",
|
|
"display_name": "Adobe Commerce",
|
|
"total": 81,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 81,
|
|
"families": [
|
|
{
|
|
"family": "xss",
|
|
"total": 81,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 81
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"system_id": "apache-httpd",
|
|
"display_name": "Apache HTTP Server",
|
|
"total": 135,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 135,
|
|
"families": [
|
|
{
|
|
"family": "authz-bypass",
|
|
"total": 1,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 1
|
|
},
|
|
{
|
|
"family": "file-upload",
|
|
"total": 1,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 1
|
|
},
|
|
{
|
|
"family": "proxy-boundary",
|
|
"total": 128,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 128
|
|
},
|
|
{
|
|
"family": "ssrf",
|
|
"total": 1,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 1
|
|
},
|
|
{
|
|
"family": "xss",
|
|
"total": 4,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 4
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"system_id": "apache-tomcat",
|
|
"display_name": "Apache Tomcat",
|
|
"total": 136,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 136,
|
|
"families": [
|
|
{
|
|
"family": "authz-bypass",
|
|
"total": 108,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 108
|
|
},
|
|
{
|
|
"family": "file-upload",
|
|
"total": 2,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 2
|
|
},
|
|
{
|
|
"family": "path-traversal",
|
|
"total": 3,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 3
|
|
},
|
|
{
|
|
"family": "plugin-extension",
|
|
"total": 5,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 5
|
|
},
|
|
{
|
|
"family": "proxy-boundary",
|
|
"total": 1,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 1
|
|
},
|
|
{
|
|
"family": "session-token",
|
|
"total": 4,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 4
|
|
},
|
|
{
|
|
"family": "xss",
|
|
"total": 13,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 13
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"system_id": "drupal",
|
|
"display_name": "Drupal",
|
|
"total": 70,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 70,
|
|
"families": [
|
|
{
|
|
"family": "xss",
|
|
"total": 70,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 70
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"system_id": "gitea",
|
|
"display_name": "Gitea",
|
|
"total": 37,
|
|
"verified_real": 37,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 0,
|
|
"families": [
|
|
{
|
|
"family": "authz-bypass",
|
|
"total": 3,
|
|
"verified_real": 3,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 0
|
|
},
|
|
{
|
|
"family": "file-upload",
|
|
"total": 2,
|
|
"verified_real": 2,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 0
|
|
},
|
|
{
|
|
"family": "proxy-boundary",
|
|
"total": 26,
|
|
"verified_real": 26,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 0
|
|
},
|
|
{
|
|
"family": "ssrf",
|
|
"total": 1,
|
|
"verified_real": 1,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 0
|
|
},
|
|
{
|
|
"family": "xss",
|
|
"total": 5,
|
|
"verified_real": 5,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 0
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"system_id": "joomla",
|
|
"display_name": "Joomla",
|
|
"total": 100,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 100,
|
|
"families": [
|
|
{
|
|
"family": "xss",
|
|
"total": 100,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 100
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"system_id": "magento-open-source",
|
|
"display_name": "Magento Open Source",
|
|
"total": 101,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 101,
|
|
"families": [
|
|
{
|
|
"family": "authz-bypass",
|
|
"total": 1,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 1
|
|
},
|
|
{
|
|
"family": "file-upload",
|
|
"total": 3,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 3
|
|
},
|
|
{
|
|
"family": "plugin-extension",
|
|
"total": 78,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 78
|
|
},
|
|
{
|
|
"family": "sqli",
|
|
"total": 1,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 1
|
|
},
|
|
{
|
|
"family": "xss",
|
|
"total": 18,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 18
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"system_id": "nextjs",
|
|
"display_name": "Next.js",
|
|
"total": 66,
|
|
"verified_real": 26,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 40,
|
|
"families": [
|
|
{
|
|
"family": "authz-bypass",
|
|
"total": 2,
|
|
"verified_real": 2,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 0
|
|
},
|
|
{
|
|
"family": "deserialization",
|
|
"total": 1,
|
|
"verified_real": 1,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 0
|
|
},
|
|
{
|
|
"family": "proxy-boundary",
|
|
"total": 55,
|
|
"verified_real": 19,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 36
|
|
},
|
|
{
|
|
"family": "request-smuggling",
|
|
"total": 3,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 3
|
|
},
|
|
{
|
|
"family": "ssrf",
|
|
"total": 2,
|
|
"verified_real": 2,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 0
|
|
},
|
|
{
|
|
"family": "xss",
|
|
"total": 3,
|
|
"verified_real": 2,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 1
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"system_id": "nginx",
|
|
"display_name": "Nginx",
|
|
"total": 110,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 110,
|
|
"families": [
|
|
{
|
|
"family": "authz-bypass",
|
|
"total": 2,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 2
|
|
},
|
|
{
|
|
"family": "proxy-boundary",
|
|
"total": 107,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 107
|
|
},
|
|
{
|
|
"family": "sqli",
|
|
"total": 1,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 1
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"system_id": "nodejs",
|
|
"display_name": "Node.js",
|
|
"total": 8,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 8,
|
|
"families": [
|
|
{
|
|
"family": "ssrf",
|
|
"total": 8,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 8
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"system_id": "nuxt",
|
|
"display_name": "Nuxt",
|
|
"total": 28,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 28,
|
|
"families": [
|
|
{
|
|
"family": "proxy-boundary",
|
|
"total": 26,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 26
|
|
},
|
|
{
|
|
"family": "xss",
|
|
"total": 2,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 2
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"system_id": "opencart",
|
|
"display_name": "OpenCart",
|
|
"total": 100,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 100,
|
|
"families": [
|
|
{
|
|
"family": "deserialization",
|
|
"total": 3,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 3
|
|
},
|
|
{
|
|
"family": "plugin-extension",
|
|
"total": 69,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 69
|
|
},
|
|
{
|
|
"family": "sqli",
|
|
"total": 12,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 12
|
|
},
|
|
{
|
|
"family": "ssrf",
|
|
"total": 1,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 1
|
|
},
|
|
{
|
|
"family": "template-injection",
|
|
"total": 1,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 1
|
|
},
|
|
{
|
|
"family": "xss",
|
|
"total": 14,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 14
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"system_id": "prestashop",
|
|
"display_name": "PrestaShop",
|
|
"total": 112,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 112,
|
|
"families": [
|
|
{
|
|
"family": "file-upload",
|
|
"total": 1,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 1
|
|
},
|
|
{
|
|
"family": "plugin-extension",
|
|
"total": 91,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 91
|
|
},
|
|
{
|
|
"family": "sqli",
|
|
"total": 4,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 4
|
|
},
|
|
{
|
|
"family": "xss",
|
|
"total": 16,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 16
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"system_id": "react",
|
|
"display_name": "React",
|
|
"total": 21,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 21,
|
|
"families": [
|
|
{
|
|
"family": "xss",
|
|
"total": 21,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 21
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"system_id": "shopware",
|
|
"display_name": "Shopware",
|
|
"total": 71,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 71,
|
|
"families": [
|
|
{
|
|
"family": "authz-bypass",
|
|
"total": 2,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 2
|
|
},
|
|
{
|
|
"family": "deserialization",
|
|
"total": 1,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 1
|
|
},
|
|
{
|
|
"family": "plugin-extension",
|
|
"total": 55,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 55
|
|
},
|
|
{
|
|
"family": "sqli",
|
|
"total": 2,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 2
|
|
},
|
|
{
|
|
"family": "ssrf",
|
|
"total": 1,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 1
|
|
},
|
|
{
|
|
"family": "xss",
|
|
"total": 10,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 10
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"system_id": "undici",
|
|
"display_name": "Undici",
|
|
"total": 14,
|
|
"verified_real": 14,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 0,
|
|
"families": [
|
|
{
|
|
"family": "ssrf",
|
|
"total": 14,
|
|
"verified_real": 14,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 0
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"system_id": "vite",
|
|
"display_name": "Vite",
|
|
"total": 42,
|
|
"verified_real": 12,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 30,
|
|
"families": [
|
|
{
|
|
"family": "proxy-boundary",
|
|
"total": 39,
|
|
"verified_real": 11,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 28
|
|
},
|
|
{
|
|
"family": "xss",
|
|
"total": 3,
|
|
"verified_real": 1,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 2
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"system_id": "vue",
|
|
"display_name": "Vue",
|
|
"total": 15,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 15,
|
|
"families": [
|
|
{
|
|
"family": "xss",
|
|
"total": 15,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 15
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"system_id": "woocommerce",
|
|
"display_name": "WooCommerce",
|
|
"total": 111,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 111,
|
|
"families": [
|
|
{
|
|
"family": "xss",
|
|
"total": 111,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 111
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"system_id": "wordpress",
|
|
"display_name": "WordPress",
|
|
"total": 140,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 140,
|
|
"families": [
|
|
{
|
|
"family": "xss",
|
|
"total": 140,
|
|
"verified_real": 0,
|
|
"verified_synthetic": 0,
|
|
"blocked": 0,
|
|
"manual": 140
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"ingest_health": {
|
|
"failure_count": 0,
|
|
"failures": []
|
|
},
|
|
"source_health": {
|
|
"active_source_count": 15,
|
|
"green_source_count": 15,
|
|
"failure_count": 0,
|
|
"last_fully_green_run": "2026-03-18T18:26:42+00:00",
|
|
"open_alert_count": 0,
|
|
"resolved_alert_count": 0
|
|
},
|
|
"monitor_summary": {
|
|
"generated_at": "2026-03-18T18:12:43+00:00",
|
|
"active_source_count": 110,
|
|
"green_source_count": 110,
|
|
"source_failure_count": 0,
|
|
"open_alert_count": 0,
|
|
"resolved_alert_count": 0,
|
|
"last_fully_green_run": "2026-03-18T18:12:43+00:00",
|
|
"source_catalog": {
|
|
"system_count": 62,
|
|
"source_count": 146,
|
|
"retired_source_count": 36
|
|
},
|
|
"ingest": {
|
|
"new_count": 0,
|
|
"updated_count": 0,
|
|
"failure_count": 0,
|
|
"systems_touched": []
|
|
},
|
|
"validation": {
|
|
"passed": true,
|
|
"error_count": 0,
|
|
"errors": []
|
|
}
|
|
},
|
|
"historical_blockers": [
|
|
"Docker daemon unavailable caused provision-compose-environment blocked-artifact.",
|
|
"Family profiles previously used note-only attack runners and dry-run placeholders.",
|
|
"Baseline and browser steps were skipped when environment readiness was not enforced.",
|
|
"Latest completeness now uses one advisory -> latest run semantics instead of historical run piles.",
|
|
"Source health now counts only status=active sources; retired sources are audited separately with replacement links."
|
|
]
|
|
}
|