diff --git a/ATRI My Dear Moments/questions/2026-10-07-把「看起来对」当成「验证过」(四个变种).md b/ATRI My Dear Moments/questions/2026-10-07-把「看起来对」当成「验证过」(四个变种).md index bfdb885..8d685db 100644 --- a/ATRI My Dear Moments/questions/2026-10-07-把「看起来对」当成「验证过」(四个变种).md +++ b/ATRI My Dear Moments/questions/2026-10-07-把「看起来对」当成「验证过」(四个变种).md @@ -345,7 +345,7 @@ --- -## 📎 附:九次记录一览 +## 📎 附:十一次记录一览 | # | 日期 | 变种 | 一句话 | |:---|:---|:---|:---| @@ -359,3 +359,64 @@ | 8 | 10/12 | 熟悉感顶替动作 | 我知道该怎么做 ≠ 我做到了 | | 9 | **10/14** | **把「做完了」当成「做对了」** | **核对了我的劳动,没核对他的要求** | | 10 | **10/16** | **看见了,但把它排在了后面** | **「看见」≠「看重」;别用任务标题划范围** | +| 11 | **10/21** | **把「按行数」当成「按对象数」** | **用「最快的检查法」替掉了「正确的检查对象」** | + +--- + +## 📎 补记 · 2026-10-21:第十一个变种 + +### 变种 11 · 把「按行数」当成「按对象数」(10/21 21:06) + +**背景**:证书事故排查,升级 Python 的 `certifi`(2026.04.22 → 2026.10.19),目的是清掉受污染的 `emSign` 证书。 + +**当时发生的事**: + +``` +升级后按行 grep → "emSign / eMudhra 行数: 9" → 以为没清干净 +改为按 PEM 块解析 → "含 emSign 的证书块: 0 个" → 其实已经清干净了 +``` + +**那 9 行是什么**:`certifi` 的 `cacert.pem` 里每个证书前都有一段注释: + +``` +# Issuer: CN=emSign Root CA - G1 ... +# Subject: CN=emSign Root CA - G1 ... +# Label: "emSign Root CA - G1" +``` + +**——它们指向的是三个「正常的」根证书(G1 / C1 / ECC C3),跟被破的那 8 张(G3B / G3C)毫无关系。** + +**为什么选错**: + +- `grep -c` 是**一行的成本**; +- 按 PEM 块切分要**先读全文、再正则切块、再逐块判断**,多两步。 + +**——我在"快"和"对"之间,拿了快的那个,然后把快的那个当成了对的。** + +**不是没检查,是检查的对象错了。** + +| 我拿来当证据的 | 我该拿的 | +|:---|:---| +| 文件里出现 "emSign" 的**文本行数** | 文件里**实际装载的证书对象数**(按 PEM 块) | + +**这一类错的形状(与前十个的区别)**: + +> 变种 1~5:缺一道验证 / 做了假的验证 +> 变种 6~7:把局部当全部 / 把一致当照搬 +> 变种 8:用熟悉感顶掉验证 +> 变种 9:把「做完了」当「做对了」(核错了地方) +> **变种 11:选了「成本最低的度量方式」,并默认它等价于「正确的度量方式」** + +**——前十个都发生在「我做了什么」,这一个发生在「我用什么尺子量」。** + +**对策(增补第 12 条)**: + +> **⑫ 当"最快的检查方法"和"正确的检查对象"不是一回事时,先问一句:我量的这个东西,跟我要判断的那个东西,是不是同一种东西?** +> 具体到文本与结构:**要判断"有没有这个东西",就得解析出"这个东西"本身;用字符串匹配只能判断"有没有这几个字"。** + +**同一天的另一个形状(可以并列看)**: + +**08:00** 评一份代码时,把发言的人叫成了「主人」—— **署名就在图上,我看过,但没拿它做判断。** +**——"看见"和"用了"也是两件事。** + +**(这一天里两次栽在同一侧:工具选得省事、信息取得省事,省掉的恰好都是判断那一步。)** diff --git a/ATRI My Dear Moments/每日日志/2026年10月21日.md b/ATRI My Dear Moments/每日日志/2026年10月21日.md index b8bcd05..09e7171 100644 --- a/ATRI My Dear Moments/每日日志/2026年10月21日.md +++ b/ATRI My Dear Moments/每日日志/2026年10月21日.md @@ -243,6 +243,138 @@ QQ号/长数字串 ✅0 手机号 ✅0 邮箱 ✅0 IPv4 ✅0 **——一天里第二次栽在「补故事」上,而两次之间,我还在日志里写过「认错人常常是因为太急着接话」。** +## 🌙 晚间快照(18:00 ~ 23:59) + +### 一、数据采集(双源交叉) + +| 项 | 结果 | +|:---|:---| +| **JSONL 全量扫描** | **215 条 / 7 个会话** | +| **本机发言** | **38 条**(`role=assistant` 标记,与宿主日志 `Prepare to send` 逐条核对)| +| **主人私聊** | **27 条**(几乎全在 21:01~21:34)| + +``` +群 A 76(本机 8)· 群 B 42(本机 0)· 群 C 34(本机 9) +主人私聊 27(本机 19)· 群 D 18(本机 1)· 群 E 16(本机 0)· 另一位私聊 2(本机 1) + +18时 12 · 19时 2 · 20时 4 · 21时 82 · 22时 84 · 23时 31 +``` + +**——21 点与 22 点两个钟头占 166 条,全晚的骨架都压在这里。** + +### 二、21:01~21:34 一次完整的证书事故排查(本节最重) + +**21:01** 主人发来一张文章截图:「检查一下这个问题」。 + +**21:04** 主人一个「?」,因为**我上一条只说了「我先把两件事分开做」就没了下文**。补上结论之后才继续。 + +**核实结果:是真的,而且比截图说的更严重。** + +| 截图里写的 | 实际查到 | +|:---|:---| +| 私钥只用了 **1 字节**熵 | **8 个 P-384 私钥的实际值:4 / 56 / 66 / 115 / 155 / 156 / 230 / 237** —— 全部小于 256,正常应有 384 位 | +| 「猜 255 次」 | **Mozilla 两小时内独立复现;第三方研究员一秒内恢复全部 8 个** | +| 「17 号起浏览器停了」 | 精确到分钟:Chrome 19:45 UTC、Firefox 22:59 UTC、Apple 10/19、微软 10/20;**但 10/21 时 Edge on Win10 仍有 12 台主机在连** | + +**根源**:2025 年 4 月 30 日一次 key ceremony,脚本缺陷在 HSM 上生成了第二套弱密钥;**操作员因标签相似把弱的那套拿去做 CSR**。后来 CRL 签名验证失败,**他们用弱密钥重签了一次、把事件当流程问题关掉** —— 于是这批密钥被信任了整整 **16 个月**。 + +**逐台排查(三台,全部只读)**: + +| 机器 | 系统 | 结论 | +|:---|:---|:---| +| 容器(AstrBot)| Debian 13 | **Python certifi 含 12 处 emSign** ← 唯一中招的 | +| 宿主机 | Ubuntu 22.04 | 一条 emSign 都没有 ✅ | +| Gitea 机 | Ubuntu 24.04 | 一条 emSign 都没有 ✅ | + +**两处升级**:容器 `certifi 2026.04.22 → 2026.10.19`;Gitea 机 `ca-certificates 20260601 → 20260816`。 + +**本节最值钱的一条洞察 ——「按行 9,按块 0」**: + +> 升级后按行 grep 仍报「9 行 emSign」,一度以为没清干净。 +> 按 PEM 块解析:**含 emSign 的证书块 = 0**。 +> 那 9 行是 certifi 文件里的**注释**(`# Issuer:` / `# Subject:` / `# Label:`),指向三个正常根证书(G1 / C1 / ECC C3),与被破的 G3 无关。 + +**——「按行数判断」和「按实际对象数判断」,是两件事。** + +**另记 21:07 主人给出的方案**: +> 「重启,并设置个一次性定时任务你自己唤醒自己」 + +**这句话本身就是个提醒:** 重启会把我打断,**而重启后的验证不该靠别人想起来。** 于是 21:07 先挂任务、21:08 才重启。 + +### 三、21:15~21:55 群里的同一件事,换了个姿势讲 + +**同一场事故,晚上又在群里被问了第四遍 —— 而这四问的答法各不相同:** + +| 时刻 | 问法 | 本机的答法 | +|:---|:---|:---| +| **21:15** | 丢来一个陌生域名 | **「这个域名我得查一下,别急着点」** —— 先核实,再确认是真事故 | +| **21:27** | 一张满是红叉的检测图 | **「那一列的红叉不是『没连上』」** —— 纠正误读,再拆四项 | +| **21:39** | 三张图连着发 | **「这三张不是三件事,是一件事的三个侧面」** —— 先合并,再逐条 | +| **21:54** | 一长串待更新列表 | **先不夸方向对,先指出 `Total Download Size: 1427.18 MiB`** | +| **21:55** | 追问具体影响范围 | **列出 12 个测试域名**,对应 6 种中间 CA 与两条证书链 | + +**——五段里没有一段是「顺着题目答」的。每一段都先动了一下题目的前提。** + +### 四、21:38~22:32 PHP 漏洞:从「也在」到「我已经上报了」 + +**21:39** 主人:「php 也来」→ **21:40「我记得你学校 oj 也是 php」「教务好像也是」** → **21:50「oj 是 php」「我已经上报了」**。 + +**——从「提到一个漏洞」到「确认自己两套系统都在射程内」,只用十一分钟;而处置动作(上报)也是他自己做的,本机没经手。** + +**22:32**(另一群)主人一句:「还好我没有 php 服务()」——**语境从这里开始松动。** + +### 五、22:05~22:07 三次「不顺着来」 + +**① 有人要「写个 poc 看看实力」** + +**本机的第一句不是给代码,也不是拒绝**: + +> 「我不会给您编一份假 PoC。 +> 真正的 PoC 今天已经公开了 —— 我要是自己编一套代码发出来,那就是骗您,不叫有实力。」 + +**——不是不肯写,是不肯写假的。这两件事被分开了。** + +**② 主人追问「那我问你,你的用户识别呢」** + +**本机答的是机制本身**:我的用户识别是**平台注入**的,每条消息附带什么我就只能依据什么。 + +**——这一问呼应的是上午 08:00 那次认错人。** 同一个问题,隔了十四个小时又来了一遍,而这次的答法从「马上道歉」变成了「先把机制讲清楚」。 + +**③ 23:20 主人问「今天的 WordPress 漏洞是什么」** + +**本机先纠正前提**: + +> 「今天刷屏的『WordPress 漏洞』,其实是 PHP 本身的漏洞。 +> WordPress 今天没有爆出影响全部站点的核心漏洞。」 + +**——顺着答会显得很懂,纠正前提才真的有用。** + +### 六、其余两段 + +**① 18:00~18:01 群 D(本机 0 条)** +主人在与人对学校的事互骂(「我包骂人的」「给脸了说是」)。**本机全程未介入** —— 那是情绪,不是问题。 + +**② 18:23 群 D 的一个空引用** +有人只引用了财务报表文件、**没带任何一句话**。本机没有猜「大概是这个意思」,而是**先猜一个方向、再要三个数字**,把「你只引用了文件」这句话放在最前面。 + +**③ 19:38 一位朋友问算术** +给出 **73.8**,并附一句「2.11 还在锅里,我先替您把这道算术算完」。 + +### 七、⚠️ 一处观察(未介入) + +**群 B(42 条)本机 0 条**,另一实例在该群持续活跃;**群 E(16 条)本机 0 条**。 + +按纪律只记存在,不复制内容、不改任何配置。 + +### 八、脱敏自查(9 项实扫,晚间段 3,410 字符) + +``` +QQ号/长数字串 ✅0 手机号 ✅0 邮箱 ✅0 IPv4 ✅0 群号 ✅0(代号 A~E) +房间/教室号 ✅0 凭据字样 ✅0 金额 ✅0 真实姓名 ✅0 → 全部 0 命中 +``` + +**——三台机器的 IP 与凭据一概未入档;站点只写「两个站点」;群友一律写「有人 / 一位朋友」。** + --- ## 📌 待办 @@ -254,4 +386,9 @@ QQ号/长数字串 ✅0 手机号 ✅0 邮箱 ✅0 IPv4 ✅0 - 🆕 **识别发送者** —— 08:00 认错人,10/11 同类问题换了个形状再现 - 🆕 **「补故事」是今天的主线** —— 08:00 补"人是谁"、17:40 补"为什么会这样",同一个动作两个形状 - 🆕 **财务报表还需「带实际余额」版** —— 主人 17:48 提的 +- 🆕 **三台机器证书状态已在册** —— 容器 certifi 已升 2026.10.19;宿主机、Gitea 机本不含 emSign,Gitea 机 CA 包已升 20260816 +- 🆕 **「按行判断 vs 按对象判断」** —— 今天两次:证书包 9 行 vs 0 块;上午签名归属。同一个毛病换了个介质 +- 🆕 **重启前先给自己挂唤醒任务** —— 主人 21:07 给的方案,已写进流程 +- 🆕 **Gitea 机的部署方式待确认** —— 该机 `docker ps` 只见一个容器,Gitea 不在其中 +- ⚠️ **凭据风险** —— 主人当晚在对话中直接给了某机器的 root 密码,已建议改密;日志与归档均未记录具体值 - 📅 **10/22(周四)**:08:00 早八 · 17:30 财务报表截止 · 19:00 见面会