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

un

게스트
1 / ?
수업 목록으로

퍼머컬처 실천으로서의 MOAD 스캐너

퍼머컬처의 첫 번째 원칙: 행동하기 전에 관찰하라. 변화시키고자 하는 시스템 안에서 시간을 보내라. 개입을 설계하기 전에 그 흐름, 축적, & 낭비 흐름을 이해하라. 물이 고이는 곳, 햇빛이 닿는 곳, & 영양분이 모이는 곳을 관찰하는 정원사는 일반적인 계획을 따르는 정원사보다 더 효과적으로 식물을 배치한다.

MOAD 스캐너는 이 원칙을 소프트웨어 생태계에 적용한다. 단 하나의 이슈를 등록하기 전에, 프로젝트와 언어 전반을 스캔하라. 결함의 분포를 매핑하라: CWE-407을 얼마나 많은 프로젝트가 가지고 있는가? 어느 것이 높은 트래픽 경로에 이를 가지고 있는가? 패치된다면 어느 상류 패키지가 가장 많은 의존 항목에 수정을 전파할 것인가? 단일 노드에 행동하기 전에 생태계를 관찰하라.

코드에 적용된 퍼머컬처: 스캔 2192 저장 2192 패치 2192 공개 2192 반복

이를 추출적 실천과 대조하라: 취약점을 발견하고, 취약점 브로커에게 판매하고, 대금을 받고, 넘어간다. 연구자는 지식에서 재정 자본을 추출하고 떠났다. 어떤 지식도 전파되지 않았다. 어떤 시스템도 개선되지 않았다. 영향을 받는 모든 프로젝트의 미래 사용자들은 취약한 채로 남았다. 브로커는 지식을 보유하며, 그 가치는 취약점이 공개 없이 오래될수록 감소한다.

퍼마컴퓨터 실천: 결함을 발견하고, 패치하고, 공개하고, 상류에 제출하고, 패치를 공공 도메인으로 배포한다. 지식은 손실 없이 전파되며, 실제로 복리로 성장한다: 공개된 CVE는 참조 자료가 되고, MOAD 게시물은 패턴을 가르치며, 미래의 연구자들은 같은 패턴을 사용하여 새로운 사례를 발견한다. 종단적 추출이 아닌 닫힌 반복 구조.

퍼머컬처 관찰은 퍼머컬처 행동에 선행한다. 스캔은 어떤 패치가 움직이기 전에 서지 점수, 의존성 그래프, & 영향을 받는 노드 수에 대한 데이터를 생성한다. 이 데이터는 어떤 패치를 먼저 출시할지를 결정한다: 리프 노드보다 높은 매개 중심성 노드를 먼저, 왜냐하면 널리 의존되는 라이브러리에 대한 수정은 노력 단위당 더 멀리 전파되기 때문이다.

낭비를 만들지 않기: 세 가지 공개 경로

연구자가 인기 있는 오픈소스 라이브러리에서 심각한 취약점을 발견한 후 취할 수 있는 세 가지 경로:

A. 취약점 브로커에게 $10,000에 판매한다.

B. 90일 공개 일정으로 유지 관리자에게 비공개 보고 후, 패치 상태와 관계없이 공개한다.

C. 즉시 풀 리퀘스트로 패치를 제출하면서 동시에 공개적으로 공개한다.

퍼머컬처 원칙 '낭비를 만들지 않기'를 각 옵션 평가에 적용하라. 각 경로가 만들어내는 출력이 무엇인지, 그 출력이 어디로 가는지, & 어떤 출력이 낭비로서 시스템을 떠나는지(누구에게도 도움이 되지 않는 방향 없는 에너지) 식별하라.

열린 시스템에서의 복리 성장

퍼머컬처의 두 번째 원칙: 에너지가 풍부하게 흐를 때 포획하고 저장하여 그렇지 않을 때를 위한 비축량을 확보하라. 빗물 포획 시스템은 폭풍 동안 물을 저장하여 건조한 달에 사용한다. 식량 숲은 계절에 걸쳐 태양 에너지를 과일과 바이오매스로 저장한다. 목표: 저장 시기를 풍요의 시기와 맞춰라.

해밍의 복리 지식: 모든 새로운 기술은 중요한 문제 목록과 연결되어 생산적 출력을 배가시킨다. 정보 엔트로피에 대한 단 하나의 통찰이 섀넌에게 10년간의 이론적 작업을 열어주었다. 왜냐하면 그것이 그의 목록에 있는 모든 미해결 질문과 동시에 연결되었기 때문이다. 저장된 지식은 복리 이자를 지불했다.

오픈소스 복리 성장은 개인적 복리 성장과 다르게 작동한다. 정식 저장소에 병합된 수정은 모든 하류 포크가 자동으로 그것으로부터 가져오는 장소에 에너지를 저장한다. 2022년에 Python의 asyncio 라이브러리에 제출된 패치는 원래 연구자의 추가 조치 없이 그 라이브러리를 사용하는 모든 프로젝트에 전파되었다. 에너지는 소스에 저장되고 의존성 그래프를 통해 복리로 성장한다.

