一天合入三笔CVE:RT-Thread的安全账本是怎么记的

没有发布会、没有宣传稿,RT-Thread 主干一天悄悄合入了三笔 CVE 修复、六笔安全加固、十笔缺陷修补。这条"审计流水线"运转的方式,比任何单笔修复都值得看。

📌 全文 7 章 · 6 张图 · 一句话主线:开源 RTOS 的安全不是一个漏洞一个漏洞修出来的,是一条流水线流水出来的

🎯 一、11 月 12 日,主干上发生了什么

翻 RT-Thread 主仓库 11 月 12 日的 commit 记录,能看到一条密集的合入流水线。头三笔都对应 CVE 编号:

1️⃣ 随机数(CVE-2024-25389) :rt_random 一直是可预测的线性同余发生器,默认种子固定------每次开机读出来的序列都一样。把它当密码学随机数用,等于把密钥写在启动镜像里。修法:首次读取混入系统 tick,启用硬件加密随机源时把硬件输出异或进返回值,并在 Kconfig 里明写"这不是密码学安全的随机数"。

2️⃣ 无线管理(CVE-2024-25388) :rt_wlan_send_to_thread() 的长度参数是有符号整数,sizeof(头部) + len 在 len 为负时回绕成巨大的无符号值,堆直接被写穿。修法:负数在最前面就拒绝。

3️⃣ rt-link 发送侧(CVE-2024-25395):组帧前不校验最终帧长,超长载荷直接写穿静态发送缓冲。修法:拷贝前先判断长度,越界即拒绝。
#mermaid-svg-ReqBnjQ43IpfKv5L{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-ReqBnjQ43IpfKv5L .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-ReqBnjQ43IpfKv5L .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-ReqBnjQ43IpfKv5L .error-icon{fill:#552222;}#mermaid-svg-ReqBnjQ43IpfKv5L .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-ReqBnjQ43IpfKv5L .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-ReqBnjQ43IpfKv5L .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-ReqBnjQ43IpfKv5L .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-ReqBnjQ43IpfKv5L .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-ReqBnjQ43IpfKv5L .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-ReqBnjQ43IpfKv5L .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-ReqBnjQ43IpfKv5L .marker{fill:#333333;stroke:#333333;}#mermaid-svg-ReqBnjQ43IpfKv5L .marker.cross{stroke:#333333;}#mermaid-svg-ReqBnjQ43IpfKv5L svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-ReqBnjQ43IpfKv5L p{margin:0;}#mermaid-svg-ReqBnjQ43IpfKv5L .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-ReqBnjQ43IpfKv5L .cluster-label text{fill:#333;}#mermaid-svg-ReqBnjQ43IpfKv5L .cluster-label span{color:#333;}#mermaid-svg-ReqBnjQ43IpfKv5L .cluster-label span p{background-color:transparent;}#mermaid-svg-ReqBnjQ43IpfKv5L .label text,#mermaid-svg-ReqBnjQ43IpfKv5L span{fill:#333;color:#333;}#mermaid-svg-ReqBnjQ43IpfKv5L .node rect,#mermaid-svg-ReqBnjQ43IpfKv5L .node circle,#mermaid-svg-ReqBnjQ43IpfKv5L .node ellipse,#mermaid-svg-ReqBnjQ43IpfKv5L .node polygon,#mermaid-svg-ReqBnjQ43IpfKv5L .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-ReqBnjQ43IpfKv5L .rough-node .label text,#mermaid-svg-ReqBnjQ43IpfKv5L .node .label text,#mermaid-svg-ReqBnjQ43IpfKv5L .image-shape .label,#mermaid-svg-ReqBnjQ43IpfKv5L .icon-shape .label{text-anchor:middle;}#mermaid-svg-ReqBnjQ43IpfKv5L .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-ReqBnjQ43IpfKv5L .rough-node .label,#mermaid-svg-ReqBnjQ43IpfKv5L .node .label,#mermaid-svg-ReqBnjQ43IpfKv5L .image-shape .label,#mermaid-svg-ReqBnjQ43IpfKv5L .icon-shape .label{text-align:center;}#mermaid-svg-ReqBnjQ43IpfKv5L .node.clickable{cursor:pointer;}#mermaid-svg-ReqBnjQ43IpfKv5L .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-ReqBnjQ43IpfKv5L .arrowheadPath{fill:#333333;}#mermaid-svg-ReqBnjQ43IpfKv5L .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-ReqBnjQ43IpfKv5L .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-ReqBnjQ43IpfKv5L .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ReqBnjQ43IpfKv5L .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-ReqBnjQ43IpfKv5L .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ReqBnjQ43IpfKv5L .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-ReqBnjQ43IpfKv5L .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-ReqBnjQ43IpfKv5L .cluster text{fill:#333;}#mermaid-svg-ReqBnjQ43IpfKv5L .cluster span{color:#333;}#mermaid-svg-ReqBnjQ43IpfKv5L div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-ReqBnjQ43IpfKv5L .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-ReqBnjQ43IpfKv5L rect.text{fill:none;stroke-width:0;}#mermaid-svg-ReqBnjQ43IpfKv5L .icon-shape,#mermaid-svg-ReqBnjQ43IpfKv5L .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ReqBnjQ43IpfKv5L .icon-shape p,#mermaid-svg-ReqBnjQ43IpfKv5L .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-ReqBnjQ43IpfKv5L .icon-shape .label rect,#mermaid-svg-ReqBnjQ43IpfKv5L .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ReqBnjQ43IpfKv5L .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-ReqBnjQ43IpfKv5L .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-ReqBnjQ43IpfKv5L :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} CVE-2024-25389

