English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

guest
1 / ?
back to lessons

MOAD 掃描器作為永續農業實踐

永續農業的第一原則:在行動前先觀察。花時間待在你想改變的系統中。在設計介入方案之前,先了解其流動、累積與廢棄物流。比起遵循通用計畫,觀察水流匯聚處、日照到達處與養分集中處的園丁,能更有效地種植植物。

MOAD 掃描器將此原則應用於軟體生態系統。在提交任何單一問題之前,先掃描跨專案與跨語言的範圍。繪製缺陷的分佈圖:有多少專案帶有 CWE-407?哪些專案將其置於高流量路徑中?哪些上游套件若被修補,會將修正傳播給最多依賴者?在對任何單一節點採取行動前,先觀察生態系統。

永續農業應用於程式碼:掃描 2192 儲存 2192 修補 2192 揭露 2192 循環

與榨取式實踐形成對比:發現漏洞、將其出售給漏洞仲介商、收取報酬,然後離開。研究人員從知識中提取財務資本後離開。沒有知識傳播,系統也未改善。所有受影響專案的未來使用者仍處於脆弱狀態。仲介商持有知識,而隨著漏洞在未揭露的情況下老化,其價值逐漸衰退。

永續電腦實踐:發現缺陷、修補它、揭露它、提交上游、將修補程式釋出為公有領域。知識傳播而不衰減——事實上,它會累積:被揭露的 CVE 成為參考,MOAD 文章教導模式,未來研究者能用相同模式找到新實例。這是一個封閉迴路,而非終端提取。

永續農業的觀察先於永續農業的行動。掃描會在任何修補程式移動前,產生關於突波分數、依賴圖與受影響節點數量的資料。這些資料決定哪些修補程式優先發佈:高中介中心性節點優先於葉節點,因為修復一個被廣泛依賴的函式庫,每單位努力能傳播得更遠。

產生零廢棄:三種揭露路徑

研究者在發現熱門開源函式庫中的關鍵漏洞後,可採取的三種路徑:

A. 以 10,000 美元賣給漏洞經紀商。

B. 私下向維護者回報,並設定 90 天揭露時程,之後無論修補程式狀態如何皆公開。

C. 立即以拉取請求提交修補程式,並同時公開揭露。

運用永續農業原則「產生零廢棄」評估每個選項。辨識每條路徑產生的輸出、這些輸出流向何處,以及哪些輸出離開系統成為廢棄(未被導引、對任何人皆無益的能量)。

開放系統中的複利知識

永續設計的第二原則:當能量豐沛流動時捕捉並儲存,以便在不足時有備用。雨水收集系統在暴雨期間儲存水源,供乾旱月份使用。食物森林將太陽能以果實與生物質的形式跨季節儲存。目標:使儲存時機與豐沛時機相匹配。

Hamming 的複利知識:每項新技術都與你列出的重要問題連結,進而倍增產出。Shannon 關於資訊熵的單一洞見,同時連結了他清單上的每個開放問題,因而解鎖了十年的理論工作。這些儲存的知識支付了複利。

開源的複利運作方式與個人複利不同。合併到正典儲存庫的修正,會將能量儲存在一個地方,讓每一個下游分支都能自動從中汲取。2022 年提交到 Python asyncio 函式庫的修補程式,會在無需原始研究者額外操作的情況下,傳播到所有使用該函式庫的專案。能量儲存在源頭,並透過依賴圖進行複利累積。

MOAD 文章以不同的方式儲存能量:每一篇文章教導的是掃描模式,而非僅揭露特定實例。閱讀 CWE-407 MOAD 文章的研究者,不僅會知道專案 X 曾有 flush 漏洞,還會了解 flush 模式在任何語言中的樣貌、如何搜尋它,以及如何將它與良性相似程式碼區分開來。未來的研究者可利用已儲存的模式找出新實例,而無需從頭重新發現。

能量儲存機制與能量本身同等重要。儲存在私人筆記本中的知識,只會為筆記本擁有者複利。儲存在公開儲存庫中的知識,則會為每一位閱讀者複利。儲存在 CVE 資料庫中的知識,則會為每一位執行安全掃描器的人複利。每個儲存位置都有不同的複利特性。

Issue Trackers 與個人問題清單

Hamming 保留了一份包含 10 個重要問題的清單,並反覆回顧。這份清單讓他能辨識出新技術何時解決了其中一個問題。他的清單發揮了個人儲存能量的功能:這是一項持久的模式匹配投資,每當新技術出現時,都能帶來回報。

開源專案的 issue tracker 如何發揮類似 Hamming 個人 10 個問題清單的功能?它們有何不同?請至少指出 issue tracker 相對於個人清單的一項優勢,以及個人清單相對於 issue tracker 的一項優勢。

作為封閉系統的 MOAD 迴路

永續設計:在設計良好的系統中,一個過程的輸出會成為另一個過程的輸入。沒有任何輸出會以廢棄物的形式離開系統。食物森林中的雞會產出蛋(食物)、糞便(肥料)、害蟲控制(服務)以及抓地(土壤通氣)。每一項輸出都會導向下游過程,而非離開系統。

MOAD 工廠模型建立類似的封閉迴路。每個階段產生的輸出都會餵入下一個階段:

掃描 產生:已確認的缺陷實例、受影響節點的位置圖、基於中介中心性與流量的嚴重程度估計。

修補 產生:程式碼修正、確認修復的單元測試、可供維護者審查的 diff。

MOAD 文章 產生:一篇公眾領域的文章,說明缺陷類別、掃描模式,以及修復方法。這是超越單一案例而持續存在的智力資本。

CVE 揭露 產生:一份標準化的 NVD 紀錄,觸發所有受影響安裝的自動化安全掃描器。這是安全社群的社會資本。

上游 PR 產生:正規來源中的修復,會在下游分支下次更新依賴時自動傳播。

每項輸出都會回饋:MOAD 文章教導研究人員發現新案例,進而產生新的掃描。單元測試成為回歸防護。CVE 紀錄促使運維團隊採用修補程式,否則他們可能忽略此問題。循環就此閉合。

停止條件:若在未確認下游容量時揭露修補程式,會使佇列氾濫。MOAD-0001 與 MOAD-0005 結合:修復高中介性節點的 O(N²) 問題,會導致所有下游處理器同時氾濫。永續設計的「為整體系統設計」原則在此同樣適用:最佳化元件可能在下游產生新的瓶頸。

將輸出對應至資本

MOAD 管線產生五種輸出:掃描結果、修補程式、MOAD 文章、CVE 揭露,以及上游 PR。

將每項輸出對應至其主要成長的資本形式。接著找出若移除哪一個單一步驟,會產生最多的「浪費」——系統中最未被導引的能量——並說明原因。