웜홀 해킹사건 요약

c0wjay
3 min readFeb 22, 2022

--

3주 전에 작성한 글인데,
블로그 새로 운영하기로 마음먹어서 미디엄에 다시 글 올립니다.

[해킹과정]

솔라나의 load_instruction_at function이 실제 sysvar address를 check하지 않는 버그가 있는데, 웜홀의 signature를 인증하는 컨트랙트는 이걸 사용하고
-> 공격자가 이걸 눈치채서 fake sysvar address를 넣어서 function을 작동시키고
-> 웜홀의 signature 인증을 마음대로 조작할 수 있게 되었고
-> 솔라나의 wormhole ETH를 wrapping하는 컨트랙트를 마치 가디안이 verification한 것처럼 속여서
-> 120k wormhole ETH를 솔라나에서 공짜로 wrapping하고
-> 웜홀 브릿지를 통해 다시 ETH로 다시 환급해서 먹튀한 과정입니다.

[How?]

그럼 공격자가 이걸 어떻게 캐치했냐? 하면
웜홀 dev들은 위 버그 픽스가 포함된 솔라나 툴체인 업그레이드를 1월 13일에 깃험 레포에 push하였고, (정기적 업그레이드)
다음 버전 release 전에 audit될 예정이었습니다.
문제는 위 취약점을 웜홀 dev들은 인식하지 못하고 있었고,
다음 버전 release가 지연되고 있는 상태에서,
약 3주간 오픈 소스로 코드가 공개되어 있었고,
취약점을 파악한 공격자가 공격을 감행한 것으로 보입니다.

웜홀만의 과실이라기 보다는, 해당 취약점에 대해 웜홀 측에게 공지하지 않은 솔라나도 과실이 없진 않아 보입니다.

[참고]

https://twitter.com/samczsun/status/1489044939732406275
https://twitter.com/samczsun/status/1489044939732406275
https://twitter.com/dmihal/status/1488982240830930960
https://twitter.com/kelvinfichter/status/1489000135069777932
https://twitter.com/wireless_anon/status/1489075372662476800
https://twitter.com/AlexSmirnov__/status/1489044652690968578

웜홀 공식 incident report:
https://wormholecrypto.medium.com/wormhole-incident-report-02-02-22-ad9b8f21eec6

--

--

c0wjay
c0wjay

Written by c0wjay

Rustacean interested in Programming Languages.

No responses yet