From 1f2744825f1180648736506a0ff957bc615713c7 Mon Sep 17 00:00:00 2001 From: hao Date: Tue, 17 Mar 2026 00:07:51 -0700 Subject: [PATCH] lab: automated intel and verification sync codex/intel-20260317-000751 --- 01-sql-injection/tools/sqli-exploit.go | 10 +- 02-xss/exploitation/README.md | 8 +- 02-xss/payloads/README.md | 8 +- .../bruteforce/exploitation/README.md | 8 +- .../bruteforce/wordlists/README.md | 8 +- 03-authentication/jwt/exploitation/README.md | 8 +- .../session/exploitation/README.md | 8 +- 04-server-security/nmap-scripts/README.md | 8 +- .../compose/compose.yaml | 8 ++ .../gitea-livecheck-20260316/report.html | 41 ++++++ .../gitea-livecheck-20260316/report.md | 55 ++++++++ .../gitea-livecheck-20260316/run.json | 95 +++++++++++++ .../gitea-livecheck-20260316/timeline.mmd | 9 ++ 07-framework-security/cms/directus/INDEX.md | 2 +- 07-framework-security/cms/discourse/INDEX.md | 2 +- 07-framework-security/cms/drupal/INDEX.md | 2 +- 07-framework-security/cms/ghost/INDEX.md | 2 +- 07-framework-security/cms/joomla/INDEX.md | 2 +- 07-framework-security/cms/mediawiki/INDEX.md | 2 +- 07-framework-security/cms/moodle/INDEX.md | 2 +- 07-framework-security/cms/strapi/INDEX.md | 2 +- 07-framework-security/cms/wordpress/INDEX.md | 2 +- .../ecommerce/adobe-commerce/INDEX.md | 2 +- .../ecommerce/magento-open-source/INDEX.md | 2 +- .../ecommerce/medusa/INDEX.md | 2 +- .../ecommerce/opencart/INDEX.md | 2 +- .../ecommerce/openmage/INDEX.md | 2 +- .../ecommerce/prestashop/INDEX.md | 2 +- .../ecommerce/saleor/INDEX.md | 2 +- .../ecommerce/shopware/INDEX.md | 2 +- .../ecommerce/woocommerce/INDEX.md | 2 +- .../frameworks/angular/INDEX.md | 2 +- .../frameworks/aspnet-core/INDEX.md | 2 +- .../frameworks/astro/INDEX.md | 2 +- .../frameworks/django/INDEX.md | 2 +- .../frameworks/echo/INDEX.md | 2 +- .../frameworks/esbuild/INDEX.md | 2 +- .../frameworks/express/INDEX.md | 2 +- .../frameworks/fastify/INDEX.md | 2 +- .../frameworks/flask/INDEX.md | 2 +- 07-framework-security/frameworks/gin/INDEX.md | 2 +- .../frameworks/hapi/INDEX.md | 2 +- 07-framework-security/frameworks/koa/INDEX.md | 2 +- .../frameworks/laravel/INDEX.md | 2 +- .../frameworks/nestjs/INDEX.md | 2 +- .../frameworks/nextjs/INDEX.md | 2 +- .../frameworks/nodejs/INDEX.md | 2 +- .../frameworks/nuxt/INDEX.md | 2 +- .../frameworks/rails/INDEX.md | 2 +- .../frameworks/react/INDEX.md | 2 +- .../frameworks/spring-boot/INDEX.md | 2 +- .../frameworks/spring-framework/INDEX.md | 2 +- .../frameworks/spring-security/INDEX.md | 2 +- .../frameworks/sveltekit/INDEX.md | 2 +- .../frameworks/symfony/INDEX.md | 2 +- .../frameworks/undici/INDEX.md | 2 +- .../frameworks/vite/INDEX.md | 2 +- 07-framework-security/frameworks/vue/INDEX.md | 2 +- .../frameworks/webpack/INDEX.md | 2 +- .../frameworks/werkzeug/INDEX.md | 2 +- .../platforms/adminer/INDEX.md | 2 +- .../platforms/gitea/INDEX.md | 2 +- .../gitea/cases/gitea-cve-2025-68939.md | 6 +- .../platforms/gitlab-ce/INDEX.md | 2 +- .../platforms/grafana/INDEX.md | 2 +- .../platforms/jenkins/INDEX.md | 2 +- .../platforms/kibana/INDEX.md | 2 +- .../platforms/mattermost/INDEX.md | 2 +- .../platforms/phpmyadmin/INDEX.md | 2 +- .../platforms/redmine/INDEX.md | 2 +- .../servers/apache-httpd/INDEX.md | 2 +- .../servers/apache-tomcat/INDEX.md | 2 +- 07-framework-security/servers/caddy/INDEX.md | 2 +- .../servers/haproxy/INDEX.md | 2 +- 07-framework-security/servers/nginx/INDEX.md | 2 +- .../servers/traefik/INDEX.md | 2 +- .../generated/dashboard/index.html | 71 ++++++++-- 08-threat-intel/generated/dashboard/runs.json | 132 +++++++++++++++++- ...gitea-gitea--CVE-2025-68939-20260317063330 | 1 + .../dashboard/runs/gitea-livecheck-20260316 | 1 + ...xtjs-nextjs--CVE-2025-29927-20260317063047 | 1 + .../generated/dashboard/summary.json | 131 +++++++++-------- .../generated/dashboard/systems.json | 50 +++++++ 08-threat-intel/generated/latest-ingest.md | 2 +- 08-threat-intel/generated/run-summary.json | 2 +- .../advisories/gitea--CVE-2025-68939.json | 6 +- .../runs/gitea-livecheck-20260316.json | 95 +++++++++++++ scripts/lab/render.py | 7 +- 88 files changed, 733 insertions(+), 170 deletions(-) create mode 100644 06-case-studies/generated-runs/gitea-livecheck-20260316/compose/compose.yaml create mode 100644 06-case-studies/generated-runs/gitea-livecheck-20260316/report.html create mode 100644 06-case-studies/generated-runs/gitea-livecheck-20260316/report.md create mode 100644 06-case-studies/generated-runs/gitea-livecheck-20260316/run.json create mode 100644 06-case-studies/generated-runs/gitea-livecheck-20260316/timeline.mmd create mode 120000 08-threat-intel/generated/dashboard/runs/gitea-gitea--CVE-2025-68939-20260317063330 create mode 120000 08-threat-intel/generated/dashboard/runs/gitea-livecheck-20260316 create mode 120000 08-threat-intel/generated/dashboard/runs/nextjs-nextjs--CVE-2025-29927-20260317063047 create mode 100644 08-threat-intel/generated/dashboard/systems.json create mode 100644 08-threat-intel/registry/runs/gitea-livecheck-20260316.json diff --git a/01-sql-injection/tools/sqli-exploit.go b/01-sql-injection/tools/sqli-exploit.go index 05e4448a..fdd43ad8 100644 --- a/01-sql-injection/tools/sqli-exploit.go +++ b/01-sql-injection/tools/sqli-exploit.go @@ -164,11 +164,11 @@ func (s *SQLiExploit) TestErrorBased(payloads []struct { continue } - for dbms := range errorPatterns { - if strings.Contains(body, "SQL") || strings.Contains(body, "error") || - strings.Contains(body, "Error") || strings.Contains(body, "Warning") { - results = append(results, InjectionResult{ - Payload: p.Payload, + for dbms := range errorPatterns { + if strings.Contains(body, "SQL") || strings.Contains(body, "error") || + strings.Contains(body, "Error") || strings.Contains(body, "Warning") { + results = append(results, InjectionResult{ + Payload: p.Payload, VulnType: "Error-based", DBMS: dbms, ResponseLen: respLen, diff --git a/02-xss/exploitation/README.md b/02-xss/exploitation/README.md index 9112632f..2aea3f75 100644 --- a/02-xss/exploitation/README.md +++ b/02-xss/exploitation/README.md @@ -1,5 +1,9 @@ # XSS 利用实验 -> `LAB NOTE` | `规划中` +> `LAB ONLY` | `AUTHORIZED TARGETS ONLY` -该目录预留给受控环境中的最小化利用演示、上下文差异说明和复现脚本。当前仅保留占位,避免误报为已完工。 +该目录用于记录受控环境中的最小化利用演示、上下文差异说明和浏览器回放要求。 + +- 默认模式: `minimal-proof` +- 证据要求: 截图、DOM 快照、console、network、关键元素文本 +- 关联入口: [scripts/lab/main.py](/Users/x/websafe/scripts/lab/main.py), [generated-runs](/Users/x/websafe/06-case-studies/generated-runs) diff --git a/02-xss/payloads/README.md b/02-xss/payloads/README.md index 315076e2..a3194fa8 100644 --- a/02-xss/payloads/README.md +++ b/02-xss/payloads/README.md @@ -1,5 +1,9 @@ # XSS Payload 集合 -> `LAB NOTE` | `规划中` +> `LAB ONLY` | `AUTHORIZED TARGETS ONLY` -该目录后续用于保存按上下文分类的实验 payload。正式补齐前,统一以工具内建 payload 和案例文档为准。 +该目录用于记录按上下文分类的实验 payload 约束,而不是堆放面向未知站点的泛化攻击载荷。 + +- 来源: 以 [xss-fuzzer.py](/Users/x/websafe/02-xss/tools/xss-fuzzer.py) 和 [xss-scanner.go](/Users/x/websafe/02-xss/tools/xss-scanner.go) 的内建 payload 为准 +- 语境: HTML、属性、DOM sink、编码绕过、CSP/Trusted Types 对照实验 +- 不适用: 面向未授权第三方目标的通用 payload 清单传播 diff --git a/03-authentication/bruteforce/exploitation/README.md b/03-authentication/bruteforce/exploitation/README.md index 6e685cdf..9159d1e2 100644 --- a/03-authentication/bruteforce/exploitation/README.md +++ b/03-authentication/bruteforce/exploitation/README.md @@ -1,5 +1,9 @@ # 暴力破解利用说明 -> `LAB NOTE` | `规划中` +> `LAB ONLY` | `AUTHORIZED TARGETS ONLY` -该目录预留给登录流程、锁定策略和验证码绕过的实验说明,强调最小化验证而非账户接管。 +该目录用于记录登录流程、锁定策略和验证码前置控制面的实验说明,强调最小化验证而非账户接管。 + +- 默认目标: 本地种子账号或授权演示账户 +- 默认方式: 小样本、低频、可审计请求 +- 工具入口: [web-brute.py](/Users/x/websafe/03-authentication/bruteforce/tools/web-brute.py) diff --git a/03-authentication/bruteforce/wordlists/README.md b/03-authentication/bruteforce/wordlists/README.md index 067fd4c5..2e370967 100644 --- a/03-authentication/bruteforce/wordlists/README.md +++ b/03-authentication/bruteforce/wordlists/README.md @@ -1,5 +1,9 @@ # 字典文件说明 -> `LAB NOTE` | `规划中` +> `LAB ONLY` | `AUTHORIZED TARGETS ONLY` -该目录后续仅用于小规模、可审计的实验字典,不存放来自真实用户或泄露数据的口令集合。 +该目录仅用于小规模、可审计的实验字典。 + +- 仅允许: 本地种子账号、演示密码、可回滚测试账户 +- 禁止: 真实用户密码、泄露口令库、撞库语料 +- 默认执行器: [web-brute.py](/Users/x/websafe/03-authentication/bruteforce/tools/web-brute.py) diff --git a/03-authentication/jwt/exploitation/README.md b/03-authentication/jwt/exploitation/README.md index 527341cf..c7709ef6 100644 --- a/03-authentication/jwt/exploitation/README.md +++ b/03-authentication/jwt/exploitation/README.md @@ -1,5 +1,9 @@ # JWT 利用实验 -> `LAB NOTE` | `规划中` +> `LAB ONLY` | `AUTHORIZED TARGETS ONLY` -该目录预留给弱密钥、算法降级和 kid 注入的实验复盘,目标是验证控制面,而不是伪造真实第三方令牌。 +该目录用于弱密钥、算法降级和 `kid` 注入的实验复盘,目标是验证控制面,而不是伪造真实第三方令牌。 + +- 默认工具: [jwt-cracker.py](/Users/x/websafe/03-authentication/jwt/tools/jwt-cracker.py) +- 输出约束: 不暴露真实明文密钥或第三方真实令牌内容 +- 关联修复: `token-cookie-storage`, `authz-server-side-recheck` diff --git a/03-authentication/session/exploitation/README.md b/03-authentication/session/exploitation/README.md index f22c3ad7..8d4e9696 100644 --- a/03-authentication/session/exploitation/README.md +++ b/03-authentication/session/exploitation/README.md @@ -1,5 +1,9 @@ # 会话利用实验 -> `LAB NOTE` | `规划中` +> `LAB ONLY` | `AUTHORIZED TARGETS ONLY` -该目录后续用于会话固定、Cookie 属性和登出失效对照实验。 +该目录用于会话固定、Cookie 属性、登出失效和 Token 轮换的最小化验证说明。 + +- 默认工具: [session-lab.py](/Users/x/websafe/03-authentication/session/tools/session-lab.py) +- 证据: Set-Cookie 属性、Storage 痕迹、可疑代理头、run bundle 链路 +- 不适用: 真实账户会话劫持或第三方令牌伪造 diff --git a/04-server-security/nmap-scripts/README.md b/04-server-security/nmap-scripts/README.md index b5f7d6bf..18aff658 100644 --- a/04-server-security/nmap-scripts/README.md +++ b/04-server-security/nmap-scripts/README.md @@ -1,5 +1,9 @@ # Nmap 脚本目录 -> `LAB NOTE` | `规划中` +> `LAB ONLY` | `AUTHORIZED TARGETS ONLY` -该目录预留给授权实验环境中的 NSE 脚本示例。当前不放置通用对外枚举脚本。 +该目录用于授权实验环境中的 NSE 脚本说明与约束。 + +- 当前主入口仍是 [port-scanner.py](/Users/x/websafe/04-server-security/scanning/tools/port-scanner.py) +- 若补充 NSE 样例,只能绑定 `lab-local`、`lab-public`、`authorized-third-party` +- 不放置通用对外枚举脚本或泛互联网扫描模版 diff --git a/06-case-studies/generated-runs/gitea-livecheck-20260316/compose/compose.yaml b/06-case-studies/generated-runs/gitea-livecheck-20260316/compose/compose.yaml new file mode 100644 index 00000000..2cb0d9e3 --- /dev/null +++ b/06-case-studies/generated-runs/gitea-livecheck-20260316/compose/compose.yaml @@ -0,0 +1,8 @@ +services: + app: + image: gitea/gitea:1.22.6 + ports: + - 18085:3000 +networks: + labnet: + driver: bridge diff --git a/06-case-studies/generated-runs/gitea-livecheck-20260316/report.html b/06-case-studies/generated-runs/gitea-livecheck-20260316/report.html new file mode 100644 index 00000000..5ded3c94 --- /dev/null +++ b/06-case-studies/generated-runs/gitea-livecheck-20260316/report.html @@ -0,0 +1,41 @@ + +websafe run report + + +

Run gitea-livecheck-20260316

+
+
Advisory
gitea--CVE-2025-68939
+
Status
blocked-artifact
+
Profile
file-upload-generic
+
Artifact Mode
official-image
+
+

Mermaid Timeline

+
flowchart LR
+A["Select Advisory"] --> B["Resolve Repro Profile"]
+B --> C["Provision Compose Environment"]
+C --> D["Baseline Snapshot"]
+D --> E["Controlled Attack Steps"]
+E --> F["Browser Replay"]
+F --> G["Collect Logs and Evidence"]
+G --> H["Update Registry and Reports"]
+H --> I["Blocked: unable to get image 'gitea/gitea:1.22.6': Cannot connect to "]
+

Timeline

+ + + + + + + + + + +
TimeStepStatusDetail
2026-03-17T07:02:55+00:00select-advisorycompletedgitea--CVE-2025-68939
2026-03-17T07:02:55+00:00resolve-repro-profilecompletedfile-upload-generic
2026-03-17T07:02:56+00:00provision-compose-environmentblocked-artifactunable to get image 'gitea/gitea:1.22.6': Cannot connect to the Docker daemon at unix:///Users/x/.docker/run/docker.sock. Is the docker daemon running?
2026-03-17T07:02:56+00:00baseline-snapshotskippedno baseline urls or provisioning blocked
2026-03-17T07:02:56+00:00browser-replay-before-attackskippedbaseline browser capture unavailable
2026-03-17T07:02:56+00:00controlled-attack-chainskippedprovisioning blocked
2026-03-17T07:02:56+00:00browser-replay-after-attackskippedproof browser capture unavailable
2026-03-17T07:02:56+00:00collect-logs-and-evidenceskippedcontainer_logs=0
2026-03-17T07:02:56+00:00update-registry-and-reportscompletedgitea-livecheck-20260316
+

Attack Steps

+ + +
ToolStatusOutput
-skippedno attack steps
+

Evidence

+ diff --git a/06-case-studies/generated-runs/gitea-livecheck-20260316/report.md b/06-case-studies/generated-runs/gitea-livecheck-20260316/report.md new file mode 100644 index 00000000..e2568ec5 --- /dev/null +++ b/06-case-studies/generated-runs/gitea-livecheck-20260316/report.md @@ -0,0 +1,55 @@ +# Run gitea-livecheck-20260316 + +> `LAB ONLY` | `AUTHORIZED TARGETS ONLY` | 自动生成 run bundle + +- Advisory: `gitea--CVE-2025-68939` +- 系统: `gitea` +- Repro Profile: `file-upload-generic` +- 实证状态: `blocked-artifact` +- 实证方式: `real` +- Artifact 模式: `official-image` +- 启动时间: `2026-03-17T07:02:55+00:00` +- 完成时间: `2026-03-17T07:02:56+00:00` +- 阻塞原因: `unable to get image 'gitea/gitea:1.22.6': Cannot connect to the Docker daemon at unix:///Users/x/.docker/run/docker.sock. Is the docker daemon running?` +- Compose 服务: `app` + +## 运行时间线 + +- Mermaid: [timeline.mmd](/Users/x/websafe/06-case-studies/generated-runs/gitea-livecheck-20260316/timeline.mmd) + +| 时间 | 步骤 | 状态 | 说明 | +|------|------|------|------| +| `2026-03-17T07:02:55+00:00` | `select-advisory` | `completed` | gitea--CVE-2025-68939 | +| `2026-03-17T07:02:55+00:00` | `resolve-repro-profile` | `completed` | file-upload-generic | +| `2026-03-17T07:02:56+00:00` | `provision-compose-environment` | `blocked-artifact` | unable to get image 'gitea/gitea:1.22.6': Cannot connect to the Docker daemon at unix:///Users/x/.docker/run/docker.sock. Is the docker daemon running? | +| `2026-03-17T07:02:56+00:00` | `baseline-snapshot` | `skipped` | no baseline urls or provisioning blocked | +| `2026-03-17T07:02:56+00:00` | `browser-replay-before-attack` | `skipped` | baseline browser capture unavailable | +| `2026-03-17T07:02:56+00:00` | `controlled-attack-chain` | `skipped` | provisioning blocked | +| `2026-03-17T07:02:56+00:00` | `browser-replay-after-attack` | `skipped` | proof browser capture unavailable | +| `2026-03-17T07:02:56+00:00` | `collect-logs-and-evidence` | `skipped` | container_logs=0 | +| `2026-03-17T07:02:56+00:00` | `update-registry-and-reports` | `completed` | gitea-livecheck-20260316 | + +## Compose 拓扑 + +- Compose 文件: `/Users/x/websafe/06-case-studies/generated-runs/gitea-livecheck-20260316/compose/compose.yaml` +- 服务列表: `app` + +## 攻击步骤 + +| 工具/步骤 | 状态 | 结果 | +|-----------|------|------| +| `-` | `skipped` | `no attack steps` | + +## 证据摘要 + +- Baseline: `0` +- 攻击步骤: `0` +- 浏览器证据: `0` +- 容器日志: `0` +- 请求日志: `0` + +## 最小化验证说明 + +- 仅限自有资产、本地靶场或已授权实验目标。 +- 默认执行 minimal-proof;不会把破坏性或不可回滚动作作为默认路径。 +- 若浏览器证据缺失,前端类案例不会被标为 `verified-*`。 diff --git a/06-case-studies/generated-runs/gitea-livecheck-20260316/run.json b/06-case-studies/generated-runs/gitea-livecheck-20260316/run.json new file mode 100644 index 00000000..ab3ec4ef --- /dev/null +++ b/06-case-studies/generated-runs/gitea-livecheck-20260316/run.json @@ -0,0 +1,95 @@ +{ + "run_id": "gitea-livecheck-20260316", + "system_id": "gitea", + "advisory_id": "gitea--CVE-2025-68939", + "repro_profile_id": "file-upload-generic", + "verification_status": "blocked-artifact", + "verification_mode": "real", + "artifact_mode": "official-image", + "target_env": "local-docker", + "compose_services": [ + "app" + ], + "baseline_refs": [], + "attack_steps": [], + "browser_refs": [], + "browser_evidence": { + "required": true, + "present": false, + "refs": [], + "baseline_refs": [], + "proof_refs": [], + "baseline_title": null, + "proof_title": null + }, + "container_log_refs": [], + "request_log_refs": [], + "compose_refs": [ + "/Users/x/websafe/06-case-studies/generated-runs/gitea-livecheck-20260316/compose/compose.yaml" + ], + "timeline": [ + { + "at": "2026-03-17T07:02:55+00:00", + "step": "select-advisory", + "status": "completed", + "detail": "gitea--CVE-2025-68939" + }, + { + "at": "2026-03-17T07:02:55+00:00", + "step": "resolve-repro-profile", + "status": "completed", + "detail": "file-upload-generic" + }, + { + "at": "2026-03-17T07:02:56+00:00", + "step": "provision-compose-environment", + "status": "blocked-artifact", + "detail": "unable to get image 'gitea/gitea:1.22.6': Cannot connect to the Docker daemon at unix:///Users/x/.docker/run/docker.sock. Is the docker daemon running?" + }, + { + "at": "2026-03-17T07:02:56+00:00", + "step": "baseline-snapshot", + "status": "skipped", + "detail": "no baseline urls or provisioning blocked" + }, + { + "at": "2026-03-17T07:02:56+00:00", + "step": "browser-replay-before-attack", + "status": "skipped", + "detail": "baseline browser capture unavailable" + }, + { + "at": "2026-03-17T07:02:56+00:00", + "step": "controlled-attack-chain", + "status": "skipped", + "detail": "provisioning blocked" + }, + { + "at": "2026-03-17T07:02:56+00:00", + "step": "browser-replay-after-attack", + "status": "skipped", + "detail": "proof browser capture unavailable" + }, + { + "at": "2026-03-17T07:02:56+00:00", + "step": "collect-logs-and-evidence", + "status": "skipped", + "detail": "container_logs=0" + }, + { + "at": "2026-03-17T07:02:56+00:00", + "step": "update-registry-and-reports", + "status": "completed", + "detail": "gitea-livecheck-20260316" + } + ], + "started_at": "2026-03-17T07:02:55+00:00", + "finished_at": "2026-03-17T07:02:56+00:00", + "blocked_reason": "unable to get image 'gitea/gitea:1.22.6': Cannot connect to the Docker daemon at unix:///Users/x/.docker/run/docker.sock. Is the docker daemon running?", + "report_refs": { + "bundle_dir": "/Users/x/websafe/06-case-studies/generated-runs/gitea-livecheck-20260316", + "report_md": "/Users/x/websafe/06-case-studies/generated-runs/gitea-livecheck-20260316/report.md", + "report_html": "/Users/x/websafe/06-case-studies/generated-runs/gitea-livecheck-20260316/report.html", + "timeline": "/Users/x/websafe/06-case-studies/generated-runs/gitea-livecheck-20260316/timeline.mmd" + } +} diff --git a/06-case-studies/generated-runs/gitea-livecheck-20260316/timeline.mmd b/06-case-studies/generated-runs/gitea-livecheck-20260316/timeline.mmd new file mode 100644 index 00000000..5b4e2b4b --- /dev/null +++ b/06-case-studies/generated-runs/gitea-livecheck-20260316/timeline.mmd @@ -0,0 +1,9 @@ +flowchart LR +A["Select Advisory"] --> B["Resolve Repro Profile"] +B --> C["Provision Compose Environment"] +C --> D["Baseline Snapshot"] +D --> E["Controlled Attack Steps"] +E --> F["Browser Replay"] +F --> G["Collect Logs and Evidence"] +G --> H["Update Registry and Reports"] +H --> I["Blocked: unable to get image 'gitea/gitea:1.22.6': Cannot connect to "] diff --git a/07-framework-security/cms/directus/INDEX.md b/07-framework-security/cms/directus/INDEX.md index a38bb488..8d5af873 100644 --- a/07-framework-security/cms/directus/INDEX.md +++ b/07-framework-security/cms/directus/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:43+00:00` +- 最近渲染时间: `2026-03-17T07:06:35+00:00` ## 目标约束 diff --git a/07-framework-security/cms/discourse/INDEX.md b/07-framework-security/cms/discourse/INDEX.md index a4d0c3fe..80fa2d5b 100644 --- a/07-framework-security/cms/discourse/INDEX.md +++ b/07-framework-security/cms/discourse/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:43+00:00` +- 最近渲染时间: `2026-03-17T07:06:35+00:00` ## 目标约束 diff --git a/07-framework-security/cms/drupal/INDEX.md b/07-framework-security/cms/drupal/INDEX.md index ef5243e2..ed821cc1 100644 --- a/07-framework-security/cms/drupal/INDEX.md +++ b/07-framework-security/cms/drupal/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:43+00:00` +- 最近渲染时间: `2026-03-17T07:06:35+00:00` ## 目标约束 diff --git a/07-framework-security/cms/ghost/INDEX.md b/07-framework-security/cms/ghost/INDEX.md index ff932079..a10d492f 100644 --- a/07-framework-security/cms/ghost/INDEX.md +++ b/07-framework-security/cms/ghost/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:43+00:00` +- 最近渲染时间: `2026-03-17T07:06:35+00:00` ## 目标约束 diff --git a/07-framework-security/cms/joomla/INDEX.md b/07-framework-security/cms/joomla/INDEX.md index 4d557d74..3e2d5ed4 100644 --- a/07-framework-security/cms/joomla/INDEX.md +++ b/07-framework-security/cms/joomla/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:43+00:00` +- 最近渲染时间: `2026-03-17T07:06:35+00:00` ## 目标约束 diff --git a/07-framework-security/cms/mediawiki/INDEX.md b/07-framework-security/cms/mediawiki/INDEX.md index d58d6f46..e86778c4 100644 --- a/07-framework-security/cms/mediawiki/INDEX.md +++ b/07-framework-security/cms/mediawiki/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:43+00:00` +- 最近渲染时间: `2026-03-17T07:06:35+00:00` ## 目标约束 diff --git a/07-framework-security/cms/moodle/INDEX.md b/07-framework-security/cms/moodle/INDEX.md index 6283b3a2..3bbc35a7 100644 --- a/07-framework-security/cms/moodle/INDEX.md +++ b/07-framework-security/cms/moodle/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:43+00:00` +- 最近渲染时间: `2026-03-17T07:06:35+00:00` ## 目标约束 diff --git a/07-framework-security/cms/strapi/INDEX.md b/07-framework-security/cms/strapi/INDEX.md index 7a82ce75..1a9daada 100644 --- a/07-framework-security/cms/strapi/INDEX.md +++ b/07-framework-security/cms/strapi/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:43+00:00` +- 最近渲染时间: `2026-03-17T07:06:35+00:00` ## 目标约束 diff --git a/07-framework-security/cms/wordpress/INDEX.md b/07-framework-security/cms/wordpress/INDEX.md index 7c48475b..0f7da579 100644 --- a/07-framework-security/cms/wordpress/INDEX.md +++ b/07-framework-security/cms/wordpress/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:43+00:00` +- 最近渲染时间: `2026-03-17T07:06:35+00:00` ## 目标约束 diff --git a/07-framework-security/ecommerce/adobe-commerce/INDEX.md b/07-framework-security/ecommerce/adobe-commerce/INDEX.md index 8edc6dab..b085be40 100644 --- a/07-framework-security/ecommerce/adobe-commerce/INDEX.md +++ b/07-framework-security/ecommerce/adobe-commerce/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:43+00:00` +- 最近渲染时间: `2026-03-17T07:06:35+00:00` ## 目标约束 diff --git a/07-framework-security/ecommerce/magento-open-source/INDEX.md b/07-framework-security/ecommerce/magento-open-source/INDEX.md index f4df6d71..f4dc9236 100644 --- a/07-framework-security/ecommerce/magento-open-source/INDEX.md +++ b/07-framework-security/ecommerce/magento-open-source/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:43+00:00` +- 最近渲染时间: `2026-03-17T07:06:35+00:00` ## 目标约束 diff --git a/07-framework-security/ecommerce/medusa/INDEX.md b/07-framework-security/ecommerce/medusa/INDEX.md index 3622bf91..fd7be24b 100644 --- a/07-framework-security/ecommerce/medusa/INDEX.md +++ b/07-framework-security/ecommerce/medusa/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:43+00:00` +- 最近渲染时间: `2026-03-17T07:06:35+00:00` ## 目标约束 diff --git a/07-framework-security/ecommerce/opencart/INDEX.md b/07-framework-security/ecommerce/opencart/INDEX.md index aae98c45..48cfd031 100644 --- a/07-framework-security/ecommerce/opencart/INDEX.md +++ b/07-framework-security/ecommerce/opencart/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:43+00:00` +- 最近渲染时间: `2026-03-17T07:06:35+00:00` ## 目标约束 diff --git a/07-framework-security/ecommerce/openmage/INDEX.md b/07-framework-security/ecommerce/openmage/INDEX.md index 7d7eb23f..fc8c21db 100644 --- a/07-framework-security/ecommerce/openmage/INDEX.md +++ b/07-framework-security/ecommerce/openmage/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:43+00:00` +- 最近渲染时间: `2026-03-17T07:06:35+00:00` ## 目标约束 diff --git a/07-framework-security/ecommerce/prestashop/INDEX.md b/07-framework-security/ecommerce/prestashop/INDEX.md index 5c980182..f0586477 100644 --- a/07-framework-security/ecommerce/prestashop/INDEX.md +++ b/07-framework-security/ecommerce/prestashop/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:43+00:00` +- 最近渲染时间: `2026-03-17T07:06:35+00:00` ## 目标约束 diff --git a/07-framework-security/ecommerce/saleor/INDEX.md b/07-framework-security/ecommerce/saleor/INDEX.md index 314ece6c..4238c139 100644 --- a/07-framework-security/ecommerce/saleor/INDEX.md +++ b/07-framework-security/ecommerce/saleor/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:43+00:00` +- 最近渲染时间: `2026-03-17T07:06:35+00:00` ## 目标约束 diff --git a/07-framework-security/ecommerce/shopware/INDEX.md b/07-framework-security/ecommerce/shopware/INDEX.md index cedf6d6d..ef50c5de 100644 --- a/07-framework-security/ecommerce/shopware/INDEX.md +++ b/07-framework-security/ecommerce/shopware/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:43+00:00` +- 最近渲染时间: `2026-03-17T07:06:35+00:00` ## 目标约束 diff --git a/07-framework-security/ecommerce/woocommerce/INDEX.md b/07-framework-security/ecommerce/woocommerce/INDEX.md index 3ded7461..c61819b1 100644 --- a/07-framework-security/ecommerce/woocommerce/INDEX.md +++ b/07-framework-security/ecommerce/woocommerce/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:43+00:00` +- 最近渲染时间: `2026-03-17T07:06:35+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/angular/INDEX.md b/07-framework-security/frameworks/angular/INDEX.md index 6366eafb..07cce3d4 100644 --- a/07-framework-security/frameworks/angular/INDEX.md +++ b/07-framework-security/frameworks/angular/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:45+00:00` +- 最近渲染时间: `2026-03-17T07:06:37+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/aspnet-core/INDEX.md b/07-framework-security/frameworks/aspnet-core/INDEX.md index 2a62cb36..6bc120c0 100644 --- a/07-framework-security/frameworks/aspnet-core/INDEX.md +++ b/07-framework-security/frameworks/aspnet-core/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:46+00:00` +- 最近渲染时间: `2026-03-17T07:06:38+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/astro/INDEX.md b/07-framework-security/frameworks/astro/INDEX.md index 11cdc734..221744e2 100644 --- a/07-framework-security/frameworks/astro/INDEX.md +++ b/07-framework-security/frameworks/astro/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:45+00:00` +- 最近渲染时间: `2026-03-17T07:06:37+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/django/INDEX.md b/07-framework-security/frameworks/django/INDEX.md index 96d2effa..6e33f724 100644 --- a/07-framework-security/frameworks/django/INDEX.md +++ b/07-framework-security/frameworks/django/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:46+00:00` +- 最近渲染时间: `2026-03-17T07:06:38+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/echo/INDEX.md b/07-framework-security/frameworks/echo/INDEX.md index 16bd5c57..13b63980 100644 --- a/07-framework-security/frameworks/echo/INDEX.md +++ b/07-framework-security/frameworks/echo/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:46+00:00` +- 最近渲染时间: `2026-03-17T07:06:38+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/esbuild/INDEX.md b/07-framework-security/frameworks/esbuild/INDEX.md index 59fd2c58..b33c0dd9 100644 --- a/07-framework-security/frameworks/esbuild/INDEX.md +++ b/07-framework-security/frameworks/esbuild/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:46+00:00` +- 最近渲染时间: `2026-03-17T07:06:38+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/express/INDEX.md b/07-framework-security/frameworks/express/INDEX.md index 8c5e6684..787a3e97 100644 --- a/07-framework-security/frameworks/express/INDEX.md +++ b/07-framework-security/frameworks/express/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:45+00:00` +- 最近渲染时间: `2026-03-17T07:06:37+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/fastify/INDEX.md b/07-framework-security/frameworks/fastify/INDEX.md index 7ed9630e..447b1861 100644 --- a/07-framework-security/frameworks/fastify/INDEX.md +++ b/07-framework-security/frameworks/fastify/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:45+00:00` +- 最近渲染时间: `2026-03-17T07:06:37+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/flask/INDEX.md b/07-framework-security/frameworks/flask/INDEX.md index e0658a9a..64352714 100644 --- a/07-framework-security/frameworks/flask/INDEX.md +++ b/07-framework-security/frameworks/flask/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:46+00:00` +- 最近渲染时间: `2026-03-17T07:06:38+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/gin/INDEX.md b/07-framework-security/frameworks/gin/INDEX.md index 823d8336..fa0dbe52 100644 --- a/07-framework-security/frameworks/gin/INDEX.md +++ b/07-framework-security/frameworks/gin/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:46+00:00` +- 最近渲染时间: `2026-03-17T07:06:38+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/hapi/INDEX.md b/07-framework-security/frameworks/hapi/INDEX.md index da37824f..ab0d3f58 100644 --- a/07-framework-security/frameworks/hapi/INDEX.md +++ b/07-framework-security/frameworks/hapi/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:45+00:00` +- 最近渲染时间: `2026-03-17T07:06:37+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/koa/INDEX.md b/07-framework-security/frameworks/koa/INDEX.md index 4418c90e..1c2d57af 100644 --- a/07-framework-security/frameworks/koa/INDEX.md +++ b/07-framework-security/frameworks/koa/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:45+00:00` +- 最近渲染时间: `2026-03-17T07:06:37+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/laravel/INDEX.md b/07-framework-security/frameworks/laravel/INDEX.md index 2c9c6d45..f585fb5e 100644 --- a/07-framework-security/frameworks/laravel/INDEX.md +++ b/07-framework-security/frameworks/laravel/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:46+00:00` +- 最近渲染时间: `2026-03-17T07:06:38+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/nestjs/INDEX.md b/07-framework-security/frameworks/nestjs/INDEX.md index c5df2869..38a10436 100644 --- a/07-framework-security/frameworks/nestjs/INDEX.md +++ b/07-framework-security/frameworks/nestjs/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:45+00:00` +- 最近渲染时间: `2026-03-17T07:06:37+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/nextjs/INDEX.md b/07-framework-security/frameworks/nextjs/INDEX.md index 7878e661..53da1ddb 100644 --- a/07-framework-security/frameworks/nextjs/INDEX.md +++ b/07-framework-security/frameworks/nextjs/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `26` -- 最近渲染时间: `2026-03-17T06:35:44+00:00` +- 最近渲染时间: `2026-03-17T07:06:36+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/nodejs/INDEX.md b/07-framework-security/frameworks/nodejs/INDEX.md index 304b0d01..236fcdf0 100644 --- a/07-framework-security/frameworks/nodejs/INDEX.md +++ b/07-framework-security/frameworks/nodejs/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:45+00:00` +- 最近渲染时间: `2026-03-17T07:06:37+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/nuxt/INDEX.md b/07-framework-security/frameworks/nuxt/INDEX.md index dd83b6cc..40c550ad 100644 --- a/07-framework-security/frameworks/nuxt/INDEX.md +++ b/07-framework-security/frameworks/nuxt/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:44+00:00` +- 最近渲染时间: `2026-03-17T07:06:36+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/rails/INDEX.md b/07-framework-security/frameworks/rails/INDEX.md index 2ae3fdaa..bcdc11b2 100644 --- a/07-framework-security/frameworks/rails/INDEX.md +++ b/07-framework-security/frameworks/rails/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:46+00:00` +- 最近渲染时间: `2026-03-17T07:06:38+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/react/INDEX.md b/07-framework-security/frameworks/react/INDEX.md index 69813e88..fa1a99aa 100644 --- a/07-framework-security/frameworks/react/INDEX.md +++ b/07-framework-security/frameworks/react/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:43+00:00` +- 最近渲染时间: `2026-03-17T07:06:35+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/spring-boot/INDEX.md b/07-framework-security/frameworks/spring-boot/INDEX.md index 7493bb99..763cf4ee 100644 --- a/07-framework-security/frameworks/spring-boot/INDEX.md +++ b/07-framework-security/frameworks/spring-boot/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:46+00:00` +- 最近渲染时间: `2026-03-17T07:06:38+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/spring-framework/INDEX.md b/07-framework-security/frameworks/spring-framework/INDEX.md index 65f2c2dc..6fc83470 100644 --- a/07-framework-security/frameworks/spring-framework/INDEX.md +++ b/07-framework-security/frameworks/spring-framework/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:46+00:00` +- 最近渲染时间: `2026-03-17T07:06:38+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/spring-security/INDEX.md b/07-framework-security/frameworks/spring-security/INDEX.md index 4d511423..0c0a47f5 100644 --- a/07-framework-security/frameworks/spring-security/INDEX.md +++ b/07-framework-security/frameworks/spring-security/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:46+00:00` +- 最近渲染时间: `2026-03-17T07:06:38+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/sveltekit/INDEX.md b/07-framework-security/frameworks/sveltekit/INDEX.md index 278e287f..653ed404 100644 --- a/07-framework-security/frameworks/sveltekit/INDEX.md +++ b/07-framework-security/frameworks/sveltekit/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:45+00:00` +- 最近渲染时间: `2026-03-17T07:06:37+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/symfony/INDEX.md b/07-framework-security/frameworks/symfony/INDEX.md index 6d3eb581..8d842858 100644 --- a/07-framework-security/frameworks/symfony/INDEX.md +++ b/07-framework-security/frameworks/symfony/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:46+00:00` +- 最近渲染时间: `2026-03-17T07:06:38+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/undici/INDEX.md b/07-framework-security/frameworks/undici/INDEX.md index a5d9eb7e..81ab019b 100644 --- a/07-framework-security/frameworks/undici/INDEX.md +++ b/07-framework-security/frameworks/undici/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `14` -- 最近渲染时间: `2026-03-17T06:35:46+00:00` +- 最近渲染时间: `2026-03-17T07:06:38+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/vite/INDEX.md b/07-framework-security/frameworks/vite/INDEX.md index 47edc70f..17c15ba5 100644 --- a/07-framework-security/frameworks/vite/INDEX.md +++ b/07-framework-security/frameworks/vite/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `12` -- 最近渲染时间: `2026-03-17T06:35:45+00:00` +- 最近渲染时间: `2026-03-17T07:06:37+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/vue/INDEX.md b/07-framework-security/frameworks/vue/INDEX.md index 9cb71f3e..67123d7b 100644 --- a/07-framework-security/frameworks/vue/INDEX.md +++ b/07-framework-security/frameworks/vue/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:44+00:00` +- 最近渲染时间: `2026-03-17T07:06:36+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/webpack/INDEX.md b/07-framework-security/frameworks/webpack/INDEX.md index 7cab2da1..a55840de 100644 --- a/07-framework-security/frameworks/webpack/INDEX.md +++ b/07-framework-security/frameworks/webpack/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:46+00:00` +- 最近渲染时间: `2026-03-17T07:06:38+00:00` ## 目标约束 diff --git a/07-framework-security/frameworks/werkzeug/INDEX.md b/07-framework-security/frameworks/werkzeug/INDEX.md index dc0a2f3b..1f45badf 100644 --- a/07-framework-security/frameworks/werkzeug/INDEX.md +++ b/07-framework-security/frameworks/werkzeug/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:46+00:00` +- 最近渲染时间: `2026-03-17T07:06:38+00:00` ## 目标约束 diff --git a/07-framework-security/platforms/adminer/INDEX.md b/07-framework-security/platforms/adminer/INDEX.md index d970f271..1f58eaab 100644 --- a/07-framework-security/platforms/adminer/INDEX.md +++ b/07-framework-security/platforms/adminer/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:46+00:00` +- 最近渲染时间: `2026-03-17T07:06:38+00:00` ## 目标约束 diff --git a/07-framework-security/platforms/gitea/INDEX.md b/07-framework-security/platforms/gitea/INDEX.md index 234fd6b6..e95858f9 100644 --- a/07-framework-security/platforms/gitea/INDEX.md +++ b/07-framework-security/platforms/gitea/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `1` - 待人工/缺浏览器证据: `36` -- 最近渲染时间: `2026-03-17T06:35:48+00:00` +- 最近渲染时间: `2026-03-17T07:06:40+00:00` ## 目标约束 diff --git a/07-framework-security/platforms/gitea/cases/gitea-cve-2025-68939.md b/07-framework-security/platforms/gitea/cases/gitea-cve-2025-68939.md index 93c5aa40..aeb41a0a 100644 --- a/07-framework-security/platforms/gitea/cases/gitea-cve-2025-68939.md +++ b/07-framework-security/platforms/gitea/cases/gitea-cve-2025-68939.md @@ -11,7 +11,7 @@ source_confidence: "official" verification_status: "blocked-artifact" verification_mode: "real" artifact_mode: "official-image" -last_run_id: "gitea-gitea--CVE-2025-68939-20260317063330" +last_run_id: "gitea-livecheck-20260316" target_types: - "lab-local" - "lab-public" @@ -42,9 +42,9 @@ primary_source: "https://github.com/advisories/GHSA-263q-5cv3-xq9g" - 实证状态: `blocked-artifact` - 实证方式: `real` - Artifact 模式: `official-image` -- 最近运行: `gitea-gitea--CVE-2025-68939-20260317063330` +- 最近运行: `gitea-livecheck-20260316` - 浏览器证据: `missing` -- Run Bundle: `/Users/x/websafe/06-case-studies/generated-runs/gitea-gitea--CVE-2025-68939-20260317063330` +- Run Bundle: `/Users/x/websafe/06-case-studies/generated-runs/gitea-livecheck-20260316` ## 事件层 diff --git a/07-framework-security/platforms/gitlab-ce/INDEX.md b/07-framework-security/platforms/gitlab-ce/INDEX.md index caeb07e2..e1460e81 100644 --- a/07-framework-security/platforms/gitlab-ce/INDEX.md +++ b/07-framework-security/platforms/gitlab-ce/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:48+00:00` +- 最近渲染时间: `2026-03-17T07:06:40+00:00` ## 目标约束 diff --git a/07-framework-security/platforms/grafana/INDEX.md b/07-framework-security/platforms/grafana/INDEX.md index 5a8f877a..6bd1a324 100644 --- a/07-framework-security/platforms/grafana/INDEX.md +++ b/07-framework-security/platforms/grafana/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:48+00:00` +- 最近渲染时间: `2026-03-17T07:06:40+00:00` ## 目标约束 diff --git a/07-framework-security/platforms/jenkins/INDEX.md b/07-framework-security/platforms/jenkins/INDEX.md index 8b3cc8a4..47b1f634 100644 --- a/07-framework-security/platforms/jenkins/INDEX.md +++ b/07-framework-security/platforms/jenkins/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:48+00:00` +- 最近渲染时间: `2026-03-17T07:06:40+00:00` ## 目标约束 diff --git a/07-framework-security/platforms/kibana/INDEX.md b/07-framework-security/platforms/kibana/INDEX.md index 90a6c5de..0f52bbf2 100644 --- a/07-framework-security/platforms/kibana/INDEX.md +++ b/07-framework-security/platforms/kibana/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:48+00:00` +- 最近渲染时间: `2026-03-17T07:06:40+00:00` ## 目标约束 diff --git a/07-framework-security/platforms/mattermost/INDEX.md b/07-framework-security/platforms/mattermost/INDEX.md index a4907032..8fc49ecc 100644 --- a/07-framework-security/platforms/mattermost/INDEX.md +++ b/07-framework-security/platforms/mattermost/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:48+00:00` +- 最近渲染时间: `2026-03-17T07:06:40+00:00` ## 目标约束 diff --git a/07-framework-security/platforms/phpmyadmin/INDEX.md b/07-framework-security/platforms/phpmyadmin/INDEX.md index efb2a3b8..1d8bce0d 100644 --- a/07-framework-security/platforms/phpmyadmin/INDEX.md +++ b/07-framework-security/platforms/phpmyadmin/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:46+00:00` +- 最近渲染时间: `2026-03-17T07:06:38+00:00` ## 目标约束 diff --git a/07-framework-security/platforms/redmine/INDEX.md b/07-framework-security/platforms/redmine/INDEX.md index 4dc41907..5cb223e5 100644 --- a/07-framework-security/platforms/redmine/INDEX.md +++ b/07-framework-security/platforms/redmine/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:48+00:00` +- 最近渲染时间: `2026-03-17T07:06:40+00:00` ## 目标约束 diff --git a/07-framework-security/servers/apache-httpd/INDEX.md b/07-framework-security/servers/apache-httpd/INDEX.md index 77fa819c..d1e61bc3 100644 --- a/07-framework-security/servers/apache-httpd/INDEX.md +++ b/07-framework-security/servers/apache-httpd/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:46+00:00` +- 最近渲染时间: `2026-03-17T07:06:38+00:00` ## 目标约束 diff --git a/07-framework-security/servers/apache-tomcat/INDEX.md b/07-framework-security/servers/apache-tomcat/INDEX.md index 77a81901..8875f4b9 100644 --- a/07-framework-security/servers/apache-tomcat/INDEX.md +++ b/07-framework-security/servers/apache-tomcat/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:46+00:00` +- 最近渲染时间: `2026-03-17T07:06:38+00:00` ## 目标约束 diff --git a/07-framework-security/servers/caddy/INDEX.md b/07-framework-security/servers/caddy/INDEX.md index b53ab073..a77400d4 100644 --- a/07-framework-security/servers/caddy/INDEX.md +++ b/07-framework-security/servers/caddy/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:46+00:00` +- 最近渲染时间: `2026-03-17T07:06:38+00:00` ## 目标约束 diff --git a/07-framework-security/servers/haproxy/INDEX.md b/07-framework-security/servers/haproxy/INDEX.md index 620711fc..9a0c8c5b 100644 --- a/07-framework-security/servers/haproxy/INDEX.md +++ b/07-framework-security/servers/haproxy/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:46+00:00` +- 最近渲染时间: `2026-03-17T07:06:38+00:00` ## 目标约束 diff --git a/07-framework-security/servers/nginx/INDEX.md b/07-framework-security/servers/nginx/INDEX.md index 57cce67a..0524ef2c 100644 --- a/07-framework-security/servers/nginx/INDEX.md +++ b/07-framework-security/servers/nginx/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:46+00:00` +- 最近渲染时间: `2026-03-17T07:06:38+00:00` ## 目标约束 diff --git a/07-framework-security/servers/traefik/INDEX.md b/07-framework-security/servers/traefik/INDEX.md index 656b43f8..3d8cf6ef 100644 --- a/07-framework-security/servers/traefik/INDEX.md +++ b/07-framework-security/servers/traefik/INDEX.md @@ -12,7 +12,7 @@ - 已实证(synthetic): `0` - 阻塞数: `0` - 待人工/缺浏览器证据: `0` -- 最近渲染时间: `2026-03-17T06:35:46+00:00` +- 最近渲染时间: `2026-03-17T07:06:38+00:00` ## 目标约束 diff --git a/08-threat-intel/generated/dashboard/index.html b/08-threat-intel/generated/dashboard/index.html index 146b0543..d6989a0b 100644 --- a/08-threat-intel/generated/dashboard/index.html +++ b/08-threat-intel/generated/dashboard/index.html @@ -8,35 +8,86 @@ h1, h2 { margin-bottom: .5rem; } .cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 1rem; margin: 1rem 0 2rem; } .card { background: white; border: 1px solid #cbd5e1; border-radius: 14px; padding: 1rem; box-shadow: 0 4px 18px rgba(15,23,42,.06); } - table { width: 100%%; border-collapse: collapse; background: white; border-radius: 12px; overflow: hidden; } + .filters { display:flex; flex-wrap:wrap; gap:.75rem; margin: 1rem 0; } + input, select { padding: .6rem .75rem; border: 1px solid #cbd5e1; border-radius: 10px; background: white; } + table { width: 100%%; border-collapse: collapse; background: white; border-radius: 12px; overflow: hidden; margin-bottom: 2rem; } th, td { padding: .75rem; border-bottom: 1px solid #e2e8f0; text-align: left; font-size: .92rem; } code { background: #e2e8f0; padding: .1rem .35rem; border-radius: 6px; } + .muted { color: #475569; }

websafe Local Lab Dashboard

LAB ONLY | AUTHORIZED TARGETS ONLY | 本地静态看板

-

Recent Runs

+

System Coverage

- + + +
RunAdvisoryStatusModeFinishedReport
SystemTotalVerified RealVerified SyntheticBlockedManualBrowserLatest
+

Recent Runs

+
+ + + + +
+ +
RunSystemAdvisoryStatusModeProfileFinishedArtifacts
diff --git a/08-threat-intel/generated/dashboard/runs.json b/08-threat-intel/generated/dashboard/runs.json index aa2d5502..3f25c79a 100644 --- a/08-threat-intel/generated/dashboard/runs.json +++ b/08-threat-intel/generated/dashboard/runs.json @@ -1,4 +1,108 @@ [ + { + "run_id": "gitea-livecheck-20260316", + "system_id": "gitea", + "advisory_id": "gitea--CVE-2025-68939", + "repro_profile_id": "file-upload-generic", + "verification_status": "blocked-artifact", + "verification_mode": "real", + "artifact_mode": "official-image", + "target_env": "local-docker", + "compose_services": [ + "app" + ], + "baseline_refs": [], + "attack_steps": [], + "browser_refs": [], + "browser_evidence": { + "required": true, + "present": false, + "refs": [], + "baseline_refs": [], + "proof_refs": [], + "baseline_title": null, + "proof_title": null + }, + "container_log_refs": [], + "request_log_refs": [], + "compose_refs": [ + "/Users/x/websafe/06-case-studies/generated-runs/gitea-livecheck-20260316/compose/compose.yaml" + ], + "timeline": [ + { + "at": "2026-03-17T07:02:55+00:00", + "step": "select-advisory", + "status": "completed", + "detail": "gitea--CVE-2025-68939" + }, + { + "at": "2026-03-17T07:02:55+00:00", + "step": "resolve-repro-profile", + "status": "completed", + "detail": "file-upload-generic" + }, + { + "at": "2026-03-17T07:02:56+00:00", + "step": "provision-compose-environment", + "status": "blocked-artifact", + "detail": "unable to get image 'gitea/gitea:1.22.6': Cannot connect to the Docker daemon at unix:///Users/x/.docker/run/docker.sock. Is the docker daemon running?" + }, + { + "at": "2026-03-17T07:02:56+00:00", + "step": "baseline-snapshot", + "status": "skipped", + "detail": "no baseline urls or provisioning blocked" + }, + { + "at": "2026-03-17T07:02:56+00:00", + "step": "browser-replay-before-attack", + "status": "skipped", + "detail": "baseline browser capture unavailable" + }, + { + "at": "2026-03-17T07:02:56+00:00", + "step": "controlled-attack-chain", + "status": "skipped", + "detail": "provisioning blocked" + }, + { + "at": "2026-03-17T07:02:56+00:00", + "step": "browser-replay-after-attack", + "status": "skipped", + "detail": "proof browser capture unavailable" + }, + { + "at": "2026-03-17T07:02:56+00:00", + "step": "collect-logs-and-evidence", + "status": "skipped", + "detail": "container_logs=0" + }, + { + "at": "2026-03-17T07:02:56+00:00", + "step": "update-registry-and-reports", + "status": "completed", + "detail": "gitea-livecheck-20260316" + } + ], + "started_at": "2026-03-17T07:02:55+00:00", + "finished_at": "2026-03-17T07:02:56+00:00", + "blocked_reason": "unable to get image 'gitea/gitea:1.22.6': Cannot connect to the Docker daemon at unix:///Users/x/.docker/run/docker.sock. Is the docker daemon running?", + "report_refs": { + "bundle_dir": "/Users/x/websafe/06-case-studies/generated-runs/gitea-livecheck-20260316", + "report_md": "/Users/x/websafe/06-case-studies/generated-runs/gitea-livecheck-20260316/report.md", + "report_html": "/Users/x/websafe/06-case-studies/generated-runs/gitea-livecheck-20260316/report.html", + "timeline": "/Users/x/websafe/06-case-studies/generated-runs/gitea-livecheck-20260316/timeline.mmd" + }, + "dashboard_refs": { + "report_html": "./runs/gitea-livecheck-20260316/report.html", + "report_md": "./runs/gitea-livecheck-20260316/report.md", + "timeline": "./runs/gitea-livecheck-20260316/timeline.mmd", + "bundle": "./runs/gitea-livecheck-20260316/run.json" + }, + "browser_links": [], + "container_links": [], + "request_links": [] + }, { "run_id": "gitea-gitea--CVE-2025-68939-20260317063330", "system_id": "gitea", @@ -28,7 +132,19 @@ "report_md": "/Users/x/websafe/06-case-studies/generated-runs/gitea-gitea--CVE-2025-68939-20260317063330/report.md", "report_html": "/Users/x/websafe/06-case-studies/generated-runs/gitea-gitea--CVE-2025-68939-20260317063330/report.html", "timeline": "/Users/x/websafe/06-case-studies/generated-runs/gitea-gitea--CVE-2025-68939-20260317063330/timeline.mmd" - } + }, + "dashboard_refs": { + "report_html": "./runs/gitea-gitea--CVE-2025-68939-20260317063330/report.html", + "report_md": "./runs/gitea-gitea--CVE-2025-68939-20260317063330/report.md", + "timeline": "./runs/gitea-gitea--CVE-2025-68939-20260317063330/timeline.mmd", + "bundle": "./runs/gitea-gitea--CVE-2025-68939-20260317063330/run.json" + }, + "browser_links": [], + "container_links": [], + "request_links": [ + "./runs/gitea-gitea--CVE-2025-68939-20260317063330/logs/attack.json", + "./runs/gitea-gitea--CVE-2025-68939-20260317063330/logs/baseline.json" + ] }, { "run_id": "nextjs-nextjs--CVE-2025-29927-20260317063047", @@ -68,6 +184,18 @@ "report_md": "/Users/x/websafe/06-case-studies/generated-runs/nextjs-nextjs--CVE-2025-29927-20260317063047/report.md", "report_html": "/Users/x/websafe/06-case-studies/generated-runs/nextjs-nextjs--CVE-2025-29927-20260317063047/report.html", "timeline": "/Users/x/websafe/06-case-studies/generated-runs/nextjs-nextjs--CVE-2025-29927-20260317063047/timeline.mmd" - } + }, + "dashboard_refs": { + "report_html": "./runs/nextjs-nextjs--CVE-2025-29927-20260317063047/report.html", + "report_md": "./runs/nextjs-nextjs--CVE-2025-29927-20260317063047/report.md", + "timeline": "./runs/nextjs-nextjs--CVE-2025-29927-20260317063047/timeline.mmd", + "bundle": "./runs/nextjs-nextjs--CVE-2025-29927-20260317063047/run.json" + }, + "browser_links": [], + "container_links": [], + "request_links": [ + "./runs/nextjs-nextjs--CVE-2025-29927-20260317063047/logs/attack.json", + "./runs/nextjs-nextjs--CVE-2025-29927-20260317063047/logs/baseline.json" + ] } ] diff --git a/08-threat-intel/generated/dashboard/runs/gitea-gitea--CVE-2025-68939-20260317063330 b/08-threat-intel/generated/dashboard/runs/gitea-gitea--CVE-2025-68939-20260317063330 new file mode 120000 index 00000000..d9698843 --- /dev/null +++ b/08-threat-intel/generated/dashboard/runs/gitea-gitea--CVE-2025-68939-20260317063330 @@ -0,0 +1 @@ +../../../../06-case-studies/generated-runs/gitea-gitea--CVE-2025-68939-20260317063330 \ No newline at end of file diff --git a/08-threat-intel/generated/dashboard/runs/gitea-livecheck-20260316 b/08-threat-intel/generated/dashboard/runs/gitea-livecheck-20260316 new file mode 120000 index 00000000..5aefbc6f --- /dev/null +++ b/08-threat-intel/generated/dashboard/runs/gitea-livecheck-20260316 @@ -0,0 +1 @@ +../../../../06-case-studies/generated-runs/gitea-livecheck-20260316 \ No newline at end of file diff --git a/08-threat-intel/generated/dashboard/runs/nextjs-nextjs--CVE-2025-29927-20260317063047 b/08-threat-intel/generated/dashboard/runs/nextjs-nextjs--CVE-2025-29927-20260317063047 new file mode 120000 index 00000000..623f6913 --- /dev/null +++ b/08-threat-intel/generated/dashboard/runs/nextjs-nextjs--CVE-2025-29927-20260317063047 @@ -0,0 +1 @@ +../../../../06-case-studies/generated-runs/nextjs-nextjs--CVE-2025-29927-20260317063047 \ No newline at end of file diff --git a/08-threat-intel/generated/dashboard/summary.json b/08-threat-intel/generated/dashboard/summary.json index 670d706c..8bba20dd 100644 --- a/08-threat-intel/generated/dashboard/summary.json +++ b/08-threat-intel/generated/dashboard/summary.json @@ -1,80 +1,79 @@ { - "run_count": 2, + "generated_at": "2026-03-17T07:06:50+00:00", + "advisory_count": 89, + "run_count": 3, "statuses": { - "blocked-artifact": 1, + "blocked-artifact": 2, "triage-manual": 1 }, - "recent_runs": [ + "recent_failures": [ + { + "run_id": "gitea-livecheck-20260316", + "advisory_id": "gitea--CVE-2025-68939", + "status": "blocked-artifact", + "blocked_reason": "unable to get image 'gitea/gitea:1.22.6': Cannot connect to the Docker daemon at unix:///Users/x/.docker/run/docker.sock. Is the docker daemon running?" + }, { "run_id": "gitea-gitea--CVE-2025-68939-20260317063330", - "system_id": "gitea", "advisory_id": "gitea--CVE-2025-68939", - "repro_profile_id": "file-upload-generic", - "verification_status": "blocked-artifact", - "verification_mode": "real", - "artifact_mode": "official-image", - "target_env": "local-docker", - "compose_services": [ - "app" - ], - "baseline_refs": [], - "attack_steps": [], - "browser_refs": [], - "container_log_refs": [], - "request_log_refs": [ - "/Users/x/websafe/06-case-studies/generated-runs/gitea-gitea--CVE-2025-68939-20260317063330/logs/attack.json", - "/Users/x/websafe/06-case-studies/generated-runs/gitea-gitea--CVE-2025-68939-20260317063330/logs/baseline.json" - ], - "timeline": [], - "started_at": "2026-03-17T06:33:30+00:00", - "finished_at": "2026-03-17T06:33:30+00:00", - "blocked_reason": "unable to get image 'gitea/gitea:1.22.6': Cannot connect to the Docker daemon at unix:///Users/x/.docker/run/docker.sock. Is the docker daemon running?", - "report_refs": { - "bundle_dir": "/Users/x/websafe/06-case-studies/generated-runs/gitea-gitea--CVE-2025-68939-20260317063330", - "report_md": "/Users/x/websafe/06-case-studies/generated-runs/gitea-gitea--CVE-2025-68939-20260317063330/report.md", - "report_html": "/Users/x/websafe/06-case-studies/generated-runs/gitea-gitea--CVE-2025-68939-20260317063330/report.html", - "timeline": "/Users/x/websafe/06-case-studies/generated-runs/gitea-gitea--CVE-2025-68939-20260317063330/timeline.mmd" - } + "status": "blocked-artifact", + "blocked_reason": "unable to get image 'gitea/gitea:1.22.6': Cannot connect to the Docker daemon at unix:///Users/x/.docker/run/docker.sock. Is the docker daemon running?" }, { "run_id": "nextjs-nextjs--CVE-2025-29927-20260317063047", - "system_id": "nextjs", "advisory_id": "nextjs--CVE-2025-29927", - "repro_profile_id": "authz-bypass-generic", - "verification_status": "triage-manual", - "verification_mode": "real", - "artifact_mode": "official-source", - "target_env": "local-docker", - "compose_services": [ - "app" - ], - "baseline_refs": [ - "/Users/x/websafe/06-case-studies/generated-runs/nextjs-nextjs--CVE-2025-29927-20260317063047/logs/baseline.json" - ], - "attack_steps": [ - { - "kind": "note", - "tool": null, - "args": [], - "status": "planned" - } - ], - "browser_refs": [], - "container_log_refs": [], - "request_log_refs": [ - "/Users/x/websafe/06-case-studies/generated-runs/nextjs-nextjs--CVE-2025-29927-20260317063047/logs/attack.json", - "/Users/x/websafe/06-case-studies/generated-runs/nextjs-nextjs--CVE-2025-29927-20260317063047/logs/baseline.json" - ], - "timeline": [], - "started_at": "2026-03-17T06:30:47+00:00", - "finished_at": "2026-03-17T06:30:47+00:00", - "blocked_reason": "dry-run only", - "report_refs": { - "bundle_dir": "/Users/x/websafe/06-case-studies/generated-runs/nextjs-nextjs--CVE-2025-29927-20260317063047", - "report_md": "/Users/x/websafe/06-case-studies/generated-runs/nextjs-nextjs--CVE-2025-29927-20260317063047/report.md", - "report_html": "/Users/x/websafe/06-case-studies/generated-runs/nextjs-nextjs--CVE-2025-29927-20260317063047/report.html", - "timeline": "/Users/x/websafe/06-case-studies/generated-runs/nextjs-nextjs--CVE-2025-29927-20260317063047/timeline.mmd" - } + "status": "triage-manual", + "blocked_reason": "dry-run only" + } + ], + "systems": [ + { + "system_id": "gitea", + "display_name": "Gitea", + "total": 37, + "verified_real": 0, + "verified_synthetic": 0, + "blocked": 1, + "manual": 36, + "browser_required": 0, + "browser_present": 0, + "latest_update": "2026-03-03T04:57:57.697708Z" + }, + { + "system_id": "nextjs", + "display_name": "Next.js", + "total": 26, + "verified_real": 0, + "verified_synthetic": 0, + "blocked": 0, + "manual": 26, + "browser_required": 0, + "browser_present": 0, + "latest_update": "2026-03-13T22:14:13.665535Z" + }, + { + "system_id": "undici", + "display_name": "Undici", + "total": 14, + "verified_real": 0, + "verified_synthetic": 0, + "blocked": 0, + "manual": 14, + "browser_required": 0, + "browser_present": 0, + "latest_update": "2026-03-14T09:19:54.772219Z" + }, + { + "system_id": "vite", + "display_name": "Vite", + "total": 12, + "verified_real": 0, + "verified_synthetic": 0, + "blocked": 0, + "manual": 12, + "browser_required": 0, + "browser_present": 0, + "latest_update": "2026-02-04T04:37:24.129476Z" } ] } diff --git a/08-threat-intel/generated/dashboard/systems.json b/08-threat-intel/generated/dashboard/systems.json new file mode 100644 index 00000000..e43f62ca --- /dev/null +++ b/08-threat-intel/generated/dashboard/systems.json @@ -0,0 +1,50 @@ +[ + { + "system_id": "gitea", + "display_name": "Gitea", + "total": 37, + "verified_real": 0, + "verified_synthetic": 0, + "blocked": 1, + "manual": 36, + "browser_required": 0, + "browser_present": 0, + "latest_update": "2026-03-03T04:57:57.697708Z" + }, + { + "system_id": "nextjs", + "display_name": "Next.js", + "total": 26, + "verified_real": 0, + "verified_synthetic": 0, + "blocked": 0, + "manual": 26, + "browser_required": 0, + "browser_present": 0, + "latest_update": "2026-03-13T22:14:13.665535Z" + }, + { + "system_id": "undici", + "display_name": "Undici", + "total": 14, + "verified_real": 0, + "verified_synthetic": 0, + "blocked": 0, + "manual": 14, + "browser_required": 0, + "browser_present": 0, + "latest_update": "2026-03-14T09:19:54.772219Z" + }, + { + "system_id": "vite", + "display_name": "Vite", + "total": 12, + "verified_real": 0, + "verified_synthetic": 0, + "blocked": 0, + "manual": 12, + "browser_required": 0, + "browser_present": 0, + "latest_update": "2026-02-04T04:37:24.129476Z" + } +] diff --git a/08-threat-intel/generated/latest-ingest.md b/08-threat-intel/generated/latest-ingest.md index e898e863..5a262a03 100644 --- a/08-threat-intel/generated/latest-ingest.md +++ b/08-threat-intel/generated/latest-ingest.md @@ -1,6 +1,6 @@ # 最新同步摘要 -- 渲染时间: `2026-03-17T06:35:58+00:00` +- 渲染时间: `2026-03-17T07:06:50+00:00` - 系统数量: `62` - Advisory 数量: `89` - 重点 Markdown 数量: `89` diff --git a/08-threat-intel/generated/run-summary.json b/08-threat-intel/generated/run-summary.json index c20a9ff0..25356e3f 100644 --- a/08-threat-intel/generated/run-summary.json +++ b/08-threat-intel/generated/run-summary.json @@ -1,5 +1,5 @@ { - "generated_at": "2026-03-17T06:35:58+00:00", + "generated_at": "2026-03-17T07:06:50+00:00", "system_count": 62, "advisory_count": 89, "markdown_count": 89, diff --git a/08-threat-intel/registry/advisories/gitea--CVE-2025-68939.json b/08-threat-intel/registry/advisories/gitea--CVE-2025-68939.json index 1f0e4d94..164d20b9 100644 --- a/08-threat-intel/registry/advisories/gitea--CVE-2025-68939.json +++ b/08-threat-intel/registry/advisories/gitea--CVE-2025-68939.json @@ -51,9 +51,9 @@ "triage_reasons": [], "verification_status": "blocked-artifact", "verification_mode": "real", - "last_verified_at": "2026-03-17T06:33:30+00:00", - "last_run_id": "gitea-gitea--CVE-2025-68939-20260317063330", - "evidence_bundle": "/Users/x/websafe/06-case-studies/generated-runs/gitea-gitea--CVE-2025-68939-20260317063330", + "last_verified_at": "2026-03-17T07:02:56+00:00", + "last_run_id": "gitea-livecheck-20260316", + "evidence_bundle": "/Users/x/websafe/06-case-studies/generated-runs/gitea-livecheck-20260316", "browser_evidence": { "required": false, "present": false, diff --git a/08-threat-intel/registry/runs/gitea-livecheck-20260316.json b/08-threat-intel/registry/runs/gitea-livecheck-20260316.json new file mode 100644 index 00000000..ab3ec4ef --- /dev/null +++ b/08-threat-intel/registry/runs/gitea-livecheck-20260316.json @@ -0,0 +1,95 @@ +{ + "run_id": "gitea-livecheck-20260316", + "system_id": "gitea", + "advisory_id": "gitea--CVE-2025-68939", + "repro_profile_id": "file-upload-generic", + "verification_status": "blocked-artifact", + "verification_mode": "real", + "artifact_mode": "official-image", + "target_env": "local-docker", + "compose_services": [ + "app" + ], + "baseline_refs": [], + "attack_steps": [], + "browser_refs": [], + "browser_evidence": { + "required": true, + "present": false, + "refs": [], + "baseline_refs": [], + "proof_refs": [], + "baseline_title": null, + "proof_title": null + }, + "container_log_refs": [], + "request_log_refs": [], + "compose_refs": [ + "/Users/x/websafe/06-case-studies/generated-runs/gitea-livecheck-20260316/compose/compose.yaml" + ], + "timeline": [ + { + "at": "2026-03-17T07:02:55+00:00", + "step": "select-advisory", + "status": "completed", + "detail": "gitea--CVE-2025-68939" + }, + { + "at": "2026-03-17T07:02:55+00:00", + "step": "resolve-repro-profile", + "status": "completed", + "detail": "file-upload-generic" + }, + { + "at": "2026-03-17T07:02:56+00:00", + "step": "provision-compose-environment", + "status": "blocked-artifact", + "detail": "unable to get image 'gitea/gitea:1.22.6': Cannot connect to the Docker daemon at unix:///Users/x/.docker/run/docker.sock. Is the docker daemon running?" + }, + { + "at": "2026-03-17T07:02:56+00:00", + "step": "baseline-snapshot", + "status": "skipped", + "detail": "no baseline urls or provisioning blocked" + }, + { + "at": "2026-03-17T07:02:56+00:00", + "step": "browser-replay-before-attack", + "status": "skipped", + "detail": "baseline browser capture unavailable" + }, + { + "at": "2026-03-17T07:02:56+00:00", + "step": "controlled-attack-chain", + "status": "skipped", + "detail": "provisioning blocked" + }, + { + "at": "2026-03-17T07:02:56+00:00", + "step": "browser-replay-after-attack", + "status": "skipped", + "detail": "proof browser capture unavailable" + }, + { + "at": "2026-03-17T07:02:56+00:00", + "step": "collect-logs-and-evidence", + "status": "skipped", + "detail": "container_logs=0" + }, + { + "at": "2026-03-17T07:02:56+00:00", + "step": "update-registry-and-reports", + "status": "completed", + "detail": "gitea-livecheck-20260316" + } + ], + "started_at": "2026-03-17T07:02:55+00:00", + "finished_at": "2026-03-17T07:02:56+00:00", + "blocked_reason": "unable to get image 'gitea/gitea:1.22.6': Cannot connect to the Docker daemon at unix:///Users/x/.docker/run/docker.sock. Is the docker daemon running?", + "report_refs": { + "bundle_dir": "/Users/x/websafe/06-case-studies/generated-runs/gitea-livecheck-20260316", + "report_md": "/Users/x/websafe/06-case-studies/generated-runs/gitea-livecheck-20260316/report.md", + "report_html": "/Users/x/websafe/06-case-studies/generated-runs/gitea-livecheck-20260316/report.html", + "timeline": "/Users/x/websafe/06-case-studies/generated-runs/gitea-livecheck-20260316/timeline.mmd" + } +} diff --git a/scripts/lab/render.py b/scripts/lab/render.py index d388e56b..3d404d11 100644 --- a/scripts/lab/render.py +++ b/scripts/lab/render.py @@ -212,15 +212,16 @@ def render_dashboard() -> Dict[str, str]: if not bundle_dir.exists(): continue symlink_path = runs_dir / item["run_id"] + relative_target = os.path.relpath(bundle_dir, symlink_path.parent) try: if symlink_path.is_symlink() or symlink_path.exists(): - if symlink_path.is_symlink() and symlink_path.resolve() == bundle_dir.resolve(): + if symlink_path.is_symlink() and os.readlink(symlink_path) == relative_target: pass else: symlink_path.unlink() - os.symlink(bundle_dir, symlink_path, target_is_directory=True) + os.symlink(relative_target, symlink_path, target_is_directory=True) else: - os.symlink(bundle_dir, symlink_path, target_is_directory=True) + os.symlink(relative_target, symlink_path, target_is_directory=True) except OSError: continue