作者SkankHunt42 (凯子爸)
看板Soft_Job
标题Re: [心得] 花了很多时间重构却被打枪用旧code
时间Fri Oct 3 23:21:15 2025
※ 引述《LeonH (Leon)》之铭言:
: 我来响应一下,要怎麽说服工程团队领导重构
: 拿安全性压他,资安这东西,大家都懂,但大家也都不专业
: 旧架构要嘛运行的环境有已知漏洞、要嘛依赖套件有已知漏洞
: 去 CVEdetails.com 查一下,整理一下已知漏洞高危清单
: 用魔法对付魔法,「不改的话有问题你要负责吗?」
: 保证没人敢挺身说我负责,就这样,改善软体供应链的同时,顺便重构。
: 如果有人敢挺身而出,那恭喜,以後背锅侠就是他了。
有个满有趣的案例
OpenSSH 2006年有个CVE-2006-5051
是因为SIGALRM不当 导致heap管理的执行续被中断
後来被修正 但在2021的时候又被错改回来 叫CVE-2024-6387
OpenSSH 8.5p1 的release notes说明中为:
This release is focused on new features and internal
refactoring.
https://bugzilla.redhat.com/show_bug.cgi?id=2294604
Marco Benatto提到
This regression was introduced in October 2020 (OpenSSH 8.5p1) by commit
752250c ("revised log infrastructure for OpenSSH"), which accidentally
removed an "#ifdef DO_LOG_SAFE_IN_SIGHAND" from sigdie(), a function that is
directly called by sshd's SIGALRM handler.
https://github.com/openssh/openssh-portable/commit/752250c
看来这哥们确实是在重构 因为原本sigdie变成sshsigdie
至於为什麽他要删除#ifdef DO_LOG_SAFE_IN_SIGHAND
可能他觉得本来就很safe 也有可能他觉得行为一致
反正也没有前人留下充满怨念的注解警告
(反正大家一定见过那种"祖宗之法不可变"的程式码注解警告
就跟进饭店房间要先敲门一样 宁可信其有不可信其无)
所以他可能就直接删除了
所以说以资安避免CVE出现的观点来进行重构提议
老实讲 我的想法是 嗯~~~
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 149.22.87.116 (日本)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1759504880.A.78D.html
※ 编辑: SkankHunt42 (149.22.87.116 日本), 10/03/2025 23:21:56
1F:推 fgh81113: 有趣案例推 10/04 00:09
2F:推 kurtsgm: 推祖宗之法不可变 10/04 01:14
3F:推 marra: "祖宗之法不可变" XD 10/04 02:10
4F:推 labbat: 没什麽不能变的 以前说路径或档名不能中文不能空格我照用 10/04 02:32
5F:推 yamakazi: 没写测试吧 10/04 09:01
6F:推 NDark: 施作的人 没非常清楚规格 这样写测试也会写不完整 10/04 09:30
7F:推 NDark: 若是修改的地方没有长期被需要变更 那麽测试就成本沉没了 10/04 09:33
8F:→ ssccg: 安全程式码很多时候跟(工程师直接)漂亮程式就是冲突的 10/08 13:48
9F:→ ssccg: (工程师直觉) 10/08 13:49
10F:推 kingofsdtw: 楼上QQ 10/09 02:28
11F:推 why8ther: 程式本来就有问题吧 那函式名字就是在做 logging 谁知道 10/09 10:16
12F:→ why8ther: 实际执行竟然有安全性问题 10/09 10:16
13F:→ why8ther: 也没测试 看来也是corner case才会过三年才被抓 10/09 10:20
14F:推 fatb: 想到很久很久以前 我的注解警告被同事拿掉 XD 10/13 16:13
15F:推 knme: 推 10/14 21:32