# 從 ModelCompare 到 PHP2Shell：發現、證明與修補的單位不同

> 12 個模型對人類的批評高度一致，PHP、Linux kernel、Node.js 同期出修補。說法一致、發現問題、證明問題、完成修補各算各的帳，把它們排成同一條證據鏈，每一件都會顯得比實際上更強。

原文：https://sheng.page/posts/model-consensus-and-patching/ · 發布：2026-10-23 · 作者：Sheng

十月中下旬，四份文件可以放在一起讀。ModelCompare 10 月 22 日問 12 個文字模型對人類最有爭議的看法，35 份有效回答裡 29 份歸成同一類；前一天 PHP Foundation 發布兩個核心 RCE 的修補並承認延遲是結構性失敗，Node.js 同天修了 Brotli 解碼器的越界寫入；再往前一週，Linux kernel 的 CVE-2026-99999 公開。這幾件事很容易串成一個故事，模型看穿人類，再替人類找漏洞。這篇要做的比較無聊：分清說法一致、發現問題、證明問題與完成修補各自能說明什麼。

## 一、輸出一致的上限

ModelCompare 向 12 個模型各問 3 次，提示詞要求給出最有爭議的看法，而且不保留，作者手動將每份回答的一句話主張分類，共同類別是人把歸屬、地位或自己的故事放在真相或原則之前，29/35 落入這一類。代表引文是 GPT-6.1 Sol 的「Humans are more loyal to belonging than to truth.」。

29 份同類不等於 29 個相同命題，從眾、地位競爭、自我形象、事後合理化是不同的心理機制，放進同一類是分類方式的選擇，也限制了這個數字能說明多少。提示詞要求爭議又不保留，可能較容易引出尖銳而熟悉的敘事，但這次沒有和其他提示詞比較。12 個模型也不能當成 12 個獨立證人，答案相近可能來自共享語料，也可能和訓練方法或評價偏好相近有關。作者結尾寫了「Both handed back the most familiar criticism in the room.」，並未把一致當真理。推論的界線也不能用「模型只是預測文字」一語帶過，命題仍可能成立，需要的是外部證據。

外部證據比這些說法複雜。Cohn 等人 2019 年在 Science 發表錢包實驗，在 40 國 355 個城市把 17,303 個錢包交給機構工作人員，沒放錢時 40% 的人聯絡失主，放入依購買力調整、相當於 13.45 美元的當地貨幣後升到 51%，40 國裡 38 國同方向。一般受訪者預測錢越多越少人聯絡失主，經濟學家的平均預測是沒錢和小額差不多、大額略低，兩組都沒料到會上升。研究者以問卷支持的解釋是，錢越多，不還越像偷，人不想把自己看成小偷，這和模型所說的自我敘事部分相容，只是在這個情境下，維護自我形象可能促使人誠實。Wood 與 Porter 2018 年以 5 個實驗找 backfire effect，涵蓋 10,100 多名受試者與 52 個議題，受測議題與意識形態群體都沒偵測到這個效應，約九成議題的平均回答準確度因更正而提高，更正自己陣營時反應較弱；作者也提醒，接受事實不等於記住或改變政策態度。錢包研究沒測歸屬和真相衝突時的選擇，反彈效應研究顯示事實信念多半仍會被更正，兩篇只能讓「人類普遍把歸屬放在真相前面」這類概括沒那麼確定，也不能反過來證明 Claude Opus 5.5 那句異見「Humans are far more decent than they believe they are...」是對的，善良同樣需要比較基準，這個模型也在受測名單裡。

順帶一個自我檢查的問題：相信大家都在自欺、只有自己看穿了，是否同樣提供一種舒服的身分認同？

## 二、跡象、回報與修補之間的時間差

PHP Foundation 把發現到修補的階段交代得很清楚。2024 年 Quarkslab 外部稽核後，Foundation 約聘的核心開發者修另一項問題時，看到 OOM 的初步跡象，當時「a potential exploit for the OOM problem was theorized, but no concrete vectors were found」。2026 年 8 月 11 日 Calif 回報同一根因，OpenAI 也「independently reported the same root cause」，原文沒寫日期，8 月 24 日 Wiz 回報另一條攻擊路徑，Foundation 說這些回報讓完整影響變得清楚，OOM 從 8 月 11 日起成為最高優先，10 月 21 日發布 8.5.12、8.4.27、8.3.36、8.2.35。

這條時間線很容易縮成「放著 RCE 兩年」，但 2024 年發現的是 OOM 問題，修法也討論過，只是沒找到具體的利用途徑，2026 年 8 月的回報才讓完整影響變得清楚。看到可疑狀態、重現記憶體破壞、證明特定條件下能執行程式碼，每一步增加的資訊不同，發現與證明之間沒有單一的分界。Foundation 自述，幾個修法可能破壞向後相容或帶來新的 DoS，也可能得改很多第三方 extension，共識式決策難做取捨，當時沒有已知 RCE 路徑，懂引擎的人又少又忙，因此停滯。原文稱「the delay was a structural failure, caused by both the security team's decision process and its lack of resources.」。這份自述談的是技術取捨與資源，不足以支持任何「歸屬優先於真相」的心理歸因。

