브리지가 계속 털리는 이유, 그리고 브리지된 토큰의 정체

·6분 읽기·작성자: SSP Editorial Team
SSP Academy 커버: 크로스체인 브리지 해킹과 래핑된 토큰

브리지가 계속 털리는 이유, 그리고 브리지된 토큰의 정체

2021년과 2022년의 상당 기간 동안, 크로스체인 브리지는 암호화폐 세계 전체에서 가장 꾸준히 털린 대상이었습니다. 거래소도 아니고, 지갑도 아니고, 스마트 컨트랙트 일반도 아닌 — 브리지였습니다.

Ronin은 약 6억 2500만 달러를 잃었습니다. Poly Network는 6억 달러 넘게 잃었습니다. Wormhole은 3억 2000만 달러가량. Nomad는 2억 달러에 가깝게. 네 건에서 15억 달러가 넘고, 목록은 넷보다 깁니다.

그중 어느 것도 비트코인이나 이더리움, 또는 어떤 기반 체인의 실패가 아니었습니다. 왜 그런지 이해하는 것이 브리지에 관해 배울 수 있는 가장 쓸모 있는 일입니다. 브리지를 쓸 때 당신이 정확히 무엇을 믿고 있는지를 알려주기 때문입니다.

체인끼리는 대화할 수 없다

뿌리에 있는 문제는 단순한데도 자주 건너뛰어집니다. 비트코인은 이더리움이 존재한다는 사실조차 모릅니다. 각 체인은 자기 거래만 검증하고, 다른 체인의 상태를 관찰할 장치가 전혀 없습니다. 한쪽이 다른 쪽에서 무슨 일이 있었는지 알아낼 내장된 방법은 없습니다.

그러니 "BTC를 이더리움으로 보낸다"는 말 그대로는 불가능합니다. 당신의 비트코인은 비트코인을 떠날 수 없습니다.

실제로 벌어지는 일은 대체입니다. 당신은 진짜 BTC를 브리지가 통제하는 주소로 보냅니다. 브리지가 그것을 알아채고, 이더리움 쪽의 무언가가 그 BTC를 대표하는 토큰을 당신에게 발행합니다. 나가고 싶어지면 토큰을 태우고, 브리지는 원본을 풀어줍니다.

결정적인 귀결은 이렇습니다. 브리지된 토큰은 그 자산이 아닙니다. 브리지를 운영하는 자가 보관하는, 그 자산 더미에 대한 청구권입니다. 그 값어치는 전적으로 그 더미가 여태 거기 있고 운영자가 여전히 상환에 응한다는 데 놓여 있습니다. 더미가 비워지면 당신의 래핑된 토큰은 아무것도 아닌 것에 대한 영수증입니다 — 위의 사고마다 보유자들이 알아낸 것이 정확히 그것이었습니다.

입금이 있었다고 누군가는 판정해야 한다

어느 체인도 다른 체인을 관찰할 수 없으니, 제삼자가 체인 A를 지켜보고 체인 B에게 입금이 있었다고 증언해야 합니다. 그 증언 장치가 바로 브리지이고, 모든 돈이 사라지는 곳도 거기입니다.

설계는 얼마나 믿어야 하는지에 따라 갈립니다.

멀티시그 또는 검증자 집합 — 정족수가 반출을 승인하는 고정된 서명자 무리. 단순하고 빠르며, 자금을 움직일 수 있는 최소한의 키 개수만큼만 강합니다.

낙관적 모형 — 일정 기간 안에 이의가 제기되지 않으면 메시지를 유효한 것으로 봅니다. 값싸지만, 누군가 정말로 지켜보고 있어야 하고 이의 제기 논리가 옳아야 합니다.

경량 클라이언트와 증명 — 목적지 체인이 출발지 체인 상태에 대한 암호학적 증명을 검증합니다. 가장 튼튼하고 가장 비싼 방식이며, 그래서 마땅히 그래야 할 만큼 흔하지 않습니다.

나머지는 전부 변형입니다. 중요한 것은, 거의 모든 경우에 자금 더미와 공격자 사이를 가로막는 것이 작은 당사자 무리이거나 단 하나의 검증 함수라는 사실입니다.

네 번의 실패, 그리고 각각이 가르치는 것

Ronin — 뚫린 것은 코드가 아니라 키였다. 이 브리지는 아홉 검증자 집합을 썼고, 출금 승인에는 다섯이 필요했습니다. 공격자는 표적 피싱으로 네 개의 키를 얻고, 다섯 번째는 예전에 서명 권한을 받고 한 번도 회수되지 않은 제삼자를 거쳐 손에 넣었습니다. 아홉 중 다섯, 정족수 충족, 자금 반출. 암호학적으로는 아무것도 깨지지 않았습니다. 서명 검사는 완벽하게 작동했습니다 — 다만 공격자의 서명을 검증했을 뿐입니다.

교훈은 "멀티시그가 나쁘다"가 아닙니다. 정족수는 그 서명자들이 서로 독립적인 만큼만 의미가 있다는 것입니다. 한 회사 안의 키 넷에 묵은 권한 하나를 더한 것은 다섯-of-아홉이 아니라, 옷을 갈아입은 하나-of-둘에 가깝습니다.

