更新: 178 个文件 - 2026-03-18 07:47:37

这个提交包含在:
hao
2026-03-18 07:47:37 -07:00
父节点 63d89f2b0c
当前提交 91d6f4d04e
修改 178 个文件,包含 1690 行新增16615 行删除

查看文件

@@ -21,7 +21,7 @@
| Flask | `frameworks` | `rolling-24m` | `-` | `yes` | `0` | `0` | `3` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |
| Ghost | `cms` | `rolling-24m` | `-` | `yes` | `0` | `0` | `3` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |
| Gin | `frameworks` | `rolling-24m` | `-` | `yes` | `0` | `0` | `2` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |
| Gitea | `platforms` | `rolling-24m` | `-` | `yes` | `37` | `37` | `3` | `seeded` | `real:37/synthetic:0/blocked:0` | `33` | `37` | `0` | `2026-03-03T04:57:57.697708Z` |
| Gitea | `platforms` | `rolling-24m` | `-` | `yes` | `0` | `0` | `3` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |
| GitLab CE | `platforms` | `rolling-24m` | `-` | `yes` | `0` | `0` | `3` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |
| Grafana | `platforms` | `rolling-24m` | `-` | `yes` | `0` | `0` | `3` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |
| Hapi | `frameworks` | `rolling-24m` | `-` | `yes` | `0` | `0` | `2` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |
@@ -37,7 +37,7 @@
| Medusa | `ecommerce` | `rolling-24m` | `-` | `yes` | `0` | `0` | `2` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |
| Moodle | `cms` | `rolling-24m` | `-` | `yes` | `0` | `0` | `3` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |
| NestJS | `frameworks` | `rolling-24m` | `-` | `yes` | `0` | `0` | `3` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |
| Next.js | `frameworks` | `history-full` | `yes` | `yes` | `26` | `26` | `3` | `seeded` | `real:26/synthetic:0/blocked:0` | `21` | `26` | `0` | `2026-03-13T22:14:13.665535Z` |
| Next.js | `frameworks` | `history-full` | `yes` | `yes` | `5` | `5` | `3` | `seeded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `2026-03-17T16:31:34.160932Z` |
| Nginx | `servers` | `history-full` | `yes` | `yes` | `0` | `0` | `3` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |
| Node.js | `frameworks` | `history-full` | `yes` | `yes` | `0` | `0` | `3` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |
| Nuxt | `frameworks` | `history-full` | `yes` | `yes` | `0` | `0` | `3` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |
@@ -57,8 +57,8 @@
| SvelteKit | `frameworks` | `rolling-24m` | `-` | `yes` | `0` | `0` | `2` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |
| Symfony | `frameworks` | `rolling-24m` | `-` | `yes` | `0` | `0` | `3` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |
| Traefik | `servers` | `rolling-24m` | `-` | `yes` | `0` | `0` | `2` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |
| Undici | `frameworks` | `rolling-24m` | `-` | `yes` | `14` | `14` | `2` | `seeded` | `real:14/synthetic:0/blocked:0` | `0` | `14` | `0` | `2026-03-14T09:19:54.772219Z` |
| Vite | `frameworks` | `history-full` | `yes` | `yes` | `12` | `12` | `3` | `seeded` | `real:12/synthetic:0/blocked:0` | `12` | `12` | `0` | `2026-02-04T04:37:24.129476Z` |
| Undici | `frameworks` | `rolling-24m` | `-` | `yes` | `0` | `0` | `2` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |
| Vite | `frameworks` | `history-full` | `yes` | `yes` | `0` | `0` | `3` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |
| Vue | `frameworks` | `history-full` | `yes` | `yes` | `0` | `0` | `3` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |
| webpack | `frameworks` | `rolling-24m` | `-` | `yes` | `0` | `0` | `2` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |
| Werkzeug | `frameworks` | `rolling-24m` | `-` | `yes` | `0` | `0` | `2` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |

查看文件

@@ -1,5 +1,5 @@
{
"generated_at": "2026-03-18T14:22:56+00:00",
"generated_at": "2026-03-18T14:45:55+00:00",
"title": "\u5f53\u524d\u67b6\u6784\u5e93",
"summary": "\u5de5\u4f5c\u53f0\u3001\u63a7\u5236\u9762\u3001\u6570\u636e\u5c42\u3001\u6388\u6743\u8fb9\u754c\u4e0e\u7cfb\u7edf\u8986\u76d6\u7684\u5f53\u524d\u771f\u503c\u89c6\u56fe\u3002",
"sections": [
@@ -31,7 +31,7 @@
},
{
"label": "\u5f53\u524d\u6f0f\u6d1e\u6761\u76ee",
"value": "89"
"value": "5"
}
],
"fields": [
@@ -49,7 +49,7 @@
},
{
"label": "\u751f\u6210\u65f6\u95f4",
"value": "2026-03-18T14:22:56+00:00"
"value": "2026-03-18T14:45:55+00:00"
}
],
"links": [
@@ -5857,7 +5857,7 @@
},
{
"label": "Advisory \u6570",
"value": "89"
"value": "5"
},
{
"label": "\u72b6\u6001\u7c7b\u578b",
@@ -5865,7 +5865,7 @@
},
{
"label": "\u6700\u8fd1\u5931\u8d25",
"value": "0"
"value": "5"
}
],
"items": [
@@ -5875,17 +5875,17 @@
"open": false,
"items": [
{
"title": "\u771f\u5b9e\u7248\u672c\u5df2\u5b9e\u8bc1",
"summary": "\u5f53\u524d\u7d2f\u8ba1 89 \u6761\u3002",
"title": "\u4eba\u5de5\u5206\u8bca",
"summary": "\u5f53\u524d\u7d2f\u8ba1 5 \u6761\u3002",
"open": false,
"fields": [
{
"label": "\u72b6\u6001\u7f16\u7801",
"value": "verified-real"
"value": "triage-manual"
},
{
"label": "\u6570\u91cf",
"value": "89"
"value": "5"
}
]
}
@@ -5897,9 +5897,134 @@
"open": false,
"items": [
{
"title": "\u6682\u65e0\u5931\u8d25\u6837\u672c",
"summary": "\u5f53\u524d summary.json \u4e2d\u6ca1\u6709 recent_failures\u3002",
"open": false
"title": "Next.js: Unbounded postponed resume buffering can lead to DoS",
"summary": "\u65e0\u989d\u5916\u963b\u585e\u8bf4\u660e\u3002",
"open": false,
"badges": [
"\u4eba\u5de5\u5206\u8bca"
],
"fields": [
{
"label": "\u8fd0\u884c ID",
"value": "-"
},
{
"label": "\u6f0f\u6d1e\u6761\u76ee",
"value": "nextjs--CVE-2026-27979"
},
{
"label": "\u72b6\u6001",
"value": "\u4eba\u5de5\u5206\u8bca"
},
{
"label": "\u963b\u585e\u539f\u56e0",
"value": "-"
}
]
},
{
"title": "Next.js: Unbounded next/image disk cache growth can exhaust storage",
"summary": "\u65e0\u989d\u5916\u963b\u585e\u8bf4\u660e\u3002",
"open": false,
"badges": [
"\u4eba\u5de5\u5206\u8bca"
],
"fields": [
{
"label": "\u8fd0\u884c ID",
"value": "-"
},
{
"label": "\u6f0f\u6d1e\u6761\u76ee",
"value": "nextjs--CVE-2026-27980"
},
{
"label": "\u72b6\u6001",
"value": "\u4eba\u5de5\u5206\u8bca"
},
{
"label": "\u963b\u585e\u539f\u56e0",
"value": "-"
}
]
},
{
"title": "Next.js: HTTP request smuggling in rewrites",
"summary": "\u65e0\u989d\u5916\u963b\u585e\u8bf4\u660e\u3002",
"open": false,
"badges": [
"\u4eba\u5de5\u5206\u8bca"
],
"fields": [
{
"label": "\u8fd0\u884c ID",
"value": "-"
},
{
"label": "\u6f0f\u6d1e\u6761\u76ee",
"value": "nextjs--CVE-2026-29057"
},
{
"label": "\u72b6\u6001",
"value": "\u4eba\u5de5\u5206\u8bca"
},
{
"label": "\u963b\u585e\u539f\u56e0",
"value": "-"
}
]
},
{
"title": "Next.js: null origin can bypass Server Actions CSRF checks",
"summary": "\u65e0\u989d\u5916\u963b\u585e\u8bf4\u660e\u3002",
"open": false,
"badges": [
"\u4eba\u5de5\u5206\u8bca"
],
"fields": [
{
"label": "\u8fd0\u884c ID",
"value": "-"
},
{
"label": "\u6f0f\u6d1e\u6761\u76ee",
"value": "nextjs--CVE-2026-27978"
},
{
"label": "\u72b6\u6001",
"value": "\u4eba\u5de5\u5206\u8bca"
},
{
"label": "\u963b\u585e\u539f\u56e0",
"value": "-"
}
]
},
{
"title": "Next.js: null origin can bypass dev HMR websocket CSRF checks",
"summary": "\u65e0\u989d\u5916\u963b\u585e\u8bf4\u660e\u3002",
"open": false,
"badges": [
"\u4eba\u5de5\u5206\u8bca"
],
"fields": [
{
"label": "\u8fd0\u884c ID",
"value": "-"
},
{
"label": "\u6f0f\u6d1e\u6761\u76ee",
"value": "nextjs--CVE-2026-27977"
},
{
"label": "\u72b6\u6001",
"value": "\u4eba\u5de5\u5206\u8bca"
},
{
"label": "\u963b\u585e\u539f\u56e0",
"value": "-"
}
]
}
]
}

查看文件

@@ -1,178 +1,81 @@
{
"generated_at": "2026-03-18T14:22:56+00:00",
"advisory_total": 89,
"generated_at": "2026-03-18T14:45:55+00:00",
"advisory_total": 5,
"latest_statuses": {
"verified-real": 89
"triage-manual": 5
},
"historical_statuses": {
"verified-real": 136,
"blocked-artifact": 3,
"triage-manual": 1
},
"verified_real": 89,
"verified_real": 0,
"verified_synthetic": 0,
"blocked": 0,
"manual": 0,
"verified_ratio": 100.0,
"complete": true,
"manual": 5,
"verified_ratio": 0.0,
"complete": false,
"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,
"total": 5,
"verified_real": 0,
"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,
"manual": 5,
"families": [
{
"family": "proxy-boundary",
"total": 11,
"verified_real": 11,
"total": 4,
"verified_real": 0,
"verified_synthetic": 0,
"blocked": 0,
"manual": 0
"manual": 4
},
{
"family": "xss",
"family": "request-smuggling",
"total": 1,
"verified_real": 1,
"verified_real": 0,
"verified_synthetic": 0,
"blocked": 0,
"manual": 0
"manual": 1
}
]
}
],
"ingest_health": {
"failure_count": 5,
"failure_count": 29,
"failures": [
"drupal::Drupal Security Advisories Site::HTTPError",
"django::Django Security RSS::HTTPError",
"haproxy::HAProxy Security Advisories::HTTPError",
"discourse::Discourse Meta Security::HTTPError",
"adobe-commerce::Adobe Security Bulletins::SSLError"
"adobe-commerce::Adobe Security Bulletins::ConnectionError",
"react::GitHub Global Advisories::TypeError",
"nextjs::GitHub Global Advisories::AttributeError",
"vue::GitHub Global Advisories::HTTPError",
"nuxt::GitHub Global Advisories::HTTPError",
"vite::GitHub Global Advisories::HTTPError",
"angular::GitHub Global Advisories::HTTPError",
"sveltekit::GitHub Global Advisories::HTTPError",
"astro::GitHub Global Advisories::HTTPError",
"express::GitHub Global Advisories::HTTPError",
"nestjs::GitHub Global Advisories::HTTPError",
"koa::GitHub Global Advisories::HTTPError",
"fastify::GitHub Global Advisories::HTTPError",
"hapi::GitHub Global Advisories::HTTPError",
"undici::GitHub Global Advisories::HTTPError",
"webpack::GitHub Global Advisories::HTTPError",
"esbuild::GitHub Global Advisories::HTTPError",
"spring-framework::GitHub Global Advisories::HTTPError",
"spring-security::GitHub Global Advisories::HTTPError",
"spring-boot::GitHub Global Advisories::HTTPError",
"laravel::GitHub Global Advisories::HTTPError",
"symfony::GitHub Global Advisories::HTTPError",
"django::Django Security RSS::HTTPError",
"flask::GitHub Global Advisories::HTTPError",
"werkzeug::GitHub Global Advisories::HTTPError",
"rails::GitHub Global Advisories::HTTPError",
"haproxy::HAProxy Security Advisories::HTTPError"
]
},
"historical_blockers": [

查看文件

@@ -87,7 +87,7 @@
<h1>当前架构库镜像</h1>
<div class="meta">工作台内置镜像页:当前架构库结构化数据镜像。</div>
<pre>{
&quot;generated_at&quot;: &quot;2026-03-18T14:22:56+00:00&quot;,
&quot;generated_at&quot;: &quot;2026-03-18T14:45:55+00:00&quot;,
&quot;title&quot;: &quot;当前架构库&quot;,
&quot;summary&quot;: &quot;工作台、控制面、数据层、授权边界与系统覆盖的当前真值视图。&quot;,
&quot;sections&quot;: [
@@ -119,7 +119,7 @@
},
{
&quot;label&quot;: &quot;当前漏洞条目&quot;,
&quot;value&quot;: &quot;89&quot;
&quot;value&quot;: &quot;5&quot;
}
],
&quot;fields&quot;: [
@@ -137,7 +137,7 @@
},
{
&quot;label&quot;: &quot;生成时间&quot;,
&quot;value&quot;: &quot;2026-03-18T14:22:56+00:00&quot;
&quot;value&quot;: &quot;2026-03-18T14:45:55+00:00&quot;
}
],
&quot;links&quot;: [
@@ -5945,7 +5945,7 @@
},
{
&quot;label&quot;: &quot;Advisory 数&quot;,
&quot;value&quot;: &quot;89&quot;
&quot;value&quot;: &quot;5&quot;
},
{
&quot;label&quot;: &quot;状态类型&quot;,
@@ -5953,7 +5953,7 @@
},
{
&quot;label&quot;: &quot;最近失败&quot;,
&quot;value&quot;: &quot;0&quot;
&quot;value&quot;: &quot;5&quot;
}
],
&quot;items&quot;: [
@@ -5963,17 +5963,17 @@
&quot;open&quot;: false,
&quot;items&quot;: [
{
&quot;title&quot;: &quot;真实版本已实证&quot;,
&quot;summary&quot;: &quot;当前累计 89 条。&quot;,
&quot;title&quot;: &quot;人工分诊&quot;,
&quot;summary&quot;: &quot;当前累计 5 条。&quot;,
&quot;open&quot;: false,
&quot;fields&quot;: [
{
&quot;label&quot;: &quot;状态编码&quot;,
&quot;value&quot;: &quot;verified-real&quot;
&quot;value&quot;: &quot;triage-manual&quot;
},
{
&quot;label&quot;: &quot;数量&quot;,
&quot;value&quot;: &quot;89&quot;
&quot;value&quot;: &quot;5&quot;
}
]
}
@@ -5985,9 +5985,134 @@
&quot;open&quot;: false,
&quot;items&quot;: [
{
&quot;title&quot;: &quot;暂无失败样本&quot;,
&quot;summary&quot;: &quot;当前 summary.json 中没有 recent_failures&quot;,
&quot;open&quot;: false
&quot;title&quot;: &quot;Next.js: Unbounded postponed resume buffering can lead to DoS&quot;,
&quot;summary&quot;: &quot;无额外阻塞说明&quot;,
&quot;open&quot;: false,
&quot;badges&quot;: [
&quot;人工分诊&quot;
],
&quot;fields&quot;: [
{
&quot;label&quot;: &quot;运行 ID&quot;,
&quot;value&quot;: &quot;-&quot;
},
{
&quot;label&quot;: &quot;漏洞条目&quot;,
&quot;value&quot;: &quot;nextjs--CVE-2026-27979&quot;
},
{
&quot;label&quot;: &quot;状态&quot;,
&quot;value&quot;: &quot;人工分诊&quot;
},
{
&quot;label&quot;: &quot;阻塞原因&quot;,
&quot;value&quot;: &quot;-&quot;
}
]
},
{
&quot;title&quot;: &quot;Next.js: Unbounded next/image disk cache growth can exhaust storage&quot;,
&quot;summary&quot;: &quot;无额外阻塞说明。&quot;,
&quot;open&quot;: false,
&quot;badges&quot;: [
&quot;人工分诊&quot;
],
&quot;fields&quot;: [
{
&quot;label&quot;: &quot;运行 ID&quot;,
&quot;value&quot;: &quot;-&quot;
},
{
&quot;label&quot;: &quot;漏洞条目&quot;,
&quot;value&quot;: &quot;nextjs--CVE-2026-27980&quot;
},
{
&quot;label&quot;: &quot;状态&quot;,
&quot;value&quot;: &quot;人工分诊&quot;
},
{
&quot;label&quot;: &quot;阻塞原因&quot;,
&quot;value&quot;: &quot;-&quot;
}
]
},
{
&quot;title&quot;: &quot;Next.js: HTTP request smuggling in rewrites&quot;,
&quot;summary&quot;: &quot;无额外阻塞说明。&quot;,
&quot;open&quot;: false,
&quot;badges&quot;: [
&quot;人工分诊&quot;
],
&quot;fields&quot;: [
{
&quot;label&quot;: &quot;运行 ID&quot;,
&quot;value&quot;: &quot;-&quot;
},
{
&quot;label&quot;: &quot;漏洞条目&quot;,
&quot;value&quot;: &quot;nextjs--CVE-2026-29057&quot;
},
{
&quot;label&quot;: &quot;状态&quot;,
&quot;value&quot;: &quot;人工分诊&quot;
},
{
&quot;label&quot;: &quot;阻塞原因&quot;,
&quot;value&quot;: &quot;-&quot;
}
]
},
{
&quot;title&quot;: &quot;Next.js: null origin can bypass Server Actions CSRF checks&quot;,
&quot;summary&quot;: &quot;无额外阻塞说明。&quot;,
&quot;open&quot;: false,
&quot;badges&quot;: [
&quot;人工分诊&quot;
],
&quot;fields&quot;: [
{
&quot;label&quot;: &quot;运行 ID&quot;,
&quot;value&quot;: &quot;-&quot;
},
{
&quot;label&quot;: &quot;漏洞条目&quot;,
&quot;value&quot;: &quot;nextjs--CVE-2026-27978&quot;
},
{
&quot;label&quot;: &quot;状态&quot;,
&quot;value&quot;: &quot;人工分诊&quot;
},
{
&quot;label&quot;: &quot;阻塞原因&quot;,
&quot;value&quot;: &quot;-&quot;
}
]
},
{
&quot;title&quot;: &quot;Next.js: null origin can bypass dev HMR websocket CSRF checks&quot;,
&quot;summary&quot;: &quot;无额外阻塞说明。&quot;,
&quot;open&quot;: false,
&quot;badges&quot;: [
&quot;人工分诊&quot;
],
&quot;fields&quot;: [
{
&quot;label&quot;: &quot;运行 ID&quot;,
&quot;value&quot;: &quot;-&quot;
},
{
&quot;label&quot;: &quot;漏洞条目&quot;,
&quot;value&quot;: &quot;nextjs--CVE-2026-27977&quot;
},
{
&quot;label&quot;: &quot;状态&quot;,
&quot;value&quot;: &quot;人工分诊&quot;
},
{
&quot;label&quot;: &quot;阻塞原因&quot;,
&quot;value&quot;: &quot;-&quot;
}
]
}
]
}

查看文件

@@ -109,7 +109,7 @@
| Flask | `frameworks` | `rolling-24m` | `-` | `yes` | `0` | `0` | `3` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |
| Ghost | `cms` | `rolling-24m` | `-` | `yes` | `0` | `0` | `3` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |
| Gin | `frameworks` | `rolling-24m` | `-` | `yes` | `0` | `0` | `2` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |
| Gitea | `platforms` | `rolling-24m` | `-` | `yes` | `37` | `37` | `3` | `seeded` | `real:37/synthetic:0/blocked:0` | `33` | `37` | `0` | `2026-03-03T04:57:57.697708Z` |
| Gitea | `platforms` | `rolling-24m` | `-` | `yes` | `0` | `0` | `3` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |
| GitLab CE | `platforms` | `rolling-24m` | `-` | `yes` | `0` | `0` | `3` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |
| Grafana | `platforms` | `rolling-24m` | `-` | `yes` | `0` | `0` | `3` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |
| Hapi | `frameworks` | `rolling-24m` | `-` | `yes` | `0` | `0` | `2` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |
@@ -125,7 +125,7 @@
| Medusa | `ecommerce` | `rolling-24m` | `-` | `yes` | `0` | `0` | `2` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |
| Moodle | `cms` | `rolling-24m` | `-` | `yes` | `0` | `0` | `3` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |
| NestJS | `frameworks` | `rolling-24m` | `-` | `yes` | `0` | `0` | `3` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |
| Next.js | `frameworks` | `history-full` | `yes` | `yes` | `26` | `26` | `3` | `seeded` | `real:26/synthetic:0/blocked:0` | `21` | `26` | `0` | `2026-03-13T22:14:13.665535Z` |
| Next.js | `frameworks` | `history-full` | `yes` | `yes` | `5` | `5` | `3` | `seeded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `2026-03-17T16:31:34.160932Z` |
| Nginx | `servers` | `history-full` | `yes` | `yes` | `0` | `0` | `3` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |
| Node.js | `frameworks` | `history-full` | `yes` | `yes` | `0` | `0` | `3` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |
| Nuxt | `frameworks` | `history-full` | `yes` | `yes` | `0` | `0` | `3` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |
@@ -145,8 +145,8 @@
| SvelteKit | `frameworks` | `rolling-24m` | `-` | `yes` | `0` | `0` | `2` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |
| Symfony | `frameworks` | `rolling-24m` | `-` | `yes` | `0` | `0` | `3` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |
| Traefik | `servers` | `rolling-24m` | `-` | `yes` | `0` | `0` | `2` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |
| Undici | `frameworks` | `rolling-24m` | `-` | `yes` | `14` | `14` | `2` | `seeded` | `real:14/synthetic:0/blocked:0` | `0` | `14` | `0` | `2026-03-14T09:19:54.772219Z` |
| Vite | `frameworks` | `history-full` | `yes` | `yes` | `12` | `12` | `3` | `seeded` | `real:12/synthetic:0/blocked:0` | `12` | `12` | `0` | `2026-02-04T04:37:24.129476Z` |
| Undici | `frameworks` | `rolling-24m` | `-` | `yes` | `0` | `0` | `2` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |
| Vite | `frameworks` | `history-full` | `yes` | `yes` | `0` | `0` | `3` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |
| Vue | `frameworks` | `history-full` | `yes` | `yes` | `0` | `0` | `3` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |
| webpack | `frameworks` | `rolling-24m` | `-` | `yes` | `0` | `0` | `2` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |
| Werkzeug | `frameworks` | `rolling-24m` | `-` | `yes` | `0` | `0` | `2` | `scaffolded` | `real:0/synthetic:0/blocked:0` | `0` | `0` | `0` | `` |

