이게 브릿지를 코드수준에서 익스플로잇한거냐하면 아니긴 합니다. 레이어제로는 크로스체인 메시지를 DVN이라는 그룹이 검증해서 넘겨주는데, 이 DVN이 유효하지 않은 메시지를 옳다고 검증해 넘겨줘서 발생한 사고입니다.
DVN은 디폴트로 레이어제로에서 운영하는 DVN이 하나, 그 외에 앱단에서 구현해서 붙여넣거나 이미 구현된 DVN을 끼워넣을 수 있도록 되어있습니다. Kelp의 경우 디폴트 옵션인 레이어제로 DVN 딱 하나만을 사용했습니다.
그래서 쟁점은 어떻게 조작된 메시지가 레이어제로 DVN을 통과했느냐?인데, 여기에 대해서는 아직 밝혀진게 없는 것 같습니다. 오프체인 수준의 문제인 것 같아서.. source chain쪽에서 발행이 무단으로 이루어졌으면 몰라도, 이번에는 아예 source chain 쪽의 트랜잭션이 발생하지 않은 상태에서 메시지만 넘겨줬고, DVN은 확인이 아예 불가능한 메시지를 받아줬습니다.
이 경우 DVN 자체가 탈취되었거나, rpc가 오염되어 아예 이상한 메시지를 넘겨줬거나, DVN 검증 과정의 엣지케이스가 발생했거나일 것 같네요. 원인이 어디에 있었는지는 곧 나올 것 같은데 팔로업해보겠습니다.