随机数种子固定
一天三笔合入
CVE-2024-25388

负长度回绕写堆
CVE-2024-25395

发送帧超长溢出
主干主干,无发布会

🔍 二、三个漏洞,一个共同点:把不可信输入当可信

三笔 CVE 的技术形态不同,但病根是同一个:长度、种子、帧头------这些来自外部或对端的数据被当成了可信输入。

无线帧的长度来自链路对端,随机数种子来自出厂固定值,发送载荷长度来自上层协议。嵌入式代码出于性能考虑习惯做"信任假设",安全审计要做的就是把每一条信任假设翻出来质询一遍。
#mermaid-svg-BCygdjtKb1Tpfl19{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-BCygdjtKb1Tpfl19 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-BCygdjtKb1Tpfl19 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-BCygdjtKb1Tpfl19 .error-icon{fill:#552222;}#mermaid-svg-BCygdjtKb1Tpfl19 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-BCygdjtKb1Tpfl19 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-BCygdjtKb1Tpfl19 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-BCygdjtKb1Tpfl19 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-BCygdjtKb1Tpfl19 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-BCygdjtKb1Tpfl19 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-BCygdjtKb1Tpfl19 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-BCygdjtKb1Tpfl19 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-BCygdjtKb1Tpfl19 .marker.cross{stroke:#333333;}#mermaid-svg-BCygdjtKb1Tpfl19 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-BCygdjtKb1Tpfl19 p{margin:0;}#mermaid-svg-BCygdjtKb1Tpfl19 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-BCygdjtKb1Tpfl19 .cluster-label text{fill:#333;}#mermaid-svg-BCygdjtKb1Tpfl19 .cluster-label span{color:#333;}#mermaid-svg-BCygdjtKb1Tpfl19 .cluster-label span p{background-color:transparent;}#mermaid-svg-BCygdjtKb1Tpfl19 .label text,#mermaid-svg-BCygdjtKb1Tpfl19 span{fill:#333;color:#333;}#mermaid-svg-BCygdjtKb1Tpfl19 .node rect,#mermaid-svg-BCygdjtKb1Tpfl19 .node circle,#mermaid-svg-BCygdjtKb1Tpfl19 .node ellipse,#mermaid-svg-BCygdjtKb1Tpfl19 .node polygon,#mermaid-svg-BCygdjtKb1Tpfl19 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-BCygdjtKb1Tpfl19 .rough-node .label text,#mermaid-svg-BCygdjtKb1Tpfl19 .node .label text,#mermaid-svg-BCygdjtKb1Tpfl19 .image-shape .label,#mermaid-svg-BCygdjtKb1Tpfl19 .icon-shape .label{text-anchor:middle;}#mermaid-svg-BCygdjtKb1Tpfl19 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-BCygdjtKb1Tpfl19 .rough-node .label,#mermaid-svg-BCygdjtKb1Tpfl19 .node .label,#mermaid-svg-BCygdjtKb1Tpfl19 .image-shape .label,#mermaid-svg-BCygdjtKb1Tpfl19 .icon-shape .label{text-align:center;}#mermaid-svg-BCygdjtKb1Tpfl19 .node.clickable{cursor:pointer;}#mermaid-svg-BCygdjtKb1Tpfl19 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-BCygdjtKb1Tpfl19 .arrowheadPath{fill:#333333;}#mermaid-svg-BCygdjtKb1Tpfl19 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-BCygdjtKb1Tpfl19 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-BCygdjtKb1Tpfl19 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-BCygdjtKb1Tpfl19 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-BCygdjtKb1Tpfl19 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-BCygdjtKb1Tpfl19 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-BCygdjtKb1Tpfl19 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-BCygdjtKb1Tpfl19 .cluster text{fill:#333;}#mermaid-svg-BCygdjtKb1Tpfl19 .cluster span{color:#333;}#mermaid-svg-BCygdjtKb1Tpfl19 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-BCygdjtKb1Tpfl19 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-BCygdjtKb1Tpfl19 rect.text{fill:none;stroke-width:0;}#mermaid-svg-BCygdjtKb1Tpfl19 .icon-shape,#mermaid-svg-BCygdjtKb1Tpfl19 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-BCygdjtKb1Tpfl19 .icon-shape p,#mermaid-svg-BCygdjtKb1Tpfl19 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-BCygdjtKb1Tpfl19 .icon-shape .label rect,#mermaid-svg-BCygdjtKb1Tpfl19 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-BCygdjtKb1Tpfl19 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-BCygdjtKb1Tpfl19 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-BCygdjtKb1Tpfl19 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 逐条翻出质询
审计质询(之后)
长度来源是链路对端