查看文件

@@ -88,21 +88,18 @@
<div class="meta">工作台内置镜像页89 条 advisory 最新完整度、family 矩阵与 ingest 健康度。</div>
<pre># 全库 Advisory 完整度报告
- 生成时间: `2026-03-18T14:22:56+00:00`
- 最新 advisory 完整度: `89/89` `verified-real`
- 生成时间: `2026-03-18T14:45:55+00:00`
- 最新 advisory 完整度: `0/5` `verified-real`
- 合成验证数量: `0`
- 阻塞数量: `0`
- 人工/待补证据数量: `0`
- 完整度百分比: `100.0%`
- 人工/待补证据数量: `5`
- 完整度百分比: `0.0%`
## 系统覆盖矩阵
| 系统 | 总数 | verified-real | verified-synthetic | blocked | manual | family 覆盖 |
| --- | ---: | ---: | ---: | ---: | ---: | --- |
| gitea | 37 | 37 | 0 | 0 | 0 | authz-bypass(3/3), file-upload(2/2), proxy-boundary(26/26), ssrf(1/1), xss(5/5) |
| nextjs | 26 | 26 | 0 | 0 | 0 | authz-bypass(2/2), deserialization(1/1), proxy-boundary(19/19), ssrf(2/2), xss(2/2) |
| undici | 14 | 14 | 0 | 0 | 0 | ssrf(14/14) |
| vite | 12 | 12 | 0 | 0 | 0 | proxy-boundary(11/11), xss(1/1) |
| nextjs | 5 | 0 | 0 | 0 | 5 | proxy-boundary(0/4), request-smuggling(0/1) |
## 历史阻塞项修复纪要
@@ -113,12 +110,36 @@
## Ingest / Source 健康度
- source failures: `5`
- source failures: `29`
- drupal::Drupal Security Advisories Site::HTTPError
- django::Django Security RSS::HTTPError
- haproxy::HAProxy Security Advisories::HTTPError
- discourse::Discourse Meta Security::HTTPError
- adobe-commerce::Adobe Security Bulletins::SSLError
- adobe-commerce::Adobe Security Bulletins::ConnectionError
- react::GitHub Global Advisories::TypeError
- nextjs::GitHub Global Advisories::AttributeError
- vue::GitHub Global Advisories::HTTPError
- nuxt::GitHub Global Advisories::HTTPError
- vite::GitHub Global Advisories::HTTPError
- angular::GitHub Global Advisories::HTTPError
- sveltekit::GitHub Global Advisories::HTTPError
- astro::GitHub Global Advisories::HTTPError
- express::GitHub Global Advisories::HTTPError
- nestjs::GitHub Global Advisories::HTTPError
- koa::GitHub Global Advisories::HTTPError
- fastify::GitHub Global Advisories::HTTPError
- hapi::GitHub Global Advisories::HTTPError
- undici::GitHub Global Advisories::HTTPError
- webpack::GitHub Global Advisories::HTTPError
- esbuild::GitHub Global Advisories::HTTPError
- spring-framework::GitHub Global Advisories::HTTPError
- spring-security::GitHub Global Advisories::HTTPError
- spring-boot::GitHub Global Advisories::HTTPError
- laravel::GitHub Global Advisories::HTTPError
- symfony::GitHub Global Advisories::HTTPError
- django::Django Security RSS::HTTPError
- flask::GitHub Global Advisories::HTTPError
- werkzeug::GitHub Global Advisories::HTTPError
- rails::GitHub Global Advisories::HTTPError
- haproxy::HAProxy Security Advisories::HTTPError
## 剩余风险说明

