パーマカルチャーの実践としてのMOADスキャナー
パーマカルチャーの第一原則:行動する前に観察する。変えたいシステムの中で時間を過ごす。介入を設計する前に、その流れ、蓄積、廃棄物の流れを理解する。水が溜まる場所、日光が当たる場所、栄養が集中する場所を観察する庭師は、定型的な計画に従う庭師よりも効果的に植物を配置できる。
MOADスキャナーはこの原則をソフトウェアエコシステムに適用する。1つのイシューを提出する前に、プロジェクトや言語を横断してスキャンする。欠陥の分布をマッピングする:CWE-407を保持しているプロジェクトは何件か?高トラフィックのパスで保持しているのはどれか?上流のパッケージをパッチすれば、最も多くの依存先に修正を伝播できるのはどれか?単一のノードに作用する前に、エコシステムを観察する。
これを搾取的な実践と対比する:脆弱性を発見し、脆弱性ブローカーに売却し、報酬を受け取り、去る。研究者は知識から金銭的資本を抽出して立ち去った。知識は伝播せず、システムは改善されない。影響を受けたすべてのプロジェクトの将来のユーザーは依然として脆弱なまま。ブローカーは知識を保持し、脆弱性が開示されずに古くなるにつれてその価値は減衰していく。
Permacomputer の実践:欠陥を発見し、パッチを当て、開示し、上流に提出し、パッチをパブリックドメインとしてリリースする。知識は減衰せずに伝播し、むしろ複利的に増大する。開示された CVE は参照となり、MOAD の投稿はパターンを教え、将来の研究者は同じパターンを使って新しい事例を発見する。終端的な抽出ではなく、閉じたループである。
パーマカルチャーでは、観察が行動に先立つ。スキャンは、パッチが適用される前に、サージスコア、依存グラフ、影響を受けるノード数に関するデータを生成する。このデータは、どのパッチを最初に適用するかを決定する。高媒介性ノードをリーフノードより先に修正する。なぜなら、広く依存されているライブラリへの修正は、単位努力あたりの伝播範囲が大きいからである。
無駄を生み出さない:3つの開示経路
人気のオープンソースライブラリで重大な脆弱性を発見した後、研究者が取り得る3つの経路:
A. 脆弱性ブローカーに $10,000 で売却する。
B. 90日の開示タイムラインを伴ってメンテナに非公開で報告し、パッチの有無にかかわらず公開する。
C. プルリクエストとしてパッチを即座に提出し、同時に公開開示を行う。
オープンシステムにおける複利
パーマカルチャーの第二原則:エネルギーが豊富に流れるときに捕らえて蓄え、不足するときに備える。雨水貯留システムは、嵐の間に水を蓄えて乾季に使う。食料林は太陽エネルギーを果実やバイオマスとして季節を超えて蓄える。目標は、蓄積のタイミングを豊かさのタイミングに合わせることである。
ハミングの複合知識:新しい技法はそれぞれ、あなたの重要問題リストに結びつき、生産的な出力を増幅する。シャノンにとって、情報エントロピーに関する一つの洞察は、リスト上のすべての未解決の問題に同時に結びついたため、10年にわたる理論的研究を解き放った。蓄えられた知識は複利を生んだ。
オープンソースの複利は、個人の複利とは異なる仕組みで機能する。公式リポジトリにマージされた修正は、すべてのダウンストリームフォークが自動的にその恩恵を受けられる場所にエネルギーを蓄積する。2022年にPythonのasyncioライブラリに提出されたパッチは、元の研究者が追加の作業をしなくても、そのライブラリを使用するすべてのプロジェクトに伝播した。エネルギーはソースに蓄積され、依存関係グラフを通じて複利的に増大する。
MOAD記事はエネルギーを異なる方法で蓄積する。各投稿は特定の事例を単に開示するのではなく、スキャンパターンを教える。CWE-407のMOAD記事を読んだ研究者は、Project Xにフラッシュ脆弱性があったことだけでなく、あらゆる言語におけるフラッシュパターンの外観、検索方法、良性コードとの区別方法を学ぶ。将来の研究者は、保存されたパターンを使って新しい事例を発見し、ゼロから再発見する必要がない。
エネルギーの蓄積メカニズムは、エネルギー自体と同じくらい重要である。プライベートノートブックに保存された知識は、ノートブックの所有者だけに複利的に作用する。パブリックリポジトリに保存された知識は、それを読むすべての人に複利的に作用する。CVEデータベースに保存された知識は、セキュリティスキャナーを実行するすべての人に複利的に作用する。各保存場所には異なる複利特性がある。
Issue Trackers & Personal Problem Lists
Hammingは繰り返し立ち返る10個の重要な問題のリストを保持していた。そのリストは、新しい手法がそれらの問題のいずれかを解決したときに認識するための準備を整えていた。彼のリストは個人的な蓄積エネルギーとして機能した。新しい手法が登場するたびに配当をもたらす、パターンマッチングへの耐久性のある投資だった。
閉じたシステムとしてのMOADループ
パーマカルチャー:よく設計されたシステムでは、あるプロセスの出力が別のプロセスの入力になる。出力が廃棄物としてシステム外に出ることはない。食の森の中の鶏は、卵(食料)、ふん(肥料)、害虫駆除(サービス)、土を掻き回すこと(土壌の通気)などを生み出す。それぞれの出力は、システムから出ていくのではなく、下流のプロセスへとつながっていく。
MOADのファクトリーモデルは、同様の閉じたループを構築する。各段階は次の段階にフィードする出力を生み出す:
Scan が生み出すもの:確認済みの欠陥インスタンス、影響を受けるノードの位置マップ、媒介中心性とトラフィックに基づく深刻度推定。
Patch が生み出すもの:コード修正、修正を確認するユニットテスト、メンテナーがレビュー可能なdiff。
MOAD post produces: パブリックドメインの記事で、欠陥クラス、スキャンパターン、および修正アプローチを説明する。単一の事例を超えて持続する知的資本。
CVE disclosure produces: NVDにおける標準化された記録で、影響を受けるすべてのインストールに対して自動セキュリティスキャナーを起動する。セキュリティコミュニティのための社会的資本。
Upstream PR produces: 正規ソースにおける修正で、依存関係の次回更新時にすべてのダウンストリームフォークに自動的に伝播する。
各出力はフィードバックする: MOAD postは研究者に新しい事例を見つける方法を教え、それが新しいスキャンを生み出す。ユニットテストは回帰ガードとなる。CVE記録は、パッチを無視する可能性のある運用チームによるパッチの採用を促進する。ループは閉じる。
停止条件: 下流の容量を確認せずにパッチを開示すると、キューが溢れる。MOAD-0001とMOAD-0005は結合する: 高媒介性ノードでO(N²)を修正すると、すべての下流プロセッサが同時に溢れる。パーマカルチャーの「システム全体を設計する」原則もここに適用される: コンポーネントを最適化すると、下流に新たなボトルネックが生じる可能性がある。
Mapping Outputs to Capital
A MOAD pipeline produces five outputs: a scan result, a patch, a MOAD post, a CVE disclosure, & an upstream PR.