
에어드롭: 받기 절차가 곧 공격이다
산 적 없는 토큰이 지갑에 나타났습니다. 잔액은 진짜처럼 보입니다. 토큰 이름에 웹사이트가 적혀 있고, 그 사이트는 당신이 더 받을 자격이 있다고 말합니다.
이 문장의 거의 모든 것은 당신이 한 가지 일을 하도록 설계되었습니다. 지갑을 연결하고 서명하는 것이죠. 토큰은 미끼입니다. 받기 절차가 공격입니다.
진짜 에어드롭은 존재하고, 그중 일부는 정말로 값어치가 있었습니다. 하지만 이용자 쪽에서 보면 정당한 받기와 악의적인 받기의 작동 방식이 거의 똑같아 보이고, 바로 그 때문에 이런 종류의 절도가 계속 먹힙니다.
공짜 토큰이 완벽한 미끼인 까닭
누구든 토큰을 만들어 어떤 주소로든 보낼 수 있습니다. 보내는 쪽은 작은 수수료를 내고, 당신은 아무것도 내지 않으며, 거절할 수도 없습니다. 이 비대칭이 사기의 토대 전부입니다.
청하지 않은 토큰은 공격자에게 세 가지 쓸모가 있습니다. 당신이 본 것을 믿도록 길들여진 지갑 화면 안으로 그들의 메시지를 들여놓습니다. 소유감을 만듭니다 — 뭔가 생겼으니 뭔가 해야지. 그리고 당신을 웹사이트로 보낼 구실을 줍니다.
이런 토큰 가운데 일부는 이름이나 기호로 URL을 답니다. 일부는 거대한 잔액을 보여 주는데, 한눈에 대단해 보이도록 터무니없이 긴 발행량을 곁들이곤 합니다. 소수는 팔거나 옮기려는 시도만으로도 악의적 상호작용이 곧바로 일어나도록 만들어져 있습니다.
이는 주소 오염과 더스팅의 가까운 친척입니다. 청하지 않은 값어치가 다른 무언가를 실어 나르는 수단으로 지갑에 내려앉는 것이죠.
토큰을 쥐고 있는 것은 위험이 아니다
여기가 안심해도 되는 대목이고, 정확히 말해 둘 값어치가 있습니다.
당신 주소에 놓인 토큰은 당신에게서 아무것도 가져갈 수 없습니다. 다른 자산을 움직일 수 없고, 당신 대신 서명할 수 없고, 지갑에 손을 뻗을 수도 없습니다. 받는 데 당신이 한 일은 없고, 그것으로 아무것도 하지 않으면 당신은 전과 똑같이 안전합니다.
위험은 당신이 상호작용하는 순간 시작됩니다. 이 부류의 모든 절도에는 당신의 서명이 필요하고, 공격자의 솜씨는 전부 그 서명을 일상적으로 느끼게 만드는 데 쏟아집니다.
그러니 첫 규칙은 단순합니다. 예상치 못한 토큰은 정보이지 초대장이 아닙니다. 언제까지고 무시해도 됩니다.
받기 페이지가 실제로 서명하라고 하는 것
페이지는 "받기", "자격 확인", "연결해서 할당량 보기"를 요구할 것입니다. 실제로 요구하는 것은 대개 셋 중 하나입니다.
토큰 승인. 어떤 계약에 당신이 이미 가진 토큰을 옮길 권리를 주는 거래 — 대개 무제한 허용량으로요. 받기의 일부라고 적혀 있지만 무언가를 받는 일과는 아무 관계가 없습니다. 승인은 내준 순간보다 오래 살아남는 허가이고, 자금을 빼 가는 쪽에게는 하나면 충분합니다.
체인 밖 서명. 이것이 더 위험한 현대적 변종입니다. EIP-2612 permit과 Permit2 같은 표준은 거래가 아니라 서명한 메시지로 토큰 지출을 허가하게 해 줍니다. 가스도 없고, 전파도 없고, 기록에도 아무것도 남지 않습니다 — 그리고 공격자는 나중에 그것을 제출해 당신의 토큰을 옮길 수 있습니다. 거래에 조심하는 법을 익힌 사람들도 "그냥 서명"에는 훨씬 덜 조심하곤 합니다. 아무 값도 들지 않는 것처럼 느껴지니까요.
말한 것보다 더 많은 일을 하는 거래. 자산을 밖으로 빼내는 일까지 한 번의 승인에 묶은 "받기" 호출.
셋에는 공통점이 있습니다. 페이지는 당신에게 돌아갈 이익을 말하고, 실제 페이로드는 그들에게 줄 허가를 말합니다. 그 간극이 블라인드 서명의 의미이고, 에어드롭 받기는 그것이 현실에서 가장 흔히 나타나는 모습입니다.
타입 데이터 서명에서 SSP가 보여 주는 것
체인 밖 permit은 EIP-712 타입 데이터 요청으로 도착하므로, SSP가 그것을 어떻게 다루는지 — 부족한 대목까지 포함해 — 구체적으로 말해 둘 값어치가 있습니다.
dApp이 타입 데이터 서명을 요청하면, SSP는 요청한 사이트의 이름과 URL, 서명할 주소, 네트워크, 그리고 요청이 지금 체인과 다른 체인을 겨냥하면 체인 전환 경고를 보여 줍니다. 그다음 구조화된 EIP-712 페이로드 전체를 보여 줍니다 — 모든 필드를, 아무것도 숨기지 않고요.
서명하려면 SSP Wallet에서 승인하고 이어서 SSP Key에서 확인해야 합니다. 두 기기, 두 번의 의도적인 단계. 이는 장악당한 기기 하나가 혼자 서명을 만들어 내는 일을 실제로 막아 줍니다.
이제 정직한 한계입니다. 타입 데이터의 경우 SSP는 평이한 요약이 아니라 날것의 구조화 JSON을 보여 줍니다. 우리 거래 해독기는 흔한 ERC-20 호출을 읽을 수 있는 문장으로 옮기고 무제한 허용량도 표시하지만, 타입 데이터 permit은 지금은 그렇게 해독되지 않습니다. 온전한 진실을 얻지만 직접 읽어야 합니다. spender, value 또는 amount, 그리고 deadline을 찾으십시오. "받기"가 spender와 큰 값을 담은 무언가에 서명하라고 한다면, 그것은 받기가 아닙니다. 허가입니다.
그리고 두 기기 설계에는 분명히 말해 둘 경계가 있습니다. 장악당한 기기로부터는 지켜 주지만, 당신이 설득당하는 것으로부터는 지켜 주지 못합니다. 악의적인 permit을 두 기기 모두에서 승인하면, 그것은 유효하게 서명된 것입니다. 두 번째 확인은 알아챌 두 번째 기회이지, 알아채리라는 보장이 아닙니다.
진짜 에어드롭과 가짜를 가려내는 법
진짜 에어드롭은 공지되지, 배달되지 않습니다. 정당한 프로젝트는 어떤 받기보다 한참 전에, 자기네가 확립한 경로로 자격을 공지합니다. 그냥 나타나서 자기 받기 사이트를 홍보하는 토큰은 거의 언제나 사기입니다.
직접 찾아가고, 클릭해 따라가지 마십시오. 진짜 무언가를 받을 자격이 있다고 생각한다면, 프로젝트 공식 사이트로 직접 입력하거나 이미 믿는 출처에서 가십시오. 토큰 이름, 다이렉트 메시지, 게시물 아래 답글에 박힌 링크는 결코 따라가지 마십시오.
받기에 당신의 다른 자산이 필요할 리 없습니다. 토큰을 받는 데 이미 가진 무언가를 승인할 필요는 없습니다. 받기가 다른 토큰에 대한 승인이나 permit을 요구하면 멈추십시오.
다급함이 단서입니다. "2시간 안에 받으세요"는 당신이 생각하지 못하게 하려고 있습니다.
페이지의 말이 아니라 서명되는 것을 확인하십시오. 페이지는 당신의 서명을 원하는 쪽이 씁니다. 정직한 것은 페이로드뿐입니다.
이미 무언가에 서명했다면
서두르십시오. 자금을 빼 가는 쪽은 몇 분 만에 자산을 쓸어 가곤 합니다.
허가를 취소하십시오. 체인 위 승인이라면 취소하십시오 — 취소는 바로 그러라고 있습니다. 체인 밖 permit은 더 까다롭습니다. 쓰이기 전까지 체인에 기록되지 않으므로, 현실적인 방어는 서명이 제출되기 전에 영향받은 토큰을 새 주소로 옮기는 것입니다.
여전히 드러난 것을 옮기십시오. 공격자가 아직 닿을 수 있는 모든 것은 닿지 못하는 곳으로 가야 합니다.
더는 상호작용하지 마십시오. "복구" 사이트와 도난을 되돌려 주겠다는 친절한 낯선 이들은 같은 작전의 두 번째 물결입니다.
더 큰 교훈은 어떤 점검표보다 값집니다. 암호화폐에서 무언가를 받아서 돈을 잃는 일은 거의 없습니다. 무언가에 서명해서 잃습니다. 공짜 토큰은 당신이 서명하게 만들려고 누군가 찾아낸 가장 효과적인 방법일 뿐입니다.