必须校验
有符号数可回绕

先判负再转换
固定种子=密钥公开

混入 tick 与硬件源
信任假设(审计前)
帧头长度可信
参数类型正确
种子无人知道

🏭 三、流水线的另一头:163 笔提案在排队

单日合入只是流水线的出口。社区日报给出的口径是:待审队列 163 笔提案、358 个议题,且修复全部由同一条"审计线"上的贡献者持续提交------同一作者这周持续产出审计清单,从随机数到 HardFault 栈选择,逐条清欠账。

这条流水线的分工值得画出来:发现(CVE 清单 + 历史 issue 回溯)→ 提案(附最小修复 diff)→ 评审(维护者逐条核对)→ 合入(标注"未烧板")→ 回归(社区烧板验证)。
"社区用户烧板" "主干仓库" "维护者评审" "审计贡献者" "CVE 清单 / 历史 Issue" "社区用户烧板" "主干仓库" "维护者评审" "审计贡献者" "CVE 清单 / 历史 Issue" #mermaid-svg-yNMaXIcZmIeAWb3f{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-yNMaXIcZmIeAWb3f .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-yNMaXIcZmIeAWb3f .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-yNMaXIcZmIeAWb3f .error-icon{fill:#552222;}#mermaid-svg-yNMaXIcZmIeAWb3f .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-yNMaXIcZmIeAWb3f .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-yNMaXIcZmIeAWb3f .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-yNMaXIcZmIeAWb3f .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-yNMaXIcZmIeAWb3f .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-yNMaXIcZmIeAWb3f .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-yNMaXIcZmIeAWb3f .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-yNMaXIcZmIeAWb3f .marker{fill:#333333;stroke:#333333;}#mermaid-svg-yNMaXIcZmIeAWb3f .marker.cross{stroke:#333333;}#mermaid-svg-yNMaXIcZmIeAWb3f svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-yNMaXIcZmIeAWb3f p{margin:0;}#mermaid-svg-yNMaXIcZmIeAWb3f .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-yNMaXIcZmIeAWb3f text.actor>tspan{fill:black;stroke:none;}#mermaid-svg-yNMaXIcZmIeAWb3f .actor-line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-yNMaXIcZmIeAWb3f .innerArc{stroke-width:1.5;stroke-dasharray:none;}#mermaid-svg-yNMaXIcZmIeAWb3f .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-yNMaXIcZmIeAWb3f .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-yNMaXIcZmIeAWb3f #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-yNMaXIcZmIeAWb3f .sequenceNumber{fill:white;}#mermaid-svg-yNMaXIcZmIeAWb3f #sequencenumber{fill:#333;}#mermaid-svg-yNMaXIcZmIeAWb3f #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-yNMaXIcZmIeAWb3f .messageText{fill:#333;stroke:none;}#mermaid-svg-yNMaXIcZmIeAWb3f .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-yNMaXIcZmIeAWb3f .labelText,#mermaid-svg-yNMaXIcZmIeAWb3f .labelText>tspan{fill:black;stroke:none;}#mermaid-svg-yNMaXIcZmIeAWb3f .loopText,#mermaid-svg-yNMaXIcZmIeAWb3f .loopText>tspan{fill:black;stroke:none;}#mermaid-svg-yNMaXIcZmIeAWb3f .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-yNMaXIcZmIeAWb3f .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-yNMaXIcZmIeAWb3f .noteText,#mermaid-svg-yNMaXIcZmIeAWb3f .noteText>tspan{fill:black;stroke:none;}#mermaid-svg-yNMaXIcZmIeAWb3f .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-yNMaXIcZmIeAWb3f .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-yNMaXIcZmIeAWb3f .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-yNMaXIcZmIeAWb3f .actorPopupMenu{position:absolute;}#mermaid-svg-yNMaXIcZmIeAWb3f .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-yNMaXIcZmIeAWb3f .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-yNMaXIcZmIeAWb3f .actor-man circle,#mermaid-svg-yNMaXIcZmIeAWb3f line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-yNMaXIcZmIeAWb3f :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} "提供缺陷线索""提交修复提案 + 最小 diff""静态核对通过,合入""随版本发布""实测反馈,闭环"

