어제 올린 아즈텍 커넥트 해킹 건의 원인이 어느 정도 정리되어 공유드립니다.
sm-stack · 2026.06.16 · Short
어제 올린 아즈텍 커넥트 해킹 건의 원인이 어느 정도 정리되어 공유드립니다. 원인은 ZK 증명이 검증하는 트랜잭션 범위와 L1 정산로직이 실제로 처리하는 범위가 서로 어긋난 것이었습니다. 구체적으로, ZK 증명은 32개의 슬롯(트랜잭션)을 커밋하는데, L1 컨트랙트는 공격자가 정한 numRealTxs 값(1)만큼, 즉 맨 앞 슬롯 하나만 실제로 처리했습
어제 올린 아즈텍 커넥트 해킹 건의 원인이 어느 정도 정리되어 공유드립니다. 원인은 ZK 증명이 검증하는 트랜잭션 범위와 L1 정산로직이 실제로 처리하는 범위가 서로 어긋난 것이었습니다. 구체적으로, ZK 증명은 32개의 슬롯(트랜잭션)을 커밋하는데, L1 컨트랙트는 공격자가 정한 numRealTxs 값(1)만큼, 즉 맨 앞 슬롯 하나만 실제로 처리했습니다. 그래서 뒤쪽 슬롯에 끼워넣은 가짜 deposit은 롤업 상태(L2)에는 반영되지만 L1 정산 단계에서는 아예 검사되지 않았습니다. 즉 L2 장부에는 입금된 걸로 찍히는데 L1에서는 토큰을 실제로 가져가지 않은 겁니다. L1에는 없는 가짜 L2 잔고가 만들어진 거죠. 공격자는 단일 트랜잭션 안에서 ZK 증명을 14번 연속 제출했고, 앞 7번으로 7개 자산의 가짜 잔액을 만든 뒤 뒤 7번으로 그 잔액을 정상 출금해서 빼냈습니다. 빠져나간 규모는 909 ETH, 270,500 DAI, 167 wstETH 등 약 $2.19M입니다. SNARK나 암호학이 깨진 것이 아니라, 증명이 묶어야 할 범위를 컨트랙트 정산 로직이 그대로 따라가지 않은, 증명과 정산 사이의 갭이 문제였던 걸로 정리할 수 있겠습니다. 여기에 이미 deprecated된, 업그레이드 불가 컨트랙트라 팀이 조치를 할 수 없는 상태였던 게 피해를 키운 것으로 보이네요. 출처