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

un

гость
1 / ?
назад к урокам

A MOAD Scanner as Permaculture Practice

Первый принцип пермакультуры: наблюдай, прежде чем действовать. Проведи время в системе, которую хочешь изменить. Пойми её потоки, накопления и потоки отходов, прежде чем разрабатывать вмешательство. Садовник, который наблюдает, где скапливается вода, куда попадает солнце и где концентрируются питательные вещества, размещает растения эффективнее, чем тот, кто следует универсальному плану.

Сканер MOAD применяет этот принцип к экосистемам ПО. Прежде чем создать хотя бы одну задачу, просканируй проекты и языки. Составь карту распределения дефекта: сколько проектов содержат CWE-407? В каких из них он находится на высоконагруженных путях? Какие upstream-пакеты, будучи исправленными, распространят исправление на наибольшее число зависимых проектов? Наблюдай экосистему, прежде чем действовать на отдельном узле.

Permaculture Applied to Code: scan 2192 store 2192 patch 2192 disclose 2192 loop

Сравни это с практикой извлечения: обнаружил уязвимость, продал её брокеру уязвимостей, получил оплату и ушёл. Исследователь извлёк финансовый капитал из знания и ушёл. Знание не распространилось. Система не улучшилась. Будущие пользователи всех затронутых проектов остались уязвимыми. Брокер хранит знание, которое теряет ценность по мере устаревания уязвимости без раскрытия.

Практика пермакомпьютера: обнаружить дефект, исправить его, раскрыть, отправить upstream, выпустить патч как общественное достояние. Знания распространяются без потерь — более того, они накапливаются: раскрытый CVE становится ориентиром, пост MOAD демонстрирует паттерн, будущие исследователи находят новые случаи по тому же паттерну. Замкнутый цикл вместо конечного извлечения.

Наблюдение в пермакультуре предшествует действию. Сканирование генерирует данные о surge scores, графах зависимостей и количестве затронутых узлов до того, как будет применён какой-либо патч. Эти данные определяют, какие патчи выпускаются первыми: узлы с высокой betweenness — раньше листовых узлов, потому что исправление широко используемой библиотеки даёт больший эффект на единицу усилий.

Производи без отходов: Три пути раскрытия

Три пути, которые может выбрать исследователь после обнаружения критической уязвимости в популярной open-source библиотеке:

A. Продать её брокеру уязвимостей за $10 000.

B. Сообщить о ней приватно мейнтейнеру с 90-дневным сроком раскрытия, а затем опубликовать независимо от статуса патча.

C. Немедленно отправить патч как pull request с одновременным публичным раскрытием.

Примените принцип пермакультуры «производи без отходов» для оценки каждого варианта. Определите, какие выходы создаёт каждый путь, куда они направляются и какие выходы покидают систему как отходы (неиспользованная энергия, не приносящая пользы никому).

Компоновка в открытых системах

Второй принцип пермакультуры: лови и храни энергию, когда она течёт в изобилии, чтобы у тебя были запасы, когда её нет. Система сбора дождевой воды хранит воду во время ливней для использования в сухие месяцы. Пищевой лес хранит солнечную энергию в виде плодов и биомассы через сезоны. Цель: согласовать время хранения со временем изобилия.

Компоновка знаний по Хэммингу: каждая новая техника соединяется со списком важных проблем, умножая продуктивный результат. Одна идея об информационной энтропии, по Шеннону, открыла десятилетие теоретической работы, потому что она одновременно соединилась со всеми открытыми вопросами из его списка. Сохранённое знание принесло сложный процент.

Open-source compounding работает иначе, чем индивидуальное. Фикс, влитый в канонический репозиторий, сохраняет энергию там, где каждый downstream-форк автоматически её использует. Патч, отправленный в библиотеку Python asyncio в 2022 году, распространился на все проекты, использующие эту библиотеку, без дополнительных действий со стороны оригинального исследователя. Энергия хранится в источнике и умножается через граф зависимостей. [BLOCK_TYPE SECTION/STEP]

