이번 조치는 아비트럼 EOA에 들어있던 ETH를 특정 주소 (0x000...DA0)로 옮긴 조치로, 일반적으로 원주소에 묶이는 동결 조치와는 결이 약간 다릅니다.
어떻게 그냥 EOA에 들어있는 ETH를 임의로 소각시켰나 트랜잭션 뜯어봤는데 신기해서 공유해봅니다.
L1 security council (emergency) 컨트랙트에 정족수인 9명의 서명 모아 제출, UpgradeExecutor에 delegatecall
실행 페이로드로는 MultiSendCallOnly.multiSend(bytes) 호출.
MultiSend 타겟 주소로 새 컨트랙트를 생성하는 create2 팩토리, 아비트럼 핵심 컨트랙트들의 ProxyAdmin, 아비트럼의 Delayed Inbox 프록시 주소 포함
먼저 create2로는 UpgradeExecutor 전용 함수 (임의로 ETH 이동) 포함하는 새로운 임시 inbox 구현체, 그리고 일회성 업그레이드 오케스트레이터 컨트랙트 배포
업그레이드 오케스트레이터로 기존 Inbox 컨트랙트 업그레이드, 임의 ETH 이동 함수 딱 한번 호출한 뒤 Inbox를 원래대로 되돌림
Delayed Inbox 트랜잭션이 queue에 들어가고나서 공격자 자금은 0x0...DA0로 소각, Delayed Inbox는 트잭 내에서 교체되었지만 정상으로 돌려놓고 빠져나옴
깔끔해서 놀랍네요 ㄷㄷ
