作者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/m.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