CertiK: Sui의 최신 취약점 햄스터 휠, 기술 세부정보 및 심층 분석

avatar
CertiK
1년 전
이 글은 약 4587자,전문을 읽는 데 약 6분이 걸린다
지난 주 CertiK는 이 주요 보안 결함을 발견한 대가로 SUI로부터 500,000달러의 버그 포상금을 받았습니다.

CertiK: Sui의 최신 취약점 햄스터 휠, 기술 세부정보 및 심층 분석

이전에 CertiK 팀은 Sui 블록체인에서 일련의 서비스 거부 취약점을 발견했습니다. 이러한 취약점 중에서 새롭고 영향력이 큰 취약점이 눈에 띕니다. 이 취약점으로 인해 Sui 네트워크 노드가 새로운 트랜잭션을 처리할 수 없게 될 수 있으며, 그 결과는 전체 네트워크가 완전히 종료되는 것과 같습니다.

바로 지난 월요일,CertiK는 심각한 보안 결함 발견에 대해 SUI에 $500,000의 버그 포상금을 수여했습니다.. 미국 업계의 권위 있는 매체인 코인데스크가 이 사건을 보도했고, 이후 주요 언론들도 보도에 이어 관련 소식을 전했습니다.

이 보안 취약점은 Hamster Wheel이라고 생생하게 불립니다. 독특한 공격 방법은 현재 알려진 공격과 다르며 공격자는 Sui 검증 노드에서 무한 루프를 트리거하기 위해 약 100바이트의 페이로드만 제출하면 응답하지 않게 됩니다. 새로운 거래에.

또한, 공격으로 인한 피해는 네트워크가 다시 시작된 후에도 계속될 수 있으며, Sui 네트워크에 자동으로 전파되어 끝없이 뛰어다니는 햄스터처럼 모든 노드가 새로운 트랜잭션을 처리하지 못하게 만들 수도 있습니다. 따라서 우리는 이러한 독특한 유형의 공격을 햄스터 휠 공격이라고 부릅니다.

CertiK: Sui의 최신 취약점 햄스터 휠, 기술 세부정보 및 심층 분석

버그를 발견한 후 CertiK는 Sui의 버그 현상금 프로그램을 통해 이를 Sui에 보고했습니다. Sui 역시 최초에 효과적으로 대응하고, 취약점의 심각성을 확인했으며, 메인넷 출시 이전에 문제를 복구하기 위해 적극적으로 상응하는 조치를 취했습니다. 이 특정 취약점을 수정하는 것 외에도 Sui는 이 취약점으로 인해 발생할 수 있는 잠재적 피해를 줄이기 위해 예방적 완화 조치를 구현했습니다.

책임 있는 공개에 대해 CertiK 팀에 감사를 표하기 위해 Sui는 CertiK 팀에 $500,000의 현상금을 수여했습니다.

첫 번째 수준 제목

CertiK: Sui의 최신 취약점 햄스터 휠, 기술 세부정보 및 심층 분석

Sui에서 검증인의 주요 역할

이미지 설명

CertiK: Sui의 최신 취약점 햄스터 휠, 기술 세부정보 및 심층 분석

Move Chain의 악성 페이로드 위협

이미지 설명

CertiK: Sui의 최신 취약점 햄스터 휠, 기술 세부정보 및 심층 분석

Sui의 부하 확인 순서

위 그림에서 볼 수 있듯이 검증기의 대부분의 검사는 CompiledModule(사용자가 제공한 계약 페이로드의 실행을 나타냄)에 대한 구조적 보안 검증을 수행합니다. 예를 들어, 중복 검사기를 사용하여 런타임 페이로드에 중복된 항목이 없는지 확인하고, 한계 검사기를 사용하여 런타임 페이로드의 각 필드 길이가 허용되는 최대 항목 제한 내에 있는지 확인합니다.

첫 번째 수준 제목

Move의 추상 해석기 이해: 선형 및 반복 분석

Move에서 제공하는 Abstract Interpreter는 추상 해석을 통해 바이트코드에 대한 복잡한 보안 분석을 수행하기 위해 특별히 설계된 프레임워크입니다. 이 메커니즘은 검증 프로세스를 더욱 세부적이고 정확하게 만들고, 각 검증자는 분석을 위해 고유한 추상 상태를 정의할 수 있습니다.

시작 시 추상 인터프리터는 컴파일된 모듈에서 제어 흐름 그래프(CFG)를 작성합니다. 이러한 CFG의 각 기본 블록은 선주문 상태 및 주문 후 상태라는 일련의 상태를 유지합니다. 선주문 상태는 기본 블록 실행 전 프로그램 상태의 스냅샷을 제공하는 반면, 주문 후 상태는 기본 블록 실행 후 프로그램 상태에 대한 설명을 제공합니다.

이미지 설명