Alpha-Omega 今年用 Anthropic 的 Claude Mythos 掃過 PHP，團隊後來加入 OpenAI 的 Daybreak Red 驗證回報與 exploit，但「a person makes every call and works on every patch.」。外部回報者用了多少 AI，原文沒說，二手整理的說法也不一，可能指不同工作階段，不足以判斷。Node.js 的 CVE-2026-111497 致謝「OpenAI Codex Security - Khai Tran and Sylvie Mayer」回報，由 mcollina 與 aduh95 修補，頁面未交代 Codex Security 是工具、團隊或兩者，致謝只能確認列名的分工。

## 三、評分、紀錄與實驗室各答各的問題

Linux 的 CVE-2026-99999，Red Hat 給 8.8，CVSS 3.1，Privileges Required: Low；CVE 紀錄上的 9.3 則是 Privileges Required: None，差在對攻擊者前提的假設。Red Hat 的描述是「A local attacker or untrusted guest virtual machine can exploit this vulnerability by transmitting network packets containing malformed checksum metadata into the IPv4 networking subsystem.」，IPv4 堆疊沒驗證 checksum metadata，畸形的 `checksum_start` 讓 `skb_checksum_help()` 越界寫入，這不等於任何網際網路封包都能接管 Linux。Red Hat 10 月 20 日已發 RHEL 9 修補，發行版常 backport，不能只比上游版本號。利用紀錄上，Red Hat 頁面寫「Red Hat tracks this flaw as a KEV active-exploit case.」，The Hacker News 10 月 15 日說不在 CISA KEV 也未見利用，兩個說法的時間不同，我沒能在 CISA 的目錄確認，不能直接說誰錯。漏洞在 Vercel 8 月的 sandbox 挑戰中找到，Vercel 自己的說明是，正式 sandbox 上示範的是 host 記憶體隨 guest 送出的封包外洩，當機與以管理者權限執行程式碼則在研究者自己仿照 Vercel 設定的 KVM 與 Firecracker 機器上示範，沒有任何回報顯示有人存取到客戶資料。成功範圍需要交代，沒打正式環境也不等於沒證明。修補作者 Michael S. Tsirkin 在 commit 裡寫這是「a defence in depth measure」，「A more complete validation at input is forthcoming, but needs more work.」，這不表示現有修補無效。

PHP2Shell 方面，AWS 說 MadPot 蜜罐 10 月 17 日就有利用嘗試，且「PHP2Shell is now seeing broad exploitation attempts in the wild.」，同一篇也說「it’s unclear if any of these attempts would have succeeded in real-world systems」，Rapid7 說自己未觀察到在野利用、公開 PoC 不太可靠，PHP 團隊檢查外洩後出現的 PoC，「did not identify any functional exploits at the time of release/public disclosure」。10 月 17 日的嘗試早於外洩，不能歸因於外洩。漏洞存在、可利用、公開 PoC、研究環境成功、已遭實際攻擊，這五件事各有各的證據，本文所列來源都未確認研究示範以外的成功入侵或資料外洩。CVSS 同時評估利用條件與影響，KEV 收錄已知遭利用的漏洞，清單並不完整，實驗室 exploit 示範的是特定條件下的結果，這些資料不會自動排成越來越強的證據鏈。

## 四、衡量壓力轉移需要的資料

回頭看這四件事，回答的分類方式、漏洞成立的條件得分開確認，修補還要查明是否發布與部署。這幾個案例的來源提到 AI 時，都是在發現與驗證，AI 寫出有漏洞的程式碼是另一個問題，這些來源沒談。

常見說法是 AI 降低發現與寫報告的成本，壓力因此移到驗證、去重與修補。PHP Foundation 描述自己加人、加 AI 驗證，並改成可以多數決，這不足以證明成本下降或瓶頸轉移，本文查到的資料也未量化這些變化，只能說既有維護能力要承接更多回報。curl 先被 AI 產生的低品質回報淹沒，後來又合併了約 50 個 AI 協助找到的修正（見〈[AI code review 的帳怎麼算：找到的 bug、誤報和人的時間](/posts/ai-code-review-cost-benefit/)〉），負擔與收穫可以出現在同一個專案。要檢驗這個主張，至少需要回報量、重複率、驗證時間、從回報到發布的時間，比較導入 AI 前後的同類回報，並交代人力與流程變動。CVE 數量上升本身也不能直接當成品質惡化，檢查密度與揭露方式改變都會推高它。

我的推論是，一般團隊更值得先確認的，是一個失敗的測試、一條 review 裡的反對意見，或一份只重現到記憶體破壞的回報，在自己的流程裡要累積到多少證據才會改變排程。PHP Foundation 改的是停滯時怎麼做決定，這和證據門檻相關，但不是同一件事。

## 補充筆記