🧨 四、比漏洞更狠的:会造成停摆的"假警报"

同批合入的六笔里,有一笔不是 CVE,但现场杀伤力可能更大:内存池哨兵约定。释放"最后一块、其 next 指向堆尾哨兵"的内存块时,校验逻辑要求 next 项的内存池指针等于当前池;而老版本和厂商定制的小内存池在哨兵里只保留已用位、指针为空------于是断言触发、系统停机。

这类问题不上 CVE 清单,不会被安全扫描器抓到,但它在产线上造成的重启次数可能比所有 CVE 加起来都多。修法也讲究:作者明确拒绝了"改成检查 prev"的简化方案,因为那会整体放松校验------宁可多写用例,不放松边界。
#mermaid-svg-WnXbW8esrktLvH8X{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-WnXbW8esrktLvH8X .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-WnXbW8esrktLvH8X .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-WnXbW8esrktLvH8X .error-icon{fill:#552222;}#mermaid-svg-WnXbW8esrktLvH8X .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-WnXbW8esrktLvH8X .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-WnXbW8esrktLvH8X .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-WnXbW8esrktLvH8X .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-WnXbW8esrktLvH8X .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-WnXbW8esrktLvH8X .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-WnXbW8esrktLvH8X .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-WnXbW8esrktLvH8X .marker{fill:#333333;stroke:#333333;}#mermaid-svg-WnXbW8esrktLvH8X .marker.cross{stroke:#333333;}#mermaid-svg-WnXbW8esrktLvH8X svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-WnXbW8esrktLvH8X p{margin:0;}#mermaid-svg-WnXbW8esrktLvH8X defs #statediagram-barbEnd{fill:#333333;stroke:#333333;}#mermaid-svg-WnXbW8esrktLvH8X g.stateGroup text{fill:#9370DB;stroke:none;font-size:10px;}#mermaid-svg-WnXbW8esrktLvH8X g.stateGroup text{fill:#333;stroke:none;font-size:10px;}#mermaid-svg-WnXbW8esrktLvH8X g.stateGroup .state-title{font-weight:bolder;fill:#131300;}#mermaid-svg-WnXbW8esrktLvH8X g.stateGroup rect{fill:#ECECFF;stroke:#9370DB;}#mermaid-svg-WnXbW8esrktLvH8X g.stateGroup line{stroke:#333333;stroke-width:1;}#mermaid-svg-WnXbW8esrktLvH8X .transition{stroke:#333333;stroke-width:1;fill:none;}#mermaid-svg-WnXbW8esrktLvH8X .stateGroup .composit{fill:white;border-bottom:1px;}#mermaid-svg-WnXbW8esrktLvH8X .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px;}#mermaid-svg-WnXbW8esrktLvH8X .state-note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-WnXbW8esrktLvH8X .state-note text{fill:black;stroke:none;font-size:10px;}#mermaid-svg-WnXbW8esrktLvH8X .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5;}#mermaid-svg-WnXbW8esrktLvH8X .edgeLabel .label rect{fill:#ECECFF;opacity:0.5;}#mermaid-svg-WnXbW8esrktLvH8X .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-WnXbW8esrktLvH8X .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-WnXbW8esrktLvH8X .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-WnXbW8esrktLvH8X .edgeLabel .label text{fill:#333;}#mermaid-svg-WnXbW8esrktLvH8X .label div .edgeLabel{color:#333;}#mermaid-svg-WnXbW8esrktLvH8X .stateLabel text{fill:#131300;font-size:10px;font-weight:bold;}#mermaid-svg-WnXbW8esrktLvH8X .node circle.state-start{fill:#333333;stroke:#333333;}#mermaid-svg-WnXbW8esrktLvH8X .node .fork-join{fill:#333333;stroke:#333333;}#mermaid-svg-WnXbW8esrktLvH8X .node circle.state-end{fill:#9370DB;stroke:white;stroke-width:1.5;}#mermaid-svg-WnXbW8esrktLvH8X .end-state-inner{fill:white;stroke-width:1.5;}#mermaid-svg-WnXbW8esrktLvH8X .node rect{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-WnXbW8esrktLvH8X .node polygon{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-WnXbW8esrktLvH8X #statediagram-barbEnd{fill:#333333;}#mermaid-svg-WnXbW8esrktLvH8X .statediagram-cluster rect{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-WnXbW8esrktLvH8X .cluster-label,#mermaid-svg-WnXbW8esrktLvH8X .nodeLabel{color:#131300;}#mermaid-svg-WnXbW8esrktLvH8X .statediagram-cluster rect.outer{rx:5px;ry:5px;}#mermaid-svg-WnXbW8esrktLvH8X .statediagram-state .divider{stroke:#9370DB;}#mermaid-svg-WnXbW8esrktLvH8X .statediagram-state .title-state{rx:5px;ry:5px;}#mermaid-svg-WnXbW8esrktLvH8X .statediagram-cluster.statediagram-cluster .inner{fill:white;}#mermaid-svg-WnXbW8esrktLvH8X .statediagram-cluster.statediagram-cluster-alt .inner{fill:#f0f0f0;}#mermaid-svg-WnXbW8esrktLvH8X .statediagram-cluster .inner{rx:0;ry:0;}#mermaid-svg-WnXbW8esrktLvH8X .statediagram-state rect.basic{rx:5px;ry:5px;}#mermaid-svg-WnXbW8esrktLvH8X .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#f0f0f0;}#mermaid-svg-WnXbW8esrktLvH8X .note-edge{stroke-dasharray:5;}#mermaid-svg-WnXbW8esrktLvH8X .statediagram-note rect{fill:#fff5ad;stroke:#aaaa33;stroke-width:1px;rx:0;ry:0;}#mermaid-svg-WnXbW8esrktLvH8X .statediagram-note rect{fill:#fff5ad;stroke:#aaaa33;stroke-width:1px;rx:0;ry:0;}#mermaid-svg-WnXbW8esrktLvH8X .statediagram-note text{fill:black;}#mermaid-svg-WnXbW8esrktLvH8X .statediagram-note .nodeLabel{color:black;}#mermaid-svg-WnXbW8esrktLvH8X .statediagram .edgeLabel{color:red;}#mermaid-svg-WnXbW8esrktLvH8X #dependencyStart,#mermaid-svg-WnXbW8esrktLvH8X #dependencyEnd{fill:#333333;stroke:#333333;stroke-width:1;}#mermaid-svg-WnXbW8esrktLvH8X .statediagramTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-WnXbW8esrktLvH8X :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} "普通块 next 指向池内"
"最后一块 next=堆尾哨兵