CertiK: Sui의 최신 취약점 햄스터 휠, 기술 세부정보 및 심층 분석

Move 추상 해석기의 워크플로

그러나 제어 흐름에 루프가 있으면 프로세스가 더욱 복잡해집니다. 사이클의 출현은 제어 흐름 그래프에 점프백 에지가 포함되어 있음을 의미하며, 점프백 에지의 소스는 현재 기본 블록의 후속 상태에 해당하고 점프-백의 대상 기본 블록(루프 헤드)에 해당합니다. 뒤쪽 가장자리는 이전에 분석된 것입니다. 따라서 추상 해석기는 점프백과 관련된 두 기본 블록의 상태를 주의 깊게 병합해야 합니다.

첫 번째 수준 제목

Sui IDLeak 유효성 검사기: 맞춤형 추상 해석 분석

원래 Move 디자인과 달리 Sui의 블록체인 플랫폼은 독특한 목표 중심의 글로벌 스토리지 모델을 도입합니다. 이 모델의 주목할만한 특징은 키 속성(체인에 인덱스로 저장됨)이 있는 모든 데이터 구조가 구조의 첫 번째 필드로 ID 유형을 가져야 한다는 것입니다. 각 개체는 전역적으로 고유한 ID를 가져야 하므로 ID 필드는 변경할 수 없으며 다른 개체로 전송할 수 없습니다. 이러한 속성을 보장하기 위해 Sui는 추상 인터프리터 위에 사용자 정의 분석 논리 세트를 구축했습니다.

CertiK: Sui의 최신 취약점 햄스터 휠, 기술 세부정보 및 심층 분석

id_leak_verifier라고도 알려진 IDLeak 검증기는 분석을 위해 추상 해석기와 함께 작동합니다. 여기에는 AbstractState라는 고유한 AbstractDomain이 있습니다. 각 AbstractState는 여러 지역 변수에 해당하는 AbstractValue로 구성됩니다. 각 지역 변수의 상태는 AbstractValue에 의해 모니터링되어 ID 변수가 새로운 것인지 추적합니다.

첫 번째 수준 제목

Sui IDLeak 유효성 검사기 상태 유지 관리 불일치

IDLeak 유효성 검사기는 AbstractState::join 함수를 구현하여 Move 추상 해석기와 통합됩니다. 이 기능은 상태 관리, 특히 상태 값 병합 및 업데이트에서 필수적인 역할을 합니다.

해당 기능을 자세히 조사하여 해당 기능을 이해하십시오.

CertiK: Sui의 최신 취약점 햄스터 휠, 기술 세부정보 및 심층 분석

AbstractState::join에서 함수는 다른 AbstractState를 입력으로 사용하고 해당 로컬 상태를 현재 객체의 로컬 상태와 병합하려고 시도합니다. 입력 상태의 각 지역 변수에 대해 해당 변수의 값을 지역 상태의 현재 값과 비교합니다(찾을 수 없는 경우 기본값은 AbstractValue::Other입니다). 두 값이 동일하지 않으면 최종 상태 병합 결과가 변경되었는지 여부에 대한 기준으로 changed 플래그를 설정하고 AbstractValue::join을 호출하여 로컬 상태의 로컬 변수 값을 업데이트합니다.

CertiK: Sui의 최신 취약점 햄스터 휠, 기술 세부정보 및 심층 분석

AbstractValue::join에서 함수는 해당 값을 다른 AbstractValue와 비교합니다. 동일하면 전달된 값을 반환합니다. 같지 않으면 AbstractValue::Other를 반환합니다.

그러나 이 상태 유지 논리에는 숨겨진 불일치 문제가 포함되어 있습니다. AbstractState::join은 이전 값과 새 값의 차이를 기반으로 병합된 상태가 변경되었음을 나타내는 결과(JoinResult::Changed)를 반환하지만 병합 후 업데이트된 상태 값은 여전히 ​​변경되지 않을 수 있습니다.

이러한 불일치는 작업 순서로 인해 발생합니다. AbstractState::join에서 상태 변경 결정은 상태 업데이트(AbstractValue::join) 전에 발생하며 이 결정은 실제 상태 업데이트 결과를 반영하지 않습니다.

이미지 설명

CertiK: Sui의 최신 취약점 햄스터 휠, 기술 세부정보 및 심층 분석

예: 상태 저장 연결의 불일치

이로 인해 불일치가 발생합니다. 기본 블록의 상태를 병합한 결과는 변경된 것으로 판단되지만 병합된 상태 값 자체는 변경되지 않습니다. 추상적 해석 분석 과정에서 이러한 불일치는 심각한 결과를 초래할 수 있습니다. 제어 흐름 그래프(CFG)에서 주기가 발생할 때 추상 해석기의 동작을 검토합니다.