Poly Network — 컨트랙트가 제 문지기를 갈아치우도록 설득당했다. 공격자는 크로스체인 호출 경로를 찾아내, 어떤 메시지가 정당한지를 정하는 keeper 역할을 자신이 통제하는 주소로 바꿔 놓았습니다. 그 뒤로 모든 부정한 출금은, 컨트랙트가 보기에는 적법하게 승인된 것이었습니다.

교훈: 브리지에서 가장 위험한 함수는 돈을 옮기는 함수인 경우가 드뭅니다. 누가 그렇게 해도 되는지를 정하는 함수입니다.

Wormhole — 서명 검사 자체에 결함이 있었다. 검증 루틴이 위조된 수호자 서명 묶음을 받아들이도록 속을 수 있었고, 그 덕에 공격자는 이더리움 쪽에서 아무 담보도 없는 wETH 12만 개를 솔라나에서 찍어냈습니다.

교훈: 올바른 검증기가 없다면 "서명으로 검증됨"은 아무 뜻도 없습니다. 암호학은 멀쩡했고, 그 둘레의 코드가 아니었습니다.

Nomad — 설정 변경 하나가 모두에게 문을 열어줬다. 정례 업그레이드가 신뢰 루트를 0 값으로 남겼고, 그 효과로 사실상 어떤 메시지든 증명된 것처럼 보이게 됐습니다. 그 악용에는 특별한 기술이 필요 없었습니다. 사람들은 첫 공격자의 거래를 복사하고, 자기 주소로 바꿔 넣고, 되풀이했습니다. 집단적인 퍼가기가 된 것이죠.

교훈, 그리고 이건 불편한 쪽입니다: 이것은 기묘한 공격이 아니었습니다. 배포 실수였습니다. 브리지 손실의 대부분은 패배한 암호학보다 엉망이 된 운영에 더 가깝습니다.

이것이 당신에게 뜻하는 바

브리지된 자산은 체인의 위험이 아니라 브리지의 위험을 집니다. 다른 체인에서 래핑된 BTC를 들고 있는 것은 BTC를 들고 있는 것이 아닙니다. 그 브리지에서 가장 약한 부품이 무엇이든 그것으로 담보된 청구권을 들고 있는 것입니다. 그래도 완전히 받아들일 만할 수 있습니다 — 다만 그것은 가정이 아니라 결정이어야 합니다.

대안이 있을 때는 브리지를 쓰지 않는 쪽을 택하십시오. 목적지 체인에서 그 자산을 곧바로 살 수 있거나, 중앙화 거래소를 건너는 지점으로 쓸 수 있다면, 브리지 위험을 다른 — 그리고 대개 더 잘 이해된 — 위험과 맞바꾼 것입니다. 어느 쪽도 무위험은 아닙니다. 다만 다른 방식으로 무너질 뿐이고, 거래소의 실패 양상은 적어도 잘 정리되어 있습니다.

가치를 브리지된 형태로 세워두지 마십시오. 브리지 위험은 시간과 함께 쌓입니다. 건너가서 할 일을 하고 건너오면 잠깐 노출됩니다. 래핑된 자산을 일 년 들고 있으면 일 년 노출됩니다.

브리지는 인터페이스가 아니라 신뢰 모형으로 판단하십시오. 몇 명의 서명자가 자금을 움직일 수 있습니까? 그들은 독립된 조직입니까, 아니면 한 팀입니까? 코드는 감사받았습니까 — 그리고 더 말해주는 것으로, 시간과 물량을 견뎌냈습니까? 매끈한 화면은 아무것도 알려주지 않습니다.

신뢰에 맞춰 금액을 정하십시오. 단순한 규칙은, 운영자가 사라져도 감당할 수 있는 액수를 넘겨 브리지하지 않는 것입니다. 최악의 경우 그 둘은 같은 일이니까요.

SSP는 어디에 서 있나

SSP는 EVM 체인 사이의 자산 이동을 지원하며, 그것이 무엇을 지키고 무엇을 지키지 못하는지는 정확히 말해둘 값어치가 있습니다.

우리의 2-of-2는 당신의 키와 승인을 지킵니다. 두 기기가 모두 서명하지 않으면 누구도 브리지 거래를 시작할 수 없고, 각 기기에서 무엇을 승인하는지 보게 됩니다. 그 성질은 온전히 유지됩니다.

할 수 없는 일은 브리지 자체를 안전하게 만드는 것입니다. 당신의 자산이 브리지 컨트랙트에 들어간 순간부터, 그것을 다스리는 것은 그 컨트랙트의 규칙과 그 운영자의 키 관리이지 당신의 멀티시그가 아닙니다. 두 기기 승인은 누군가 허락 없이 당신의 자금을 옮기는 데 맞선 훌륭한 보호입니다. 당신이 스스로 의도해서 보낸 곳에서 자금을 빼앗기는 데에는 아무런 보호도 되지 못합니다.

이것은 공학으로 우회할 수 있는 한계가 아니며, 아닌 척하는 것은 정직하지 못한 일입니다. 브리지는 암호화폐에서 정직한 답이 "안전은 거의 전적으로 다른 누군가에게 달려 있다"인 몇 안 되는 지점이고, 옳은 대응은 건너기 전에 그 누군가가 누구인지 꼼꼼히 들여다보는 것입니다.

이 글 공유하기

관련 글