stalim17

Posted on May 22, 2023Read on Mirror.xyz

Disclosure: Fixing a critical bug in Optimism’s Geth fork [KOR]

자금은 안전하다 2월 2일, Optimism 팀은 Jay Freeman ( CydiaOrchid 명성의 saurik)으로부터 Optimism의 Geth 포크에 치명적인 버그가 있다는 경고를 받았습니다. SELFDESTRUCT이 버그로 인해 ETH 잔액을 보유한 계약에서 opcode를 반복적으로 트리거하여 Optimism에서 ETH를 생성할 수 있었습니다 .

Optimism의 체인 이력을 분석한 결과 버그가 악용되지 않은 것으로 나타났습니다 (이 버그는 Etherscan 직원이 한 번 실수로 트리거한 것으로 보이지만 사용 가능한 초과 ETH는 생성되지 않았습니다 ). 이 문제에 대한 수정 사항은 확인 후 몇 시간 내에 Optimism의 Kovan 및 Mainnet 네트워크(모든 인프라 공급자 포함)에 테스트 및 배포되었습니다. Infura, QuickNode 및 Alchemy의 빠른 응답 시간에 감사드립니다.

또한 여러 취약한 Optimism 포크 및 브리지 공급자에게 문제의 존재를 알렸습니다. 이러한 프로젝트는 모두 필요한 수정 사항을 적용했습니다.

복제본을 실행 중인 경우 가능한 한 빨리 버전 으로 업그레이드하십시오 . 그렇지 않으면 나머지 네트워크와 동기화되지 않을 수 있습니다.l2geth0.5.11

버그가 어떻게 작동하고 발견되었는지에 대한 자세한 정보에 관심이 있는 사용자는 saurik의 자세한 설명을 읽어보는 것이 좋습니다 . **공식 Immunefi 버그 바운티 프로그램 의 일환으로 $2,000,042의 최대 바운티 금액을 수여합니다 . **우리는 Optimism을 안전하게 유지하는 데 도움을 준 saurik과 같은 해커에게 매우 감사합니다.

주요 테이크 아웃 우리는 이런 순간을 자기 성찰의 기회로 삼습니다. 이 이벤트는 Optimism의 내부 버그 처리 프로세스를 잠재적으로 개선할 수 있는 몇 가지 핵심 영역을 강조했습니다. 투명성과 협업의 정신으로 가장 중요한 내용을 여러분과 공유하고자 합니다.

탈중앙화는 복잡성을 낳습니다 지난 1년 동안 낙관론이 많이 성장했습니다. 수명 주기 초기에 릴리스 프로세스에는 소수의 주요 인프라 공급자와의 조정만 포함되었습니다. 오늘날 브리지, 더 많은 공급자, 심지어 우리 코드베이스의 여러 메인넷 포크 간에는 다른 이야기가 있습니다. 분산화에는 좋지만 릴리스에 복잡성이 추가됩니다. 그리고 보안 릴리스는 훨씬 더 복잡합니다. 명백한 패치를 즉시 게시할 수 없거나 누군가가 업그레이드하기 전에 취약성을 리버스 엔지니어링할 위험이 있습니다.

이 복잡성을 해결하기 위해 Geth의 자동 패치 와 유사한 프로세스를 사용하여 이 문제를 해결하기로 했습니다 . 첫째, 가능한 한 빨리 주요 당사자와 공유할 수 있는 비공개 패치를 만들었습니다. 그런 다음 핫픽스가 배포되었다는 확신이 들면 눈에 띄지 않는 커밋에 숨겨진 수정 사항을 공개적으로 릴리스했습니다. 그러나 Geth와 달리 다음과 같은 이유로 비교적 신속하게 공개하기로 결정했습니다.

  • l2geth수정 사항을 묻을 커밋이 많지 않습니다 .

  • 공개는 계획된 네트워크 업그레이드와 동시에 이루어졌기 때문에 사람들은 이미 업그레이드 과정에 있었습니다.

  • 패치되지 않은 중요한 클라이언트가 없다고 확신합니다.