루프가 발생하면 추상 해석기는 반복 분석 방법을 사용하여 점프백 대상 기본 블록의 상태와 현재 기본 블록의 상태를 병합합니다. 병합된 상태가 변경되면 추상 해석기는 점프 대상부터 다시 분석합니다.

첫 번째 수준 제목

불일치를 추가로 악용하면 Sui IDLeak 유효성 검사기에서 무한 루프가 발생합니다.

이미지 설명

CertiK: Sui의 최신 취약점 햄스터 휠, 기술 세부정보 및 심층 분석

IDLeak 유효성 검사기 내부에서 무한 루프로 이어질 수 있는 악성 CFG+ 상태

이 프로세스는 특정 지역 변수의 AbstractValue가 ::Other로 설정되는 BB 2로 시작됩니다. BB 2를 실행한 후 흐름은 동일한 변수가 ::Fresh로 설정된 BB 3으로 이동합니다. BB 3이 끝나면 BB 2로 점프하는 점프 백 에지가 있습니다.

앞서 언급한 불일치는 이 예를 추상적으로 해석하는 데 핵심적인 역할을 합니다. 백 점프 에지가 처리되면 추상 해석기는 BB 3의 사후 주문 상태(변수 ::Fresh 포함)를 BB 2의 사전 주문 상태(변수 ::Other 포함)와 연결하려고 시도합니다. AbstractState::join 함수는 이전 값과 새 값의 차이를 확인하고 변경 플래그를 설정하여 BB 2를 다시 분석해야 함을 나타냅니다.

그러나 AbstractValue::join에서 ::Other의 주요 동작은 AbstractValue가 병합된 후에도 BB 2 상태 변수의 실제 값이 여전히 ::Other이고 상태 병합 결과가 변경되지 않았음을 의미합니다. .

따라서 이 순환 프로세스가 시작되면, 즉 검증자가 BB 2 및 모든 후속 기본 블록 노드(이 경우 BB 3)를 계속 재분석함에 따라 이 프로세스는 무기한으로 계속됩니다. 무한 루프는 사용 가능한 모든 CPU 주기를 소비하므로 유효성 검사기가 다시 시작되는 동안 지속되는 새로운 트랜잭션을 처리하고 응답할 수 없게 됩니다.

이 취약점을 악용함으로써 검증 노드는 무한 루프의 바퀴 달린 햄스터처럼 끝없이 실행되어 새로운 트랜잭션을 처리할 수 없습니다. 따라서 우리는 이러한 독특한 유형의 공격을 햄스터 휠 공격이라고 부릅니다.

햄스터 휠 공격은 Sui 검증자를 효과적으로 정지시켜 전체 Sui 네트워크를 중단시킬 수 있습니다.

취약점의 원인과 트리거링 프로세스를 이해한 후 다음 Move 바이트코드 시뮬레이션을 사용하여 구체적인 예를 구성하여 실제 시뮬레이션에서 취약점을 성공적으로 트리거했습니다.

CertiK: Sui의 최신 취약점 햄스터 휠, 기술 세부정보 및 심층 분석

첫 번째 수준 제목

Sui Network의 Hamster Wheel 공격의 지속적인 위험

Sui의 버그 바운티 프로그램에는 주로 전체 네트워크에 대한 피해 정도를 기준으로 취약성 수준 평가에 대한 엄격한 규정이 있습니다. 심각 등급을 충족하는 취약점은 전체 네트워크를 종료하고 새로운 거래 확인을 효과적으로 방지해야 하며 문제를 해결하려면 하드 포크가 필요합니다(중)” 또는 “고위험(높음)” 취약점.

이미지 설명

CertiK: Sui의 최신 취약점 햄스터 휠, 기술 세부정보 및 심층 분석

Sui에서 거래 제출을 위한 상호작용 개요

처음에는 사용자 트랜잭션이 프런트엔드 RPC를 통해 제출되고 기본 유효성 검사 후 백엔드 서비스로 전달됩니다. Sui 백엔드 서비스는 들어오는 트랜잭션 페이로드를 추가로 검증하는 역할을 담당합니다. 사용자의 서명을 성공적으로 확인한 후 해당 거래는 거래 인증서(거래 정보 및 Sui의 서명이 포함된)로 변환됩니다.

이러한 거래 인증서는 Sui 네트워크 운영의 기본 부분이며 네트워크의 다양한 검증 노드에 배포될 수 있습니다. 계약 생성/업그레이드 트랜잭션의 경우 체인에 업로드되기 전에 확인 노드는 Sui 검증자를 호출하여 이러한 인증서의 계약 구조/의미론의 유효성을 확인하고 확인합니다. 이 중요한 검증 단계에서 무한 루프 취약점이 촉발되어 악용될 수 있습니다.

첫 번째 수준 제목

Sui의 솔루션