哨兵指针为空"
"断言触发(修复前)"
"next=堆尾偏移视为合法(修复后)"
正常释放
断言通过
假警报
系统停机
显式放行
整块合并

📊 五、同一天的其他十笔:老账本一笔笔清

除 CVE 外,当天还有十笔缺陷修补,大多在清多年前的老账:Cortex-M0 与 M23 的 HardFault 栈选择(缺陷 #3584,多年老议题,两个移植各补一份汇编)、VTOR 为零时不该恢复 MSP(#4728)、邮箱/消息队列 FIFO 反转(#4940,435 行,唯一直接改调度语义的一笔)、NFS 读路径长度夹取、libdl 三架构重定位器收口(205 行)......
#mermaid-svg-EdKmU9xaNBTNT5G8{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-EdKmU9xaNBTNT5G8 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-EdKmU9xaNBTNT5G8 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-EdKmU9xaNBTNT5G8 .error-icon{fill:#552222;}#mermaid-svg-EdKmU9xaNBTNT5G8 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-EdKmU9xaNBTNT5G8 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-EdKmU9xaNBTNT5G8 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-EdKmU9xaNBTNT5G8 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-EdKmU9xaNBTNT5G8 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-EdKmU9xaNBTNT5G8 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-EdKmU9xaNBTNT5G8 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-EdKmU9xaNBTNT5G8 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-EdKmU9xaNBTNT5G8 .marker.cross{stroke:#333333;}#mermaid-svg-EdKmU9xaNBTNT5G8 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-EdKmU9xaNBTNT5G8 p{margin:0;}#mermaid-svg-EdKmU9xaNBTNT5G8 .mermaid-main-font{font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-EdKmU9xaNBTNT5G8 .exclude-range{fill:#eeeeee;}#mermaid-svg-EdKmU9xaNBTNT5G8 .section{stroke:none;opacity:0.2;}#mermaid-svg-EdKmU9xaNBTNT5G8 .section0{fill:rgba(102, 102, 255, 0.49);}#mermaid-svg-EdKmU9xaNBTNT5G8 .section2{fill:#fff400;}#mermaid-svg-EdKmU9xaNBTNT5G8 .section1,#mermaid-svg-EdKmU9xaNBTNT5G8 .section3{fill:white;opacity:0.2;}#mermaid-svg-EdKmU9xaNBTNT5G8 .sectionTitle0{fill:#333;}#mermaid-svg-EdKmU9xaNBTNT5G8 .sectionTitle1{fill:#333;}#mermaid-svg-EdKmU9xaNBTNT5G8 .sectionTitle2{fill:#333;}#mermaid-svg-EdKmU9xaNBTNT5G8 .sectionTitle3{fill:#333;}#mermaid-svg-EdKmU9xaNBTNT5G8 .sectionTitle{text-anchor:start;font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-EdKmU9xaNBTNT5G8 .grid .tick{stroke:lightgrey;opacity:0.8;shape-rendering:crispEdges;}#mermaid-svg-EdKmU9xaNBTNT5G8 .grid .tick text{font-family:"trebuchet ms",verdana,arial,sans-serif;fill:#333;}#mermaid-svg-EdKmU9xaNBTNT5G8 .grid path{stroke-width:0;}#mermaid-svg-EdKmU9xaNBTNT5G8 .today{fill:none;stroke:red;stroke-width:2px;}#mermaid-svg-EdKmU9xaNBTNT5G8 .task{stroke-width:2;}#mermaid-svg-EdKmU9xaNBTNT5G8 .taskText{text-anchor:middle;font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-EdKmU9xaNBTNT5G8 .taskTextOutsideRight{fill:black;text-anchor:start;font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-EdKmU9xaNBTNT5G8 .taskTextOutsideLeft{fill:black;text-anchor:end;}#mermaid-svg-EdKmU9xaNBTNT5G8 .task.clickable{cursor:pointer;}#mermaid-svg-EdKmU9xaNBTNT5G8 .taskText.clickable{cursor:pointer;fill:#003163!important;font-weight:bold;}#mermaid-svg-EdKmU9xaNBTNT5G8 .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163!important;font-weight:bold;}#mermaid-svg-EdKmU9xaNBTNT5G8 .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163!important;font-weight:bold;}#mermaid-svg-EdKmU9xaNBTNT5G8 .taskText0,#mermaid-svg-EdKmU9xaNBTNT5G8 .taskText1,#mermaid-svg-EdKmU9xaNBTNT5G8 .taskText2,#mermaid-svg-EdKmU9xaNBTNT5G8 .taskText3{fill:white;}#mermaid-svg-EdKmU9xaNBTNT5G8 .task0,#mermaid-svg-EdKmU9xaNBTNT5G8 .task1,#mermaid-svg-EdKmU9xaNBTNT5G8 .task2,#mermaid-svg-EdKmU9xaNBTNT5G8 .task3{fill:#8a90dd;stroke:#534fbc;}#mermaid-svg-EdKmU9xaNBTNT5G8 .taskTextOutside0,#mermaid-svg-EdKmU9xaNBTNT5G8 .taskTextOutside2{fill:black;}#mermaid-svg-EdKmU9xaNBTNT5G8 .taskTextOutside1,#mermaid-svg-EdKmU9xaNBTNT5G8 .taskTextOutside3{fill:black;}#mermaid-svg-EdKmU9xaNBTNT5G8 .active0,#mermaid-svg-EdKmU9xaNBTNT5G8 .active1,#mermaid-svg-EdKmU9xaNBTNT5G8 .active2,#mermaid-svg-EdKmU9xaNBTNT5G8 .active3{fill:#bfc7ff;stroke:#534fbc;}#mermaid-svg-EdKmU9xaNBTNT5G8 .activeText0,#mermaid-svg-EdKmU9xaNBTNT5G8 .activeText1,#mermaid-svg-EdKmU9xaNBTNT5G8 .activeText2,#mermaid-svg-EdKmU9xaNBTNT5G8 .activeText3{fill:black!important;}#mermaid-svg-EdKmU9xaNBTNT5G8 .done0,#mermaid-svg-EdKmU9xaNBTNT5G8 .done1,#mermaid-svg-EdKmU9xaNBTNT5G8 .done2,#mermaid-svg-EdKmU9xaNBTNT5G8 .done3{stroke:grey;fill:lightgrey;stroke-width:2;}#mermaid-svg-EdKmU9xaNBTNT5G8 .doneText0,#mermaid-svg-EdKmU9xaNBTNT5G8 .doneText1,#mermaid-svg-EdKmU9xaNBTNT5G8 .doneText2,#mermaid-svg-EdKmU9xaNBTNT5G8 .doneText3{fill:black!important;}#mermaid-svg-EdKmU9xaNBTNT5G8 .doneText0.taskTextOutsideLeft,#mermaid-svg-EdKmU9xaNBTNT5G8 .doneText0.taskTextOutsideRight,#mermaid-svg-EdKmU9xaNBTNT5G8 .doneText1.taskTextOutsideLeft,#mermaid-svg-EdKmU9xaNBTNT5G8 .doneText1.taskTextOutsideRight,#mermaid-svg-EdKmU9xaNBTNT5G8 .doneText2.taskTextOutsideLeft,#mermaid-svg-EdKmU9xaNBTNT5G8 .doneText2.taskTextOutsideRight,#mermaid-svg-EdKmU9xaNBTNT5G8 .doneText3.taskTextOutsideLeft,#mermaid-svg-EdKmU9xaNBTNT5G8 .doneText3.taskTextOutsideRight{fill:black!important;}#mermaid-svg-EdKmU9xaNBTNT5G8 .crit0,#mermaid-svg-EdKmU9xaNBTNT5G8 .crit1,#mermaid-svg-EdKmU9xaNBTNT5G8 .crit2,#mermaid-svg-EdKmU9xaNBTNT5G8 .crit3{stroke:#ff8888;fill:red;stroke-width:2;}#mermaid-svg-EdKmU9xaNBTNT5G8 .activeCrit0,#mermaid-svg-EdKmU9xaNBTNT5G8 .activeCrit1,#mermaid-svg-EdKmU9xaNBTNT5G8 .activeCrit2,#mermaid-svg-EdKmU9xaNBTNT5G8 .activeCrit3{stroke:#ff8888;fill:#bfc7ff;stroke-width:2;}#mermaid-svg-EdKmU9xaNBTNT5G8 .doneCrit0,#mermaid-svg-EdKmU9xaNBTNT5G8 .doneCrit1,#mermaid-svg-EdKmU9xaNBTNT5G8 .doneCrit2,#mermaid-svg-EdKmU9xaNBTNT5G8 .doneCrit3{stroke:#ff8888;fill:lightgrey;stroke-width:2;cursor:pointer;shape-rendering:crispEdges;}#mermaid-svg-EdKmU9xaNBTNT5G8 .milestone{transform:rotate(45deg) scale(0.8,0.8);}#mermaid-svg-EdKmU9xaNBTNT5G8 .milestoneText{font-style:italic;}#mermaid-svg-EdKmU9xaNBTNT5G8 .doneCritText0,#mermaid-svg-EdKmU9xaNBTNT5G8 .doneCritText1,#mermaid-svg-EdKmU9xaNBTNT5G8 .doneCritText2,#mermaid-svg-EdKmU9xaNBTNT5G8 .doneCritText3{fill:black!important;}#mermaid-svg-EdKmU9xaNBTNT5G8 .doneCritText0.taskTextOutsideLeft,#mermaid-svg-EdKmU9xaNBTNT5G8 .doneCritText0.taskTextOutsideRight,#mermaid-svg-EdKmU9xaNBTNT5G8 .doneCritText1.taskTextOutsideLeft,#mermaid-svg-EdKmU9xaNBTNT5G8 .doneCritText1.taskTextOutsideRight,#mermaid-svg-EdKmU9xaNBTNT5G8 .doneCritText2.taskTextOutsideLeft,#mermaid-svg-EdKmU9xaNBTNT5G8 .doneCritText2.taskTextOutsideRight,#mermaid-svg-EdKmU9xaNBTNT5G8 .doneCritText3.taskTextOutsideLeft,#mermaid-svg-EdKmU9xaNBTNT5G8 .doneCritText3.taskTextOutsideRight{fill:black!important;}#mermaid-svg-EdKmU9xaNBTNT5G8 .vert{stroke:navy;}#mermaid-svg-EdKmU9xaNBTNT5G8 .vertText{font-size:15px;text-anchor:middle;fill:navy!important;}#mermaid-svg-EdKmU9xaNBTNT5G8 .activeCritText0,#mermaid-svg-EdKmU9xaNBTNT5G8 .activeCritText1,#mermaid-svg-EdKmU9xaNBTNT5G8 .activeCritText2,#mermaid-svg-EdKmU9xaNBTNT5G8 .activeCritText3{fill:black!important;}#mermaid-svg-EdKmU9xaNBTNT5G8 .titleText{text-anchor:middle;font-size:18px;fill:#333;font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-EdKmU9xaNBTNT5G8 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 2020 2021 2022 2023 2024 2025 2026 HardFault 栈选择 #3584 VTOR 恢复 #4728 FIFO 反转 #4940 内存池哨兵 #10632 NFS 长度 #11917 架构层内核层组件层 老议题清欠时间线(部分)

功能侧还有一笔大动作:STM32 输入捕获驱动重构(1529 行新增),一个物理定时器可注册四个独立边沿捕获设备------这是社区贡献者的功能提案,与安全审计线并行。

🔬 六、值得警惕的一行标注:"未烧板"

流水线的效率有代价。当天的修复全部标注"静态核对、未烧板"------静态审计能保证逻辑正确,但汇编层的修复(HardFault 栈选择、VTOR)行为差异只有真机才能暴露。

这也是这条流水线最真实的形态:社区审计贡献者产出速度 >> 烧板验证速度。主干合入的门槛是"评审通过",而不是"全平台实测通过"。对下游用户的含义很直接:升级 RTOS 版本后,中断栈、上下文切换这类底层路径的回归测试不能省。
#mermaid-svg-O4FCtmQoA48QUX7b{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-O4FCtmQoA48QUX7b .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-O4FCtmQoA48QUX7b .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-O4FCtmQoA48QUX7b .error-icon{fill:#552222;}#mermaid-svg-O4FCtmQoA48QUX7b .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-O4FCtmQoA48QUX7b .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-O4FCtmQoA48QUX7b .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-O4FCtmQoA48QUX7b .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-O4FCtmQoA48QUX7b .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-O4FCtmQoA48QUX7b .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-O4FCtmQoA48QUX7b .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-O4FCtmQoA48QUX7b .marker{fill:#333333;stroke:#333333;}#mermaid-svg-O4FCtmQoA48QUX7b .marker.cross{stroke:#333333;}#mermaid-svg-O4FCtmQoA48QUX7b svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-O4FCtmQoA48QUX7b p{margin:0;}#mermaid-svg-O4FCtmQoA48QUX7b .pieCircle{stroke:#000000;stroke-width:2px;opacity:0.7;}#mermaid-svg-O4FCtmQoA48QUX7b .pieOuterCircle{stroke:#000000;stroke-width:1px;fill:none;}#mermaid-svg-O4FCtmQoA48QUX7b .pieTitleText{text-anchor:middle;font-size:25px;fill:#000000;font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-O4FCtmQoA48QUX7b .slice{font-family:"trebuchet ms",verdana,arial,sans-serif;fill:#000000;font-size:17px;}#mermaid-svg-O4FCtmQoA48QUX7b .legend text{fill:#000000;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:17px;}#mermaid-svg-O4FCtmQoA48QUX7b :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 62%19%14%5%当日合入构成(11-12,按笔数示意) CVE 安全修复 安全加固 / 缺陷修补 功能扩展 兼容性小改

💡 七、给嵌入式团队的三条 takeaway

1️⃣ 把 CVE 清单当设计输入,不是补丁清单。 负长度回绕、固定种子、帧头信任------这三个形态你的代码里大概率也有。审自己的代码时,优先翻"所有来自外部的长度和计数"。

2️⃣ 有符号/无符号混算是嵌入式第一名病。 sizeof(x) + len 这类表达式在 len < 0 时的回绕,比缓冲区溢出更隐蔽。规则很简单:所有长度参数先判负,再转无符号。

3️⃣ 升级 RTOS 要跑底层回归。 关注上游安全修复是好事,但"未烧板"标注意味着最后一公里在你这里。中断路径、内存管理、IPC 语义(比如这次 mb/mq 的 FIFO 行为变化)升级后必须真机回归。

一句话收尾:安全不是一次性的大动作,是每天三笔、五笔、十笔的流水账。RT-Thread 这条审计流水线最值得学的,不是任何一笔修复,而是"天天记、笔笔记"的记账习惯。

相关推荐
afumu5 小时前
Go 写一个只监听 127.0.0.1 的控制服务:鉴权、白名单、危险命令拦截
后端·安全·go
艺杯羹6 小时前
1Panel 装好后 ufw 仍是 inactive:一次服务器安全盲区复盘
服务器·数据库·安全·网络安全·系统架构·实战·1panel
QXWZ_IA9 小时前
具身智能在油气行业规模化应用面临哪些技术挑战?
人工智能·安全
笑容掩饰我的失落11 小时前
区块链从小白到精通(十):合约安全与上线——重入攻击、Gas 优化与最佳实践
安全·区块链
flash俊杰12 小时前
v0.5-01 让桌面 AI 助手记得住:预算组装、递归摘要、长期记忆与评估基线
数据库·安全·架构
五萝卜12 小时前
webshell流量分析靶场WP
安全
杨凯凡1 天前
IT日报|2026-11-13:GitHub 大规模凭据攻击、Signal 形式化验证、Claude 新模型与 AI 安全诉讼
人工智能·安全·github
P1Browser1 天前
账号触发平台安全审核?拆解标准申诉流程与材料清单
大数据·人工智能·安全·多账号管理·指纹浏览器·账户安全·运营合规
Fnetlink11 天前
2026年企业安全组网供应商方案推荐
安全