폴리곤 플라즈마 브리지 버그
사건표준Polygon Plasma bridge bug
다른 이름 Polygon Plasma bridge bug · Gerhard Wagner · Polygon double-spend bug · Polygon Plasma double spend · 게르하르트 바그너 · 폴리곤 200만 달러 포상금 · 폴리곤 버그 · 폴리곤 이중 지불 버그
폴리곤 플라즈마 브리지 버그(Polygon Plasma bridge bug)는 폴리곤에서 이더리움으로 자금을 빼는 플라즈마 브리지에서, 유효한 출금 하나를 최대 223번 반복할 수 있었던 이중 지불 취약점이다. 화이트햇 해커 게르하르트 바그너(Gerhard Wagner)가 2021년 10월 5일 버그 바운티 플랫폼 이뮤니파이(Immunefi)에 제보했고, 당시 브리지에는 약 8억 5,000만 달러가 들어 있었다. 실제 피해 없이 수정됐으며, 폴리곤은 포상금 200만 달러를 지급했다. 이뮤니파이는 당시까지 지급된 가장 큰 버그 포상금이라고 밝혔다.
1.출금 증명을 구분하는 값이 하나가 아니었다#
플라즈마 브리지에서 폴리곤의 자금을 이더리움으로 빼려면 폴리곤에서 토큰을 소각하고, 체크포인트가 이더리움에 기록되기를 기다린 뒤, 출금 증명을 제출하고 7일을 더 기다린다. 같은 소각을 두 번 인정하지 않도록 WithdrawManager 계약은 증명에서 만든 출금 ID(Exit ID)로 중복을 걸렀다. 원칙은 소각 거래 하나에 출금 ID 하나였다. 이뮤니파이의 사후 분석에 따르면 문제는 머클 증명의 branchMask 값을 두 곳에서 다르게 읽는 데 있었다. 증명 검증 코드는 HP 인코딩된 값의 첫 바이트 일부를 무시했지만, 출금 ID를 만드는 코드는 전체를 숫자로 읽었다. 그래서 첫 바이트만 바꾼 값은 검증을 그대로 통과하면서 출금 ID는 달라졌다. 같은 경로를 나타내는 인코딩이 224가지였다.
[1]2.10만 달러로 2,230만 달러를 빼낼 수 있었다#
공격 절차는 단순했다. 브리지에 큰돈을 넣고, 출금을 시작해 7일을 기다린 뒤, branchMask의 첫 바이트만 바꾼 같은 증명을 최대 223번 다시 제출하면 됐다. 이뮤니파이는 10만 달러로 시작하면 2,230만 달러를 빼낼 수 있고, 자금을 충분히 쓰면 DepositManager 계약을 비울 수 있다고 계산했다. 제보 당시 이 계약에는 약 8억 5,000만 달러가 있었다.
[2][3]3.일주일 만의 수정과 200만 달러 포상#
이뮤니파이 분류팀이 문제를 확인해 넘기자 폴리곤은 30분 만에 버그를 확인하고 수정에 들어갔다. 고친 코드는 인코딩된 branchMask의 첫 바이트가 0x00인지 확인해, 아니면 거부한다. 메인넷 배포와 포상금 지급까지 일주일 안에 끝났고 이용자 자금 손실은 없었다. 바그너는 이를 근본 해결책이라기보다 당장의 위험을 막는 조치로 평가한 것으로 전해진다. 폴리곤은 2021년 9월 이뮤니파이에서 버그 바운티를 시작했고, 바그너는 이 프로그램을 보고 코드를 살폈다. 폴리곤은 포상 상한액인 200만 달러를 그대로 지급했다. 이듬해 옵티미즘 무한 발행 버그도 200만 달러대 포상금으로 마무리됐다.
[4][5][6]4.연표2건
- 2021.10사건10월5일 바그너, 플라즈마 브리지 이중 지불 취약점 제보
- 2021.10이정표10월21일 사후 분석 공개, 포상금 200만 달러 지급 발표
각주
- [1]Polygon Double-Spend Bugfix Review — $2m Bounty — immunefi.com · Immunefi
- [2]Polygon Double-Spend Bugfix Review — $2m Bounty — immunefi.com · Immunefi
- [3]Polygon Dodges $850M Hack, Pays Record $2M Bounty — decrypt.co · Decrypt
- [4]Polygon Double-Spend Bugfix Review — $2m Bounty — immunefi.com · Immunefi
- [5]Polygon Dodges $850M Hack, Pays Record $2M Bounty — decrypt.co · Decrypt
- [6]Polygon $850 Million Bug Addressed — insured.substack.com · Insured Finance
이 문서가 도움이 됐나요?
토큰포스트 위키, “폴리곤 플라즈마 브리지 버그”, 2026-10-31 수정, https://wiki.tokenpost.kr/w/polygon-plasma-bridge-bug-2021Accept: text/markdown 로 요청해도 같은 결과문단 3개 · 연표 2건 · 각주 6개