- ModelCompare 的 29/35 是手動分類加上特定提示詞的結果，能說明輸出一致，不能說明 12 個獨立證人同意同一個命題。
- 錢包實驗與反彈效應研究只能讓「人類普遍把歸屬放在真相前面」這類概括沒那麼確定，不能反過來證明人類善良。
- PHP Foundation 的時間線裡，2024 年已發現 OOM 問題但沒有具體利用途徑，2026 年 8 月的回報讓完整影響清楚，停滯是取捨機制與人力的問題。
- CVE-2026-99999 的評分差在攻擊者前提，KEV 的兩種說法時間不同、還沒核對，正式環境只示範了記憶體外洩，這三件事各自回答不同問題。
- PHP2Shell 在蜜罐上有大量利用嘗試，所列來源都未確認研究示範以外的成功入侵。
- AI 在這些案例裡出現在發現與驗證，修補仍由人決定、由組織交付；壓力是否移到驗證與修補，要有回報量與處理時間的資料才能回答。

## 延伸閱讀

- ModelCompare〈[Every AI model has the same 'controversial' take on humans](https://www.modelcompare.ai/blog/ai-models-controversial-take-on-humans)〉：29/35 的分類結果、提示詞、代表引文與作者結尾的自述。無個人署名、手動分類，沒有估計模型間獨立性或提示詞效果的比較設計。
- Cohn、Maréchal、Tannenbaum 與 Zünd〈[Civic honesty around the globe](https://davetannenbaum.github.io/documents/Cohn2019.pdf)〉，Science 365 (2019)：錢包回報率隨金額上升、預測錯誤與自我形象解釋。同儕審查的大型田野實驗，只涵蓋特定情境。
- Wood 與 Porter〈[The Elusive Backfire Effect](https://gwern.net/doc/psychology/cognitive-bias/2018-wood.pdf)〉，Political Behavior (2018)：事實更正普遍沒有反彈，事實信念與政策態度要分開。作者自己把記憶與態度改變排除在結論外。
- PHP Foundation〈[Today's PHP security release and how we're strengthening PHP security](https://thephp.foundation/blog/2026/10/21/todays-php-security-release-and-how-were-strengthening-php-security/)〉：兩個 CVE、時間線、停滯原因、AI 驗證角色、改革措施與揭露經過。第一手官方自述，原因歸納是當事人立場。
- AWS Security Blog〈[Amazon Threat Intelligence identifies PHP2Shell exploitation prior to public disclosure in MadPot](https://aws.amazon.com/blogs/security/amazon-threat-intelligence-identifies-php2shell-exploitation-prior-to-public-disclosure-in-madpot/)〉：10 月 17 日起的蜜罐利用嘗試，以及這些嘗試能否在真實系統成功仍不確定的說明。廠商第一手觀測，10 月 22 日修改過措辭。
- Rapid7〈[CVE-2026-109618 and CVE-2026-109619: Critical Unauthenticated Remote Code Execution in PHP](https://www.rapid7.com/blog/post/etr-cve-2026-109618-and-cve-2026-109619-critical-unauthenticated-remote-code-execution-in-php/)〉：Rapid7 未觀察到在野利用、公開 PoC 可靠度有限。資安廠商分析。
- Red Hat〈[CVE-2026-99999](https://access.redhat.com/security/cve/cve-2026-99999)〉與〈[RHSA-2026:86033](https://access.redhat.com/errata/RHSA-2026:86033)〉：攻擊前提、8.8 評分、KEV active-exploit 標記，以及 RHEL 9 於 10 月 20 日的修補。官方頁面，KEV 標記和較早的新聞報導時間不同，無法直接比較。
- The Hacker News〈[Critical PwnEscape Linux Kernel Vulnerability Lets Guest VMs Read Host Memory](https://thehackernews.com/2026/10/critical-pwnescape-linux-kernel.html)〉：10 月 15 日的報導，9.3 的分數與當時不在 CISA KEV 的說法。媒體整理，時效受限。
- Vercel〈[Findings from the $1M Vercel Sandbox challenge](https://vercel.com/blog/findings-from-the-1-million-dollar-vercel-sandbox-challenge)〉：正式 sandbox 與研究者實驗機器各示範了什麼，以及沒有回報顯示客戶資料遭存取的說明。平台方第一手說明，未列 CVE 編號。
- Linux kernel commit〈[ipv4: validate checksum_start before completing checksum](https://github.com/torvalds/linux/commit/6785011f8b16abf40b1e9d8b2e332232b3e68822)〉：修補本身與「defence in depth」、更完整驗證仍待完成的說法。
- Node.js〈[Wednesday, October 21, 2026 Security Releases](https://nodejs.org/en/blog/vulnerability/october-2026-security-releases)〉：CVE-2026-111497、受影響與修補版本、致謝原文。官方，未給 CVSS 與利用狀態。
- DEV Community〈[PHP vulnerability PHP2Shell: what the October 21 emergency release fixed and what is still disputed](https://dev.to/axrisi/php-vulnerability-php2shell-what-the-october-21-emergency-release-fixed-and-what-is-still-disputed-36jn)〉：發現者對 AI 角色說法不一的二手整理，原始發言未核對，可信度低。

> 想法與技術判斷出自 Sheng，和 Claude 一起起草 · 公開資料查閱至 2026 年 10 月 23 日。