Статьи MOAD хранят энергию иначе: каждая публикация учит паттерну сканирования, а не просто раскрывает конкретный случай. Исследователь, прочитавший статью MOAD по CWE-407, узнаёт не только о том, что в проекте X была уязвимость flush, но и как выглядит паттерн flush на любом языке, как его искать и как отличать от похожего, но безопасного кода. Будущие исследователи находят новые случаи, используя сохранённый паттерн, а не открывая его заново с нуля. [BLOCK_TYPE SECTION/STEP]

Механизм хранения энергии важен не меньше самой энергии. Знания, хранящиеся в личном блокноте, умножаются только для владельца блокнота. Знания, хранящиеся в публичном репозитории, умножаются для всех, кто их читает. Знания, хранящиеся в базе CVE, умножаются для всех, кто запускает сканер безопасности. Каждое место хранения обладает разными характеристиками умножения. [BLOCK_TYPE SECTION/STEP]

Issue-трекеры и личные списки проблем [BLOCK_TYPE SECTION/STEP]

Хэмминг вёл список из 10 важных проблем, к которым возвращался снова и снова. Этот список помогал ему замечать, когда новая техника решает одну из них. Его список работал как личная сохранённая энергия: долговременная инвестиция в распознавание паттернов, которая приносила дивиденды каждый раз, когда появлялась новая техника. [BLOCK_TYPE SECTION/STEP]

Как issue-трекер open-source-проекта выполняет похожую функцию, как личный список из 10 проблем Хэмминга? Чем он отличается? Назовите хотя бы одно преимущество issue-трекера перед личным списком и хотя бы одно преимущество личного списка перед issue-трекером. [BLOCK_TYPE SECTION/STEP]

Цикл MOAD как замкнутая система

Пермакультура: в хорошо спроектированной системе выход одного процесса становится входом другого. Никакой выход не покидает систему в виде отходов. Курица в пищевом лесу производит яйца (пища), помёт (удобрение), контроль вредителей (услуга) и рыхление (аэрация почвы). Каждый выход направляется в следующий процесс, а не покидает систему.

Фабричная модель MOAD строит аналогичный замкнутый цикл. Каждый этап производит выходы, которые питают следующий:

Scan производит: подтверждённый экземпляр дефекта, карту расположения затронутых узлов, оценку серьёзности на основе betweenness и трафика.

Patch производит: исправление кода, модульный тест, подтверждающий исправление, diff, доступный для ревью мейнтейнерами.

MOAD post produces: статья в общественном достоянии, объясняющая класс дефекта, паттерн сканирования и подход к исправлению. Интеллектуальный капитал, сохраняющийся дольше любой отдельной инстанции.

CVE disclosure produces: стандартизированная запись в NVD, запускающая автоматические сканеры безопасности на всех затронутых установках. Социальный капитал для сообщества безопасности.

Upstream PR produces: исправление в каноническом источнике, автоматически распространяющееся на все форки при следующем обновлении зависимостей.

Каждый выходной продукт замыкает цикл: MOAD-пост учит исследователей находить новые экземпляры, что порождает новые сканирования. Юнит-тест становится защитой от регрессий. Запись CVE стимулирует применение патча командами эксплуатации, которые иначе могли бы его проигнорировать. Цикл замыкается.

Условие остановки: патч, раскрытый без подтверждения пропускной способности downstream, затопляет очередь. MOAD-0001 и MOAD-0005 связаны: исправление O(N²) на узле с высокой betweenness приводит к одновременному затоплению всех downstream-процессоров. Принцип пермакультуры «проектируй для всей системы» применим и здесь: оптимизация компонента может создать новый bottleneck downstream.

Mapping Outputs to Capital

A MOAD pipeline produces five outputs: a scan result, a patch, a MOAD post, a CVE disclosure, & an upstream PR.

Map each output to the capital form it primarily grows. Then identify which single step, if removed, would produce the most 'waste' — the most unrouted energy in the system — and explain why.