저자: 에드 펠튼, 오프체인 랩스 공동창업자 출처: 매체 번역: 굿오바, 골든파이낸스
오프체인 랩스 팀은 3월 22일 테스트 네트워크에 배포한 옵티미즘 사기 방지 시스템에서 심각한 보안 취약점 2개를 발견했다고 OP랩스 팀에 공개했습니다. align: left;">3월 22일, 오프체인 랩스 팀은 테스트 네트워크에 배포한 옵티미즘 사기 증명 시스템에서 발견된 두 가지 심각한 보안 취약점을 OP Labs 팀에 공개했습니다. 저희는 OP Labs 팀에 공격에 대한 데모 익스플로잇 코드를 제공했고, 3월 25일 OP Labs는 두 가지 문제의 유효성을 확인했습니다.
우리는 이 취약점들이 해결될 때까지 공개를 보류해 달라고 요청한 OP Labs 팀과 공개 일정을 조율했습니다. 어제(4월 25일) 늦게 Optimism 테스트 네트워크가 업데이트되어 오늘 처음으로 이 취약점을 공개합니다.
이 취약점을 통해 악의적인 당사자는 OP 스택 사기 증명 메커니즘이 허위 체인 이력을 수락하도록 강제하거나 OP 스택 사기 증명 메커니즘이 올바른 체인 이력을 수락하지 못하도록 할 수 있습니다. 이러한 문제는 타이머 처리를 위한 OP 사기 방지 설계의 결함에서 비롯됩니다.
그 결과, 사기 방지 시스템은 긴급 카운슬 개입에만 의존하는 접근 방식에 비해 보안을 개선하지 못합니다.
취약점의 특성
타이머는 대화형 사기 방지 설계에서 가장 미묘한 측면 중 하나입니다. 공격자는 챌린지 게임에서 전혀 행동하지 않을 수 있으므로 어느 시점에서 프로토콜은 이동하지 않은 플레이어가 타임아웃에 실패한다고 명시해야 합니다. 그러나 공격자는 부모 L1 체인(예: 이더)에 대한 검열 공격을 사용하여 정직한 당사자가 게임에 참여하지 못하도록 할 수도 있습니다.
시간이 다 되어도 플레이어가 움직이지 않으면 프로토콜은 플레이어가 검열을 받고 있는지 아니면 침묵하며 검열을 받고 있는 척하는 악당인지 알 수 없습니다. (두 경우 모두 프로토콜은 플레이어의 '무선 침묵'만 확인할 수 있습니다.) 따라서 프로토콜은 정직한 플레이어가 검열에 지지 않도록 충분한 여유를 주고, 악의적인 플레이어가 프로토콜을 너무 오래 지연시키지 못하도록 막아야 합니다.
예를 들어, 분쟁의 양측에 각각 한 명의 플레이어가 있는 일대일 챌린지 프로토콜에서 현재 배포된 Arbitrum의 프로토콜은 매우 잘 작동하는 접근 방식을 사용합니다. 각 플레이어는 상대 플레이어가 움직일 차례가 되면 '타임 포인트'를 획득하고, 7일 동안 타임 포인트가 누적되면 시간으로 인해 도전에서 승리하는 방식이 직관적으로 이해됩니다. 플레이어가 총 7일이 지체된 경우, 이 지체가 전적으로 검열로 인한 것이라면 정당화되지 않으므로 해당 플레이어는 정직하지 못한 것으로 간주되어 안전하게 패자로 선언될 수 있다는 것이 이 아이디어의 핵심입니다. 이렇게 하면 일대일 계약은 최대 7일 동안 검열로부터 안전하게 보호됩니다.
이 방법은 분쟁의 양측에 플레이어가 한 명만 있을 때 효과적입니다. 하지만 옵티미즘처럼 많은 플레이어의 참여를 허용하는 경우에는 시간 크레딧을 관리하는 방법이 명확하지 않습니다. 플레이어를 분쟁의 양측에 각각 한 명씩 두 팀으로 나누고 각 팀에 시간 크레딧을 부여하면 쉽게 해결할 수 있습니다. 하지만 악의적인 측이 잠시 동안은 정직한 척하다가 최악의 순간에 정직한 '팀원'의 뒤통수를 치는 배신자 공격이 발생할 수 있으므로 주의해야 합니다.
테스트 네트워크에 처음 배포된 OP 프로토콜은 배신자가 부당한 시간 보너스를 받을 수 있도록 허용하기 때문에 이러한 종류의 배신자 공격에 취약합니다. 이는 악의적인 행위자가 패배해야 하는 허위 개념 증명 게임에서 승리하여 허위 체인 이력을 수락하거나 올바른 체인 이력을 거부할 수 있게 합니다.
이것은 해결하기 어려운 문제이며, OP의 원래 설계는 교묘한 공격에 노출되어 있었지만, 저희가 제공한 데모 취약점을 해결하기 위해 타이머 처리 코드를 일부 변경했습니다. 현재로서는 수정된 프로토콜에 대한 보안 분석은 수행하지 않았습니다.
타이머, 배신자 및 기타 공격에 대한 대응
사기 방지 프로토콜, 특히 타이밍 측면은 설계하기 매우 어렵습니다. 그렇기 때문에 저희의 BoLD 프로토콜은 자세한 위협 모델과 BoLD 프로토콜이 이러한 배신자 공격에 취약하지 않다는 증거를 제공하는 기술 문서와 함께 제공됩니다. 이러한 문제의 복잡성과 미묘함을 고려할 때, 잠재적인 공격이 존재하지 않도록 하기 위해서는 명확한 위협 모델과 보안에 대한 증거가 필요하다고 생각합니다. 실제로 저희는 증명을 만드는 과정에서 BoLD 프로토콜의 여러 문제를 파악하고 수정했습니다.
원본 보안 공개
다음은 3월 22일에 OP Labs에 보낸 공개에서 발췌한 내용입니다:
우리(오프체인 랩스 팀)는 현재 버전의 OP 스택 장애 증명 시스템에서 심각한 시스템 결함을 확인했습니다. 이 문서에서는 이러한 결함을 설명하고 참고할 수 있도록 샘플 익스플로잇 코드를 제공합니다.
이 결함을 통해 공격자는 프로토콜을 허위 주장에 노출시키거나, 올바른 주장을 거부하거나, L1 가스 한도 내에서 해결할 수 없는 분쟁을 생성하여 체인의 보안과 활동을 방해할 수 있습니다. [참고(4월 26일): 세 번째 문제(해결 불가능한 분쟁)는 이미 공개되어 문서화되었으므로 더 이상의 언급은 삭제하겠습니다.]
현재 프로토콜이 메인넷에 배포될 경우 사용자 자금이 매우 높은 위험에 노출될 수 있다고 생각합니다.
결함의 본질
결함 중 일부는 오류 방지 시스템에서 타이머가 관리되는 방식에서 비롯된 것으로 보입니다. 즉, 조부모 문장에서 타이머를 상속하면 악의적인 행위자가 만든 문장이 이전에 정직한 행위자가 만든 문장의 타이머 크레딧을 상속하여 악의적인 행위자가 승리할 때까지 악의적인 문장에 대한 타이머 크레딧을 인위적으로 부풀릴 수 있습니다. 도전. 예를 들어, 악의적인 행위자는 승리를 주장하는 데 필요한 크레딧보다 약간 적은 양의 타이머 크레딧을 상속받은 다음
예시 익스플로잇
다음은 이러한 공격을 보여주는 익스플로잇의 예시입니다.
첫 번째 취약점(test_exploit_last_second_challenge
)은 공격자가 정직한 진술을 방해할 수 있게 해줍니다.
두 번째 취약점(test_exploit_last_second_defend
)은 공격자가 사기성 주장을 수락하도록 허용합니다.
이 취약점은 커밋 당시 OP 스택 사기 증명 시스템의 최신 버전에 적용되는 것으로 보입니다 96a269bc793fa30c3e2aa1a8afd738e4605fa06e
>. strong>