Back to Blog

CVE-2021–39137의 실제 공격 악용에 대한 간략한 분석

Code Auditing
2021년 8월 28일
2 min read

CVE-2021-39137은 며칠 전 보고되어 수정된 취약점입니다. 그러나 모든 이더리움 노드가 패치를 적용한 것은 아닙니다. 우리는 이 취약점이 악성 트랜잭션에 의해 악용된 것을 확인했습니다.

공격 트랜잭션

https://tx.blocksecteam.com/tx/0x1cb6fb36633d270edefc04d048145b4298e67b8aa82a9e5ec4aa1435dd770ce4

이 트랜잭션은 주소 0x4를 대상으로 하는 STATICCALL을 포함합니다. 이것은 사전 컴파일된 스마트 컨트랙트 dataCopy입니다. 인자는 다음과 같습니다.

inOffset = 0, inSize = 32, retOffset = 7, retSize = 32.

0x4 스마트 컨트랙트

그림 1

STATICCALL의 대상이 0x4 사전 컴파일 컨트랙트이므로, 그림 1의 RunPrecompiledContract 함수가 실행됩니다.

그림 2

그림 3

그림 2/3에 따르면, 0x4 스마트 컨트랙트는 단순히 in 포인터의 참조를 반환합니다.

그림 4

그림 5

그림 4는 옵코드 STATICCALL의 코드입니다. 751번 줄에서 args는 EVM 메모리의 [inOffset ~ inOffset + inSize], 즉 Mem[0:32]를 가리킵니다.

그림 5와 0x04의 코드 로직 분석(그림 2/3)에 따르면, 반환값(ret)은 args와 동일한 메모리에 대한 참조입니다. 즉, 이것 또한 Mem[0:32]를 가리킵니다.

취약점

취약한 코드(버전 1.10.7)에서 762번 줄은 ret의 내용을 Mem[retOffset : retOffset + retOffset], 즉 Mem[0:32]를 Mem[7:7+32]로 복사합니다. 이 작업은 의도치 않게 ret의 내용을 변경합니다. 이는 0x4 사전 컴파일 컨트랙트의 반환값이 수정되었음을 의미합니다.

수정된 버전(1.10.8)에서는 ret의 복사본을 만듭니다(766번 줄). 767번 줄의 복사 작업이 ret의 내용을 수정할 수 없으므로, 이를 통해 취약점이 해결됩니다.

CVE-2021–39137 취약점은 노드들이 패치를 제때 업데이트하지 않아 악성 트랜잭션에 의해 악용되었습니다. 이 결함은 이더리움 가상 머신의 메모리 연산에 존재하는 결함이었으나 버전 1.10.8에서 수정되었습니다. 시스템 보안을 보장하기 위해 모든 이더리움 노드를 즉시 최신 버전으로 업데이트할 것을 권장합니다.

크레딧

이 공격은 BlockSec의 Siwei Wu, Yufeng Hu, Lei Wu, Yajin Zhou가 분석하였습니다.

Sign up for the latest updates
약 4억 1,800만 달러 손실: Bitget, NEAR Intents 해킹 사건 | BlockSec Weekly
Security Insights

약 4억 1,800만 달러 손실: Bitget, NEAR Intents 해킹 사건 | BlockSec Weekly

이번 격주 보안 리포트는 2026년 9월 21일부터 10월 4일까지 발생한 8건의 사고를 다루며, 이더리움, BNB 체인, 솔라나, 비트코인, 트론, XRP 레저, 지캐시, 아발란체, 니어 등 네트워크에서 약 4억 1,840만 달러의 손실이 발생했습니다. Bitget의 3억 8,750만 달러 규모 제3자 보안 제품 취약점과 NEAR Intents의 387만 달러 환불 검증 결함 및 상태 롤백 누락 문제를 상세히 분석합니다.

Bitget의 3억 8,750만 달러 오프체인 침해 사고: 키와 컨트랙트를 넘어서
Security Insights

Bitget의 3억 8,750만 달러 오프체인 침해 사고: 키와 컨트랙트를 넘어서

2026.9.24, 공격자가 제3자 보안 제품 취약점을 악용해 내부 자격증명을 탈취하고 출금 명령을 위조했습니다. 이더리움·EVM·XRP Ledger·Zcash·TRON상 Bitget 지갑에서 약 3.875억 달러가 인출됐으나 개인키·콜드월렛은 무사했습니다. 이 글은 사건 경위·자금 흐름과 자산 전환·복구 대응을 분석하고, 기관용 심층 방어 체계를 제안하며 승인된 블록체인 침투 테스트의 검증 역할을 설명합니다.

약 1,130만 달러 손실: Multicall Router, Nostra | BlockSec Weekly
Security Insights

약 1,130만 달러 손실: Multicall Router, Nostra | BlockSec Weekly

2026/09/14~09/20, 이더리움·Starknet에서 약 1,130만 달러 손실 발생. 멀티콜 라우터가 자신 주소를 대상으로 받아들여 Safe 지갑 권한이 도용되어 약 2,900 aEthrsETH가 공격자 Uniswap v4 풀로 유출. Starknet Nostra는 오라클 최소 소스 1개 요구로 조작된 가격이 반영돼 NSTR이 약 $49.52로 평가, 약 350만 달러 대출 발생.

Best Security Auditor for Web3

Validate design, code, and business logic before launch. Aligned with the highest industry security standards.

BlockSec Audit