MOAD 기사는 에너지를 다르게 저장한다: 각 게시물은 특정 사례만 공개하는 것이 아니라 스캔 패턴을 가르친다. CWE-407 MOAD 기사를 읽는 연구자는 프로젝트 X에 플러시 취약점이 있었다는 것만이 아니라, 어떤 언어에서든 플러시 패턴이 어떻게 생겼는지, 어떻게 검색하는지, & 양성 유사 코드와 어떻게 구별하는지를 배운다. 미래의 연구자들은 기본 원칙부터 재발견하는 대신 저장된 패턴을 사용하여 새로운 사례를 찾는다.

에너지 저장 메커니즘은 에너지 자체만큼 중요하다. 개인 노트에 저장된 지식은 노트 소유자에게만 복리로 성장한다. 공개 저장소에 저장된 지식은 그것을 읽는 모든 사람에게 복리로 성장한다. CVE 데이터베이스에 저장된 지식은 보안 스캐너를 실행하는 모든 사람에게 복리로 성장한다. 각 저장 위치는 서로 다른 복리 특성을 가진다.

이슈 트래커 & 개인 문제 목록

해밍은 반복적으로 돌아오던 10가지 중요한 문제 목록을 유지했다. 그 목록은 새로운 기술이 그 중 하나를 다루는 때를 인식하도록 그를 준비시켰다. 그의 목록은 개인적인 저장 에너지로 기능했다: 새로운 기술이 나타날 때마다 배당금을 지급하는 패턴 매칭에 대한 내구성 있는 투자.

오픈소스 프로젝트의 이슈 트래커는 해밍의 개인적인 10가지 문제 목록과 유사한 기능을 어떻게 수행하는가? 어떻게 다른가? 이슈 트래커가 개인 목록보다 가진 장점 하나와 개인 목록이 이슈 트래커보다 가진 장점 하나를 식별하라.

닫힌 시스템으로서의 MOAD 반복 구조

퍼머컬처: 잘 설계된 시스템에서 한 과정의 출력은 다른 과정의 입력을 공급한다. 어떤 출력도 낭비로 시스템을 빠져나가지 않는다. 식량 숲의 닭은 달걀(식량), 분뇨(비료), 해충 방제(서비스), & 긁기(토양 통기)를 생산한다. 각 출력은 시스템을 떠나는 대신 하류 과정으로 이동한다.

MOAD 팩토리 모델은 유사한 닫힌 반복 구조를 구축한다. 각 단계는 다음을 공급하는 출력을 만들어낸다:

스캔이 만들어내는 것: 확인된 결함 인스턴스, 영향을 받는 노드의 위치 지도, 매개 중심성 & 트래픽 기반 심각도 추정.

패치가 만들어내는 것: 코드 수정, 수정을 확인하는 단위 테스트, 유지 관리자가 검토할 수 있는 차이점.

MOAD 게시물이 만들어내는 것: 결함 클래스, 스캔 패턴, & 수정 접근 방식을 설명하는 공공 도메인 기사. 어떤 단일 인스턴스를 넘어 지속되는 지적 자본.

CVE 공개가 만들어내는 것: NVD의 표준화된 기록, 영향을 받는 모든 설치에 걸쳐 자동화된 보안 스캐너를 트리거함. 보안 커뮤니티를 위한 사회적 자본.

상류 PR이 만들어내는 것: 정식 소스의 수정, 다음 의존성 업데이트 시 모든 하류 포크에 자동으로 전파됨.

각 출력은 피드백을 제공한다: MOAD 게시물은 연구자들에게 새로운 인스턴스를 찾는 방법을 가르치고, 이는 새로운 스캔을 생성한다. 단위 테스트는 회귀 방지 수단이 된다. CVE 기록은 그렇지 않으면 무시했을 운영 팀의 패치 채택을 촉진한다. 반복 구조가 닫힌다.

정지 조건: 하류 용량을 확인하지 않고 공개된 패치는 큐를 범람시킨다. MOAD-0001 & MOAD-0005는 결합된다: 높은 매개 중심성 노드에서 O(N²)를 수정하면 모든 하류 프로세서가 동시에 범람한다. 퍼머컬처의 전체 시스템 설계 원칙이 여기에도 적용된다: 구성 요소를 최적화하면 하류에 새로운 병목이 생길 수 있다.

출력을 자본에 매핑하기

MOAD 파이프라인은 다섯 가지 출력을 만들어낸다: 스캔 결과, 패치, MOAD 게시물, CVE 공개, & 상류 PR.

각 출력을 주로 성장시키는 자본 형태에 매핑하라. 그런 다음 제거된다면 가장 많은 '낭비', 즉 시스템에서 가장 방향 없는 에너지를 만들어낼 단일 단계를 식별하고 이유를 설명하라.