다행히 이 패치를 사전에 처리할 수 있었습니다. 그러나 — 이것이 실용성을 유지하기에는 생태계가 곧 너무 커질 것이 분명합니다. 가까운 시일 내에 Geth와 더 일치하도록 공개 프로토콜을 업데이트할 예정입니다.

모든 코드 라인이 중요합니다. 이 버그는 이전 "OVM 1.0" 시스템과의 하위 호환성을 유지하기 위한 go-ethereum 코드베이스 의 수정에서 비롯되었습니다 ( 업스트림 Geth에서 수천 줄의 diff를 잘라낸 EVM 등가 업그레이드 이전 ). 단순성은 우리 디자인 철학의 핵심 이며 버그가 우리가 아직 제거하지 않은 OVM 차이에서 비롯된 것은 놀라운 일이 아닙니다.

우리는 현재 다음 주요 릴리스 인 Optimism: Bedrock Edition을 지정하고 구축하는 과정에 있습니다 . Bedrock Edition은 업스트림 go-ethereum과의 (이미 작은) 차이를 크게 줄일 것입니다. 그 진행 상황을 따라가고 싶다면 바로 여기 에서 공개적으로 진행되고 있습니다 .

버그 바운티 프로그램은 필수입니다 이번 주에는 강력한 버그 바운티 프로그램의 중요성이 입증되었습니다. 이 공개와 동시에 Wormhole 브리지는 120,000 ETH(~$300m)에 대해 해킹당했습니다. Wormhole 프로젝트는 작성 시점에 청구되지 않은 $10m 소급 현상금에 대한 협상을 시도했습니다 . Wormhole은 현재 $3.5m 버그 바운티 프로그램을 개발하고 있습니다 . 다른 대규모 프로젝트는 조만간 버그 바운티 프로그램을 개발해야 합니다.

우리는 깨끗한 코드를 유지하기 위해 열심히 노력합니다. go-ethereum과의 차이점을 최소화함으로써 우리는 whitehats가 문제를 찾고, 테스트하고, 보고하는 것을 가능한 한 쉽게 만듭니다. 우리는 또한 버그 바운티 프로그램의 무결성을 유지하기 위해 최선을 다하고 있으며 $2m+42 최대 바운티 금액을 지불하게 되어 매우 기쁩니다. 화이트햇이라면 공식 Immunefi 버그 바운티 프로그램을 확인하시기 바랍니다 .

그리고 더 우리는 이 게시물에서 이야기할 몇 가지 핵심 테이크아웃을 골랐지만, 곧 타격에 대한 완전한 사후 분석을 할 것입니다. 계속 지켜봐! 그동안 saurik의 세부 분석 에서 기본 버그에 대한 자세한 정보를 찾을 수 있습니다 .

이별의 말 지난 주에 우리는 Optimism 및 모든 주요 포크에 대한 중요한 보안 취약점에 대한 패치를 빠르고 성공적으로 출시할 수 있었습니다. Optimism 네트워크는 다운타임이 발생하지 않았으며 문제가 악용되지 않았음을 확인할 수 있었습니다. 우리는 지난 주 동안 많은 것을 배웠고 개선의 여지가 많이 있지만 그 어느 때보다 낙관적입니다.

이 버그를 찾아 수정 사항을 구현하는 데 협력해 주신 saurik에게 다시 한 번 감사드립니다. 화이트햇 동료라면 버그 바운티 프로그램을 확인하고 프로토콜을 안전하게 유지하는 데 도움이 되기를 바랍니다. 읽어 주셔서 감사합니다. 낙관적입니다!

https://medium.com/ethereum-optimism/disclosure-fixing-a-critical-bug-in-optimisms-geth-fork-a836ebdf7c94

Recommended Reading