CertiK의 피드백을 받은 Sui는 즉시 취약점을 확인하고 심각한 결함을 해결하기 위한 수정 사항을 발표했습니다. 이 수정 사항은 상태 변경과 변경 후 플래그 간의 일관성을 보장하여 햄스터 휠 공격의 중요한 효과를 제거합니다.

CertiK: Sui의 최신 취약점 햄스터 휠, 기술 세부정보 및 심층 분석위의 불일치를 제거하기 위해 Sui의 수정 사항에는 AbstractState::join 함수에 대한 작지만 중요한 조정이 포함되어 있습니다. 이 패치는 AbstractValue::join을 실행하기 전에 상태 병합 결과를 결정하는 논리를 제거하고 대신 상태 병합을 위해 AbstractValue::join 함수를 먼저 실행하고 최종 업데이트 결과를 원래 상태 값과 비교하여 병합 여부를 설정합니다. (old_value) 마크업을 변경합니다.

이러한 방식으로 상태 병합 결과는 실제 업데이트 결과와 일치하며 분석 프로세스 중에 무한 루프가 발생하지 않습니다.

이 특정 취약점을 해결하는 것 외에도 Sui는 향후 유효성 검사기 취약점의 영향을 줄이기 위해 완화 조치도 배포했습니다. 버그 보고서에 있는 Sui의 응답에 따르면 완화에는 Denylist라는 기능이 포함됩니다.

그러나 검증인은 특정 종류의 거래를 일시적으로 거부할 수 있는 노드 프로필을 가지고 있습니다. 이 구성을 사용하면 릴리스 및 패키지 업그레이드 처리를 일시적으로 비활성화할 수 있습니다. 이 버그는 릴리스 또는 패키지 업그레이드 tx가 서명되기 전에 Sui 유효성 검사기가 실행될 때 발생하고 거부 목록은 유효성 검사기의 실행을 중지하고 악성 tx를 삭제하므로 이러한 tx 유형을 일시적으로 거부 목록에 추가하는 것은 100% 효과적인 완화입니다(하지만 코드를 릴리스하거나 업그레이드하려는 사람들을 위한 서비스를 일시적으로 중단합니다.

그건 그렇고, 우리는 한동안 이 TX 거부 목록 구성 파일을 가지고 있었지만 이전에 보고한 검증기 루프 취약점에 대한 후속 완화로 인증서에 대한 유사한 메커니즘도 추가했습니다. 이 메커니즘을 적용하면 이 공격에 대해 더 많은 유연성을 갖게 됩니다. 인증서 거부 목록 구성을 사용하여 유효성 검사기가 잘못된 인증서를 잊어버리도록 하고(무한 루프 깨기) TX 거부 목록 구성을 사용하여 릴리스/업그레이드를 허용하지 않습니다. 새로운 악의적인 공격 거래. 우리가 이것에 대해 생각하게 해주셔서 감사합니다!

검증인의 수는 제한되어 있습니다."ticks"(gas와는 다름) 바이트코드 검증에 사용되며, 트랜잭션에서 발행된 모든 바이트코드를 이 많은 틱 내에 검증할 수 없는 경우 검증자는 트랜잭션 서명을 거부하여 네트워크에서 실행되지 않도록 합니다. 이전에는 선택된 복합 검증기 패스 세트에만 측정이 적용되었습니다. 이 문제를 해결하기 위해 우리는 각 틱마다 검증하는 동안 검증자가 수행하는 작업에 대한 제약을 보장하기 위해 각 검증자로 측정을 확장합니다. 또한 ID 유출 검사기에서 잠재적인 무한 루프 버그를 수정했습니다.

- 버그 수정에 대한 Sui 개발자의 메모

요약하다

CertiK: Sui의 최신 취약점 햄스터 휠, 기술 세부정보 및 심층 분석

요약하다

이 기사에서는 CertiK Skyfall 팀이 발견한 햄스터 휠 공격의 기술적 세부 사항을 공유하고 이 새로운 공격이 어떻게 심각한 취약점을 악용하여 Sui 네트워크를 완전히 종료하는지 설명합니다. 또한 이 중요한 문제를 해결하기 위한 Sui의 적시 대응을 자세히 살펴보고 유사한 취약점에 대한 취약점 수정 및 후속 완화 방법을 공유합니다.

창작 글, 작자:CertiK。전재 / 콘텐츠 제휴 / 기사 요청 연락처 report@odaily.email;违규정 전재 법률은 반드시 추궁해야 한다.

ODAILY는 많은 독자들이 정확한 화폐 관념과 투자 이념을 수립하고 블록체인을 이성적으로 바라보며 위험 의식을 확실하게 제고해 달라고 당부했다.발견된 위법 범죄 단서에 대해서는 관련 부서에 적극적으로 고발하여 반영할 수 있다.

추천 독서
편집자의 선택