docs: 2026-09-11 安全事件复盘 + 新建服务器暴露面清单 + M3.5 报告 03/04/05 入档
CI / docs-build (push) Successful in 1m59s
CI / docs-build (push) Successful in 1m59s
安全事件(已闭环,服务恢复): - 根因链:Gitea 3000 对公网开放 → 外部调用 /api/internal/manager/add-logger 注入 gitconfig 的 uploadpack.packObjectsHook → 指向不存在的脚本 → upload-pack 发 NAK 后无法产出 pack → 全仓 HTTPS clone 失败(CI 全挂) - 攻击未达成代码执行(hook 目标脚本不存在);三仓 ref 与本地逐一核对未被篡改; 无系统层入侵(无陌生 key/crontab/挖矿进程/陌生登录) - 新建常设「服务器暴露面清单」:补上服务器侧「决策变了环境没跟上」的核对机制 (Nacos 在 ADR-002 移除后仍暴露公网近两个月) - CI Runner 手册排障表增三条:CI 秒失败先在本机复现 checkout、跨仓比 CI 须核对时间戳、clone 坏而 push 正常时查 packObjectsHook 注入 M3.5 交付报告:03 后端资料与头像(api 334→379)、04 契约冻结 v1.4.0 (31→32 路径、矩阵 173→181 格、11 格红转绿)、05 资料页与头像 UI(flutter 526→597) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -75,6 +75,9 @@ docker restart act_runner
|
||||
| 拉镜像 `dial tcp ...443: i/o timeout` | 服务器直连 Docker Hub 不通。配镜像加速后 `sudo systemctl restart docker`:腾讯云机器优先内网源 `https://mirror.ccs.tencentyun.com`,公共源如 `https://docker.1ms.run`(可用性随时间变化,失效就换)。写入 `/etc/docker/daemon.json` 的 `registry-mirrors` 数组 |
|
||||
| job 卡在 `actions/checkout` 或 `setup-java` 拉不下来 | runner 访问不了 github.com(与上一条通常同时出现)。两种解法:a) `app.ini` 的 `[actions]` 加 `DEFAULT_ACTIONS_URL = https://gitea.com`(用 gitea.com 上的 Action 镜像仓)后重启 Gitea;b) 把工作流的 setup-java 步骤删掉,改用自带 JDK17 的 job 镜像(ci.yml 头部注释已写明) |
|
||||
| Testcontainers 报 `Could not find a valid Docker environment` | 第 3 步的 container.options 没生效,job 容器内没有 docker.sock |
|
||||
| **CI 秒失败、`steps` 为空** | **第一动作:在本机复现 CI 的第一个 step**(通常是 `git clone --depth 1 https://git.patbond.cn/<owner>/<repo>.git`)。本机同样失败 ⇒ 问题在 Gitea/网络侧,与 runner 无关;本机成功 ⇒ 再查 runner。2026-09-11 的事件中,先查 runner 走了两次弯路,本机复现一步到位(见[事件复盘](iterations/iteration-3.5/07-security-incident-20260911.md)) |
|
||||
| 跨仓比较 CI 状态得出「runner 还活着」 | **必须核对状态的时间戳**:某仓「最新提交 success」可能是前一天的旧记录。用 `curl .../commits/<sha>/status` 看 `created_at` |
|
||||
| `git clone` 报 `bad pack header` / `early EOF` 而 push 正常 | 二者走不同方向:push 是 `receive-pack`,clone 是 `upload-pack`。检查 Gitea 的 gitconfig 是否被注入 `uploadpack.packObjectsHook`(`sudo grep -rn packObjectsHook /var/lib/gitea/*/. gitconfig`),并核对[服务器暴露面清单](server-exposure.md) |
|
||||
| runner 显示 offline | `docker logs act_runner` 看注册错误;令牌只能用一次,重新注册需删 `/data/.runner`;重试 `docker run` 前先 `docker rm -f act_runner` 清残留容器 |
|
||||
| Maven 每次全量下载依赖很慢 | 在 config.yaml 的 container.options 追加 `-v act_m2:/root/.m2` 做持久缓存 |
|
||||
|
||||
|
||||
Reference in New Issue
Block a user