文件差异内容过多而无法显示 加载差异

查看文件

@@ -1,171 +1,90 @@
{
"generated_at": "2026-03-18T14:22:56+00:00",
"advisory_count": 89,
"generated_at": "2026-03-18T14:45:55+00:00",
"advisory_count": 5,
"run_count": 140,
"statuses": {
"verified-real": 89
"triage-manual": 5
},
"run_statuses": {
"verified-real": 136,
"blocked-artifact": 3,
"triage-manual": 1
},
"recent_failures": [],
"systems": [
"recent_failures": [
{
"system_id": "gitea",
"display_name": "Gitea",
"total": 37,
"verified_real": 37,
"verified_synthetic": 0,
"blocked": 0,
"manual": 0,
"browser_required": 5,
"browser_present": 33,
"latest_update": "2026-03-03T04:57:57.697708Z",
"category": "platforms",
"tier": "rolling-24m",
"output_dir": "07-framework-security/platforms/gitea",
"families": [
{
"family": "authz-bypass",
"total": 3,
"verified_real": 3,
"manual": 0
},
{
"family": "file-upload",
"total": 2,
"verified_real": 2,
"manual": 0
},
{
"family": "proxy-boundary",
"total": 26,
"verified_real": 26,
"manual": 0
},
{
"family": "ssrf",
"total": 1,
"verified_real": 1,
"manual": 0
},
{
"family": "xss",
"total": 5,
"verified_real": 5,
"manual": 0
}
]
"run_id": null,
"advisory_id": "nextjs--CVE-2026-27979",
"status": "triage-manual",
"title": "Next.js: Unbounded postponed resume buffering can lead to DoS",
"blocked_reason": null
},
{
"run_id": null,
"advisory_id": "nextjs--CVE-2026-27980",
"status": "triage-manual",
"title": "Next.js: Unbounded next/image disk cache growth can exhaust storage",
"blocked_reason": null
},
{
"run_id": null,
"advisory_id": "nextjs--CVE-2026-29057",
"status": "triage-manual",
"title": "Next.js: HTTP request smuggling in rewrites",
"blocked_reason": null
},
{
"run_id": null,
"advisory_id": "nextjs--CVE-2026-27978",
"status": "triage-manual",
"title": "Next.js: null origin can bypass Server Actions CSRF checks",
"blocked_reason": null
},
{
"run_id": null,
"advisory_id": "nextjs--CVE-2026-27977",
"status": "triage-manual",
"title": "Next.js: null origin can bypass dev HMR websocket CSRF checks",
"blocked_reason": null
}
],
"systems": [
{
"system_id": "nextjs",
"display_name": "Next.js",
"total": 26,
"verified_real": 26,
"total": 5,
"verified_real": 0,
"verified_synthetic": 0,
"blocked": 0,
"manual": 0,
"browser_required": 2,
"browser_present": 21,
"latest_update": "2026-03-13T22:14:13.665535Z",
"manual": 5,
"browser_required": 0,
"browser_present": 0,
"latest_update": "2026-03-17T16:31:34.160932Z",
"category": "frameworks",
"tier": "history-full",
"output_dir": "07-framework-security/frameworks/nextjs",
"families": [
{
"family": "authz-bypass",
"total": 2,
"verified_real": 2,
"manual": 0
},
{
"family": "deserialization",
"total": 1,
"verified_real": 1,
"manual": 0
},
{
"family": "proxy-boundary",
"total": 19,
"verified_real": 19,
"manual": 0
"total": 4,
"verified_real": 0,
"manual": 4
},
{
"family": "ssrf",
"total": 2,
"verified_real": 2,
"manual": 0
},
{
"family": "xss",
"total": 2,
"verified_real": 2,
"manual": 0
}
]
},
{
"system_id": "undici",
"display_name": "Undici",
"total": 14,
"verified_real": 14,
"verified_synthetic": 0,
"blocked": 0,
"manual": 0,
"browser_required": 0,
"browser_present": 0,
"latest_update": "2026-03-14T09:19:54.772219Z",
"category": "frameworks",
"tier": "rolling-24m",
"output_dir": "07-framework-security/frameworks/undici",
"families": [
{
"family": "ssrf",
"total": 14,
"verified_real": 14,
"manual": 0
}
]
},
{
"system_id": "vite",
"display_name": "Vite",
"total": 12,
"verified_real": 12,
"verified_synthetic": 0,
"blocked": 0,
"manual": 0,
"browser_required": 3,
"browser_present": 12,
"latest_update": "2026-02-04T04:37:24.129476Z",
"category": "frameworks",
"tier": "history-full",
"output_dir": "07-framework-security/frameworks/vite",
"families": [
{
"family": "proxy-boundary",
"total": 11,
"verified_real": 11,
"manual": 0
},
{
"family": "xss",
"family": "request-smuggling",
"total": 1,
"verified_real": 1,
"manual": 0
"verified_real": 0,
"manual": 1
}
]
}
],
"completeness": {
"advisory_total": 89,
"verified_real": 89,
"advisory_total": 5,
"verified_real": 0,
"verified_synthetic": 0,
"blocked": 0,
"manual": 0,
"verified_ratio": 100.0,
"complete": true
"manual": 5,
"verified_ratio": 0.0,
"complete": false
}
}

查看文件

@@ -1,147 +1,30 @@
[
{
"system_id": "gitea",
"display_name": "Gitea",
"total": 37,
"verified_real": 37,
"verified_synthetic": 0,
"blocked": 0,
"manual": 0,
"browser_required": 5,
"browser_present": 33,
"latest_update": "2026-03-03T04:57:57.697708Z",
"category": "platforms",
"tier": "rolling-24m",
"output_dir": "07-framework-security/platforms/gitea",
"families": [
{
"family": "authz-bypass",
"total": 3,
"verified_real": 3,
"manual": 0
},
{
"family": "file-upload",
"total": 2,
"verified_real": 2,
"manual": 0
},
{
"family": "proxy-boundary",
"total": 26,
"verified_real": 26,
"manual": 0
},
{
"family": "ssrf",
"total": 1,
"verified_real": 1,
"manual": 0
},
{
"family": "xss",
"total": 5,
"verified_real": 5,
"manual": 0
}
]
},
{
"system_id": "nextjs",
"display_name": "Next.js",
"total": 26,
"verified_real": 26,
"total": 5,
"verified_real": 0,
"verified_synthetic": 0,
"blocked": 0,
"manual": 0,
"browser_required": 2,
"browser_present": 21,
"latest_update": "2026-03-13T22:14:13.665535Z",
"manual": 5,
"browser_required": 0,
"browser_present": 0,
"latest_update": "2026-03-17T16:31:34.160932Z",
"category": "frameworks",
"tier": "history-full",
"output_dir": "07-framework-security/frameworks/nextjs",
"families": [
{
"family": "authz-bypass",
"total": 2,
"verified_real": 2,
"manual": 0
},
{
"family": "deserialization",
"total": 1,
"verified_real": 1,
"manual": 0
},
{
"family": "proxy-boundary",
"total": 19,
"verified_real": 19,
"manual": 0
"total": 4,
"verified_real": 0,
"manual": 4
},
{
"family": "ssrf",
"total": 2,
"verified_real": 2,
"manual": 0
},
{
"family": "xss",
"total": 2,
"verified_real": 2,
"manual": 0
}
]
},
{
"system_id": "undici",
"display_name": "Undici",
"total": 14,
"verified_real": 14,
"verified_synthetic": 0,
"blocked": 0,
"manual": 0,
"browser_required": 0,
"browser_present": 0,
"latest_update": "2026-03-14T09:19:54.772219Z",
"category": "frameworks",
"tier": "rolling-24m",
"output_dir": "07-framework-security/frameworks/undici",
"families": [
{
"family": "ssrf",
"total": 14,
"verified_real": 14,
"manual": 0
}
]
},
{
"system_id": "vite",
"display_name": "Vite",
"total": 12,
"verified_real": 12,
"verified_synthetic": 0,
"blocked": 0,
"manual": 0,
"browser_required": 3,
"browser_present": 12,
"latest_update": "2026-02-04T04:37:24.129476Z",
"category": "frameworks",
"tier": "history-full",
"output_dir": "07-framework-security/frameworks/vite",
"families": [
{
"family": "proxy-boundary",
"total": 11,
"verified_real": 11,
"manual": 0
},
{
"family": "xss",
"family": "request-smuggling",
"total": 1,
"verified_real": 1,
"manual": 0
"verified_real": 0,
"manual": 1
}
]
}

查看文件

@@ -1,19 +1,43 @@
# 最新同步摘要
- 渲染时间: `2026-03-18T14:22:48+00:00`
- 渲染时间: `2026-03-18T14:45:54+00:00`
- 系统数量: `62`
- Advisory 数量: `89`
- 重点 Markdown 数量: `89`
- Advisory 数量: `5`
- 重点 Markdown 数量: `5`
- Run Bundle 数量: `89`
- 新增记录: `0`
- 新增记录: `5`
- 更新记录: `0`
- Triage 数量: `0`
- 失败的 source adapter: `5`
- 失败的 source adapter: `29`
## 失败列表
- drupal::Drupal Security Advisories Site::HTTPError
- django::Django Security RSS::HTTPError
- haproxy::HAProxy Security Advisories::HTTPError
- discourse::Discourse Meta Security::HTTPError
- adobe-commerce::Adobe Security Bulletins::SSLError
- adobe-commerce::Adobe Security Bulletins::ConnectionError
- react::GitHub Global Advisories::TypeError
- nextjs::GitHub Global Advisories::AttributeError
- vue::GitHub Global Advisories::HTTPError
- nuxt::GitHub Global Advisories::HTTPError
- vite::GitHub Global Advisories::HTTPError
- angular::GitHub Global Advisories::HTTPError
- sveltekit::GitHub Global Advisories::HTTPError
- astro::GitHub Global Advisories::HTTPError
- express::GitHub Global Advisories::HTTPError
- nestjs::GitHub Global Advisories::HTTPError
- koa::GitHub Global Advisories::HTTPError
- fastify::GitHub Global Advisories::HTTPError
- hapi::GitHub Global Advisories::HTTPError
- undici::GitHub Global Advisories::HTTPError
- webpack::GitHub Global Advisories::HTTPError
- esbuild::GitHub Global Advisories::HTTPError
- spring-framework::GitHub Global Advisories::HTTPError
- spring-security::GitHub Global Advisories::HTTPError
- spring-boot::GitHub Global Advisories::HTTPError
- laravel::GitHub Global Advisories::HTTPError
- symfony::GitHub Global Advisories::HTTPError
- django::Django Security RSS::HTTPError
- flask::GitHub Global Advisories::HTTPError
- werkzeug::GitHub Global Advisories::HTTPError
- rails::GitHub Global Advisories::HTTPError
- haproxy::HAProxy Security Advisories::HTTPError

查看文件

@@ -1,18 +1,44 @@
{
"generated_at": "2026-03-18T14:22:48+00:00",
"generated_at": "2026-03-18T14:45:54+00:00",
"system_count": 62,
"advisory_count": 89,
"markdown_count": 89,
"new_count": 0,
"advisory_count": 5,
"markdown_count": 5,
"new_count": 5,
"updated_count": 0,
"systems_touched": [],
"systems_touched": [
"nextjs"
],
"triage_count": 0,
"run_bundle_count": 89,
"failures": [
"drupal::Drupal Security Advisories Site::HTTPError",
"django::Django Security RSS::HTTPError",
"haproxy::HAProxy Security Advisories::HTTPError",
"discourse::Discourse Meta Security::HTTPError",
"adobe-commerce::Adobe Security Bulletins::SSLError"
"adobe-commerce::Adobe Security Bulletins::ConnectionError",
"react::GitHub Global Advisories::TypeError",
"nextjs::GitHub Global Advisories::AttributeError",
"vue::GitHub Global Advisories::HTTPError",
"nuxt::GitHub Global Advisories::HTTPError",
"vite::GitHub Global Advisories::HTTPError",
"angular::GitHub Global Advisories::HTTPError",
"sveltekit::GitHub Global Advisories::HTTPError",
"astro::GitHub Global Advisories::HTTPError",
"express::GitHub Global Advisories::HTTPError",
"nestjs::GitHub Global Advisories::HTTPError",
"koa::GitHub Global Advisories::HTTPError",
"fastify::GitHub Global Advisories::HTTPError",
"hapi::GitHub Global Advisories::HTTPError",
"undici::GitHub Global Advisories::HTTPError",
"webpack::GitHub Global Advisories::HTTPError",
"esbuild::GitHub Global Advisories::HTTPError",
"spring-framework::GitHub Global Advisories::HTTPError",
"spring-security::GitHub Global Advisories::HTTPError",
"spring-boot::GitHub Global Advisories::HTTPError",
"laravel::GitHub Global Advisories::HTTPError",
"symfony::GitHub Global Advisories::HTTPError",
"django::Django Security RSS::HTTPError",
"flask::GitHub Global Advisories::HTTPError",
"werkzeug::GitHub Global Advisories::HTTPError",
"rails::GitHub Global Advisories::HTTPError",
"haproxy::HAProxy Security Advisories::HTTPError"
]
}