文件
websafe-kb/08-threat-intel/generated/dashboard/data/completeness.json
2026-03-18 07:22:21 -07:00

185 行
4.3 KiB
JSON

{
"generated_at": "2026-03-18T14:19:51+00:00",
"advisory_total": 89,
"latest_statuses": {
"verified-real": 89
},
"historical_statuses": {
"verified-real": 136,
"blocked-artifact": 3,
"triage-manual": 1
},
"verified_real": 89,
"verified_synthetic": 0,
"blocked": 0,
"manual": 0,
"verified_ratio": 100.0,
"complete": true,
"systems": [
{
"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": "nextjs",
"display_name": "Next.js",
"total": 26,
"verified_real": 26,
"verified_synthetic": 0,
"blocked": 0,
"manual": 0,
"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": 19,
"verified_real": 19,
"verified_synthetic": 0,
"blocked": 0,
"manual": 0
},
{
"family": "ssrf",
"total": 2,
"verified_real": 2,
"verified_synthetic": 0,
"blocked": 0,
"manual": 0
},
{
"family": "xss",
"total": 2,
"verified_real": 2,
"verified_synthetic": 0,
"blocked": 0,
"manual": 0
}
]
},
{
"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": 12,
"verified_real": 12,
"verified_synthetic": 0,
"blocked": 0,
"manual": 0,
"families": [
{
"family": "proxy-boundary",
"total": 11,
"verified_real": 11,
"verified_synthetic": 0,
"blocked": 0,
"manual": 0
},
{
"family": "xss",
"total": 1,
"verified_real": 1,
"verified_synthetic": 0,
"blocked": 0,
"manual": 0
}
]
}
],
"ingest_health": {
"failure_count": 5,
"failures": [
"drupal::Drupal Security Advisories Site::HTTPError",
"discourse::Discourse Meta Security::HTTPError",
"django::Django Security RSS::HTTPError",
"haproxy::HAProxy Security Advisories::HTTPError",
"adobe-commerce::Adobe Security Bulletins::ConnectionError"
]
},
"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."
]
}