이더리움 상하이 DoS 공격

사건표준

Ethereum Shanghai DoS attacks

토큰포스트 위키인용하기

다른 이름 Ethereum Shanghai DoS attacks · EIP-150 · Ethereum 2016 DoS attacks · Ethereum transaction spam attack 2016 · Spurious Dragon · Tangerine Whistle · 스퓨리어스 드래건 · 이더리움 2016 디도스 공격 · 이더리움 상하이 공격 · 이더리움 트랜잭션 스팸 공격 · 탠저린 휘슬

이더리움 상하이 DoS 공격(Ethereum Shanghai DoS attacks)은 2016년9월부터 10월까지 누군가 값싼 가스로 디스크 조회가 많은 명령어를 반복 호출해 이더리움 노드를 느리게 만든 서비스 거부 공격이다. 공격이 개발자 회의 데브콘2가 열린 상하이 일정과 겹쳐 이 이름이 붙었고, 이더리움은 두 차례 하드포크로 명령어 가스 값을 고치고 공격이 만든 빈 계정을 지웠다.

1.블록 하나 검증에 1분#

2016년9월18일 이더리움 개발자 제프리 윌케는 게스(Geth) 노드들이 블록 2,283,416을 처리하다 메모리가 바닥나 멈춘다는 보안 경고를 올렸다. 다음 날부터 상하이에서 데브콘2가 열릴 예정이었다. 개발팀은 몇 시간 만에 'From Shanghai, with love'라는 이름의 게스 1.4.12를 내놓았다. 공격은 그 뒤에도 방식을 바꿔 이어졌다. 이더리움 재단은 9월22일 공지에서 공격자가 EXTCODESIZE 명령어를 반복 호출해 거래 하나당 약 5만 번의 디스크 조회를 일으켰고, 그 결과 블록 하나를 검증하는 데 20~60초가 걸렸다고 설명했다. 블록 생성 속도는 평소의 2분의 1에서 3분의 1로 떨어졌다. 재단은 합의가 깨져 체인이 갈라지거나 네트워크가 완전히 멈추지는 않았다고 밝혔다. 채굴자들에게는 블록 가스 한도를 150만으로 낮추라고 권고했다.

[1][2]

2.두 번의 하드포크#

원인은 상태 트리를 읽는 명령어의 가스 값이 실제 처리 비용보다 지나치게 낮다는 데 있었다. 비탈릭 부테린이 2016년9월24일 작성한 EIP-150은 EXTCODESIZE와 EXTCODECOPY를 20에서 700으로, CALL을 40에서 700으로, SLOAD를 50에서 200으로 올리고, 0이던 SELFDESTRUCT에 5,000을 매겼다. 이 내용은 2016년10월18일 블록 2,463,000에서 '탠저린 휘슬(Tangerine Whistle)' 하드포크로 적용됐다. 공격자는 아무것도 들어 있지 않은 빈 계정을 대량으로 만들어 상태 데이터를 부풀려 놓기도 했다. 2016년11월22일 블록 2,675,000의 '스퓨리어스 드래건(Spurious Dragon)' 하드포크는 EIP-161로 이런 빈 계정을 지울 수 있게 했다. 같은 포크에 리플레이 공격을 막는 EIP-155와 컨트랙트 코드 크기를 2만4,576바이트로 제한하는 EIP-170도 들어갔다. 더 다오 해킹 뒤 몇 달 만에 이더리움이 다시 하드포크를 두 번 한 셈이며, 이후 이더리움은 명령어 가스 값을 실제 비용에 맞춰 여러 차례 조정했다.

[3][4][5]

3.연표4건

  1. 2016.09사건9월18일 블록 2,283,416에서 게스 노드 다운, 게스 1.4.12 긴급 배포
  2. 2016.09사건9월22일 재단, EXTCODESIZE 반복 호출 공격 공지와 가스 한도 하향 권고
  3. 2016.10이정표10월18일 탠저린 휘슬 하드포크(EIP-150)
  4. 2016.11이정표11월22일 스퓨리어스 드래건 하드포크(EIP-155·160·161·170)

각주

  1. [1]Transaction spam attack: Next Steps — blog.ethereum.org · Ethereum Foundation Blog
  2. [2]Wallet stop syncing at block 2,283,415 / 2,283,416 — github.com · GitHub ethereum/mist
  3. [3]EIP-150: Gas cost changes for IO-heavy operations — eips.ethereum.org · Ethereum Improvement Proposals
  4. [4]EIP-161: State trie clearing — eips.ethereum.org · Ethereum Improvement Proposals
  5. [5]History of Ethereum — ethereum.org · ethereum.org

이 문서가 도움이 됐나요?

이 문서 인용하기
토큰포스트 위키, “이더리움 상하이 DoS 공격”, 2026-10-03 수정, https://wiki.tokenpost.kr/w/ethereum-shanghai-dos-attacks-2016

문단 2개 · 연표 4건 · 각주 5개