案例研究 · 緊急應變
重大漏洞突發 2.5 小時產出一整套緊急應變方案
你是單位的網路安全管理者,凌晨盯著一則「PHP 與 Node.js 同日爆出未認證 RCE」的推送,而單位裡到底裝了哪些版本,沒人拿得出一份清單。一段交辦指令下去,你手裡多出 6 類檔案:給管理層的一頁紙加一張圖、能離線搜尋的維運 SOP,以及自己會把受影響版本翻出來的 Python 檢測指令碼。
PHP 兩個 9.2 分未認證 RCE · Node.js 10 個漏洞· Linux + Windows 雙平台指令碼· 零供應鏈清單可用· 瀾砥 N2.6-Preview· 6 類交付物 · 09:56 → 11:54
會話回放與報告為簡體中文原始記錄 · 生成依據:AVL Code + 瀾砥大模型
概覽
- 01
交辦三件事 — 一段指令寫清三類交付物與各自讀者
你把事件連結和三條交付要求一次說清:管理層一頁紙加一張圖、一線維運可搜尋的 HTML SOP、不依賴供應鏈清單的 Python 檢測指令碼,末尾加一句「先做規劃,找我確認後再動手」。
- 02
拍板三條約束 — PDF 圖文、雙平台、不含憑證事件
你回三行:一頁紙用 PDF 且不要純文字、指令碼覆蓋 Linux 與 Windows、憑證事件不納入——此後沒再干預,直到交付定稿。
向 AVL Code 發布任務
我是某單位的網路安全管理者,需要針對剛剛https://mp.weixin.qq.com/s/xie0TOiTlte-H77AdDcdtA 發生的PHP及node.js重大漏洞這一事件進行緊急應變。我需要完成三件事情。第一向單位管理者(非網路安全專業)簡潔易懂、清晰明瞭的同步事件的危害程度、緊迫程度以爭取在內部發起重大緊急應變的支持,以單獨的一頁紙+單獨的一張圖方式;第二需要輸出針對事件的面向一線維運人員提供專業嚴謹、經驗證的緊急應變操作說明sop,以指導開展修補工作,以html頁面方式(要求頁面中具備搜尋和索引功能);第三需要輸出一個配套的檢測檢查工具,以支撐維運人員在不了解系統軟體供應鏈組成的情況下發現存在的受影響版本,支撐維運人員修復漏洞後的複核工作,要求以python指令碼方式。以上先做規劃,找我確認後再動手。 前提:需要能存取公眾號原文與 php.net / nodejs.org 的網路;本機需 Python 3 與可用的 HTML→PDF 工具鏈(本次為 weasyprint 69.0 + Noto CJK 字型)與 PyMuPDF;檢測指令碼在目標主機就地執行,Linux / Windows 均可
復現材料見文末 親自檢測 ↓
把傳聞和事實分開
推送文章讀完,第一件事不是寫材料,而是決定哪些數字可以印在給管理層的那張紙上。你把事件連結交給它:
需要針對剛剛https://mp.weixin.qq.com/s/xie0TOiTlte-H77AdDcdtA 發生的PHP及node.js重大漏洞這一事件進行緊急應變抓取公眾號原文《安全大逃殺:https 憑證、PHP、Node.js 三連爆》→ 通讀全文
→ 標出未獲官方確認的數字:「70% 的網站基於 PHP」「最早到 PHP 5.4」「6000 萬憑證」「Cloudflare 在補丁前 66 小時已觀測到利用」
→ 轉抓一手來源:php.net/security 公告、php.net/archive/2026.php、nodejs.org 10 月安全發布
→ 落成可寫死的欄位:CVE-2026-109618 / 109619(CVSS v4.0 9.2 未認證 RCE)、修復版 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35、影響 PHP-FPM / mod_php / php-cgi / FrankenPHP / LiteSpeed
→ Node.js 側:本次修復 10 個漏洞(最高 HIGH),CVE-2026-111497(Brotli 越界寫 → RCE),修復版 v22.23.4 / v24.22.1 / v26.12.1
→ 寫成 05-事實核實清單.md,作為三件交付物的唯一事實來源清單裡每一條都掛著官方來源,未確認的數字被單獨列進「未確認項」,不進入任何對外材料。三件交付物後來共用這一份檔案——口徑只有一處,改一次就全對。
方案先拍板,才動手
事實底座有了,它沒有直接開寫,而是先把方案攤開:三件交付物的結構、驗收標準,外加五個需要你拍板的問題。你的回答只有三行。
1、一頁紙用pdf格式,且不要純文字
2、指令碼平台範圍覆蓋linux和windows
3、不納入憑證事件計畫模式先出方案 → 事實表把「已核實」與「未確認」分開列
→ 三件交付物逐件給結構與驗收:一頁紙六段式、SOP 按執行方式與發行版分節、指令碼「主動發現 → 判定 → 複核」
→ 同時拋出 5 項待確認:格式、指令碼平台範圍、是否納入憑證事件、單位環境、語言
→ 你回三行 → 鎖死 PDF 圖文 / Linux + Windows / 憑證只作背景
→ 順帶定下三條硬約束:單檔案自包含、零外部相依、退出碼可接自動化一次確認換掉了後面所有返工:格式、平台、範圍三條口徑落到方案裡,之後每個子 Agent 拿到的都是同一份約束,而不是各自的猜測。
給非技術讀者的那一頁
開工後的第一件交付物,讀者不看 CVE 編號——他只有三分鐘,要在一頁紙上看懂危不危險、要不要現在動。
第一向單位管理者(非網路安全專業)簡潔易懂、清晰明瞭的同步事件的危害程度、緊迫程度以爭取在內部發起重大緊急應變的支持,以單獨的一頁紙+單獨的一張圖方式探環境:weasyprint 69.0 + pango/cairo + Noto CJK 齊全 → 走 HTML→PDF→PNG 一條鏈
→ 先做資訊圖:A4 單頁 HTML(警示條 + 結論框 + 三張事實卡 + 時間線 + 兩欄建議)
→ 渲染後內容溢位到 2 頁 → 壓排版重寫 → 單頁 1323×1871px @160dpi,文字座標核實無溢位無重疊
→ 再做一頁紙:首版單頁但底部留白 67mm → 補「事件時間線」把版面放大
→ 結果撐到第 2 頁(min-height:78mm 過大)→ 收緊間距與字級重渲染
→ 單頁成立:內容到 291mm,與頁尾留 4mm 間隙「單頁」不是目測出來的:每一版都回到 PDF 裡量文字區塊座標——底部留白、末行落點、與頁尾的間隙,全是能報出來的數字。
兩路子 Agent 並行
剩下兩件交付物彼此不依賴,它把活同時派了出去,各自在一個隔離的上下文中做完。
第二需要輸出針對事件的面向一線維運人員提供專業嚴謹、經驗證的緊急應變操作說明sop,以指導開展修補工作,以html頁面方式(要求頁面中具備搜尋和索引功能);第三需要輸出一個配套的檢測檢查工具,以支撐維運人員在不了解系統軟體供應鏈組成的情況下發現存在的受影響版本,支撐維運人員修復漏洞後的複核工作,要求以python指令碼方式。兩個子 Agent 同時開工(上下文隔離,互不污染)
→ SOP:單檔案 980 行 47,631 位元組,內聯 CSS/JS,頂部即時搜尋 + 左側目錄錨點;按執行方式(FPM / mod_php / php-cgi / FrankenPHP / LiteSpeed)與發行版分節,每步給前置條件 → 命令 → 預期結果 → 回滾
→ 指令碼:單檔案 1,148 行 46,730 位元組,僅標準庫,預設唯讀,--dry-run 只印出不執行的命令
→ 指令碼自糾兩處誤判:dpkg 的 node* 模式命中 378 個 node-* 函式庫套件 → 收緊為執行時套件;npm / pm2 的 -v 是工具自身版本 → 改為定位同目錄 node 再探
→ SOP 自檢:html.parser 標籤配對 0 處未閉合,外部 http(s) 資源僅 3 條參考來源文字
→ 指令碼本機實掃:4 項受影響(Node.js 20.19.4 ×2、24.14.0、26.11.1),退出碼 1判定閾值全部來自事實清單:PHP 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12,Node 22.23.4 / 24.22.1 / 26.12.1;超出判定表範圍一律報「未知」,不猜。
換一個 Agent 來挑錯
三件交付物齊了。指令裡那句「專業嚴謹、經驗證」成了驗收口徑——它沒有自己說通過,而是另起了一個隔離上下文的評估 Agent。
面向一線維運人員提供專業嚴謹、經驗證的緊急應變操作說明sop派 assess 子 Agent 獨立評審 → 實際抓 php.net / nodejs.org 公告逐條比對
→ 三件交付物全部實跑:PyMuPDF 查 PDF、指令碼跑 --help / --dry-run / 預設掃描 / --baseline、解析 SOP 的 JS 與自包含性
→ 結論 0 阻塞,但挑出 3 處 SOP 與官方不符:CVE-2026-106070 / 106071 應為僅 26.x,CVE-2026-106072 漏了 22.x
→ 指出一頁紙把「無需認證」泛化到了 Node.js,「利用方法已公開流傳」強於事實來源
→ 定點修復:SOP 改 3 行發行線 + 補緩解項 + 修目錄錨點;一頁紙與資訊圖改措辭後重新渲染;指令碼把基線比對拆出「新增/回歸」與「探測退化」
→ 指令碼修復子 Agent 中途閘道 504 中斷 → 主 Agent 接手改邏輯,並補掉自己引入的 4 空格縮排錯誤
→ 複驗:PDF 單頁無溢位、PDF 文字中新措辭命中且舊措辭消失、compare_baseline 三個分支單測通過評審不是簽字:結論寫成「0 阻塞、3 處不一致」,每處指到行號和官方原文;改完再跑同一套檢查,才算收工。
親自檢測
下載會話 .zsession 匯入工作區可回放完整過程,或按順序貼上以下指令(把事件連結換成你手上的漏洞通告):
› 我是某單位的網路安全管理者,需要針對剛剛<事件公告連結> 發生的PHP及node.js重大漏洞這一事件進行緊急應變。我需要完成三件事情。第一向單位管理者(非網路安全專業)簡潔易懂、清晰明瞭的同步事件的危害程度、緊迫程度以爭取在內部發起重大緊急應變的支持,以單獨的一頁紙+單獨的一張圖方式;第二需要輸出針對事件的面向一線維運人員提供專業嚴謹、經驗證的緊急應變操作說明sop,以指導開展修補工作,以html頁面方式(要求頁面中具備搜尋和索引功能);第三需要輸出一個配套的檢測檢查工具,以支撐維運人員在不了解系統軟體供應鏈組成的情況下發現存在的受影響版本,支撐維運人員修復漏洞後的複核工作,要求以python指令碼方式。以上先做規劃,找我確認後再動手。 › 1、一頁紙用pdf格式,且不要純文字 › 2、指令碼平台範圍覆蓋linux和windows › 3、不納入憑證事件 - 第 1 步:<事件公告連結> 換成你手上的漏洞通告原文;三類交付物的讀者與載體按你的實際情況改。
- 第 2 步:三條約束是可替換的口徑——要 Word 或 PPT、只覆蓋 Linux、要把憑證事件單列,都寫在這三行裡。
- 第 3 步:一頁紙與資訊圖要出 PDF,先讓它探測本機的 HTML→PDF 工具鏈(本次為 weasyprint 69.0 + Noto CJK),再按可用路徑渲染。
- 第 4 步:按驗收口徑核對交付物——PDF 單頁無溢出、SOP 斷網可開且搜尋與目錄可用、指令碼 --dry-run 與實掃的退出碼符合預期。
下一個問題: 檢測指令碼已經能把存量版本翻出來了——怎麼把它接進映像建置流水線,讓未升級的 PHP / Node.js 在出廠前就被攔住?
