용어집 / 프라이버시와 보안
주소 오염
별칭은 Address poisoning입니다.
- 주소 오염이란 무엇입니까?
- 주소 오염은 사기꾼이 이미 사용 중인 주소를 흉내 낸 주소에서 가치 없는 트랜잭션을 보내, 사용자가 거래 내역에서 사기꾼의 주소를 복사하기를 노리는 절도 수법입니다.
노리는 것은 하나의 습관입니다. 수취인에게 새 주소를 요청하는 대신 지갑의 트랜잭션 목록을 뒤져 주소를 재사용하는 습관입니다. 공격자는 앞 몇 글자와 뒤 몇 글자가 일치하는 유사 주소를 대량으로 만들어 냅니다. 대부분의 지갑 화면과 블록 탐색기가 보여 주는 것이 바로 그 몇 글자입니다. 2024년 5월에 한 거래자가 1,155개의 래핑 비트코인을 붙여넣기 한 번으로 잃었고, 그 가치는 약 6,800만 달러였습니다.
작동 방식
주소 오염에는 세 단계가 있고, 그중 마지막 단계에서만 이용자가 개입합니다.
유사 주소 생성. 비트코인 주소는 설계상 길고, 인터페이스는 가운데를 숨깁니다. bech32 주소는 32자 알파벳을 사용하므로, 대상 주소의 앞 네 글자와 뒤 네 글자가 일치하는 주소를 만들려면 대략 32의 8제곱, 즉 약 1.1조개의 후보를 탐색해야 합니다. 시판용 GPU 1대를 밤새 돌리면 도달할 수 있고, 탐색은 손쉽게 병렬화되므로 임대한 장비 하나로 수천 개의 대상을 한꺼번에 오염시킬 수 있습니다. 공격자에게 필요한 것은 이용자의 키가 아니라, 이용자가 신뢰하는 주소와 닮은 자기 주소 하나뿐입니다.
유사 주소 심기. 비트코인에서 공격자는 유사 주소에서 이용자의 주소로 더스트 금액, 보통 330 또는 546사토시를 보냅니다. 이용자의 지갑에는 수취 기록이 남고, 보낸 사람 항목에는 이용자가 실제로 사용하는 주소와 한눈에 구별할 수 없는 주소가 표시됩니다. 일부 캠페인은 반대 방향으로 오염시키기도 합니다. 이용자가 자기 출금에 계속 붙여넣는 거래소 입금 주소와 닮은 주소에서 보내는 방식입니다.
대기. 몇 주 뒤 이용자가 송금하려 합니다. 내역을 훑어 “지난번에 쓴 주소”를 찾아 복사하고 붙여넣고 확인합니다. 그 트랜잭션은 유효하고 서명도 올바르며, 대략 10분 뒤 확정되는 순간부터 되돌릴 수 없습니다. 사기 대응 부서는 없습니다. 프로토콜 수준에서 사기는 일어나지 않았기 때문입니다. 이용자는 네트워크에 지시한 그 주소에 정확히 지급한 것입니다.
경제성은 체인마다 다릅니다. 이더리움에서는 공격자가 가스만 부담하고 0가치 전송을 보낼 수 있으므로 오염 비용이 거의 들지 않고 산업적 규모로 이루어집니다. 비트코인의 더스트 규칙은 시도마다 소액 결제를 강제하며, 이 정책이 조용히 스팸 억제로 작동하는 몇 안 되는 지점 중 하나입니다.
비트코인을 구매할 때 이것이 중요한 이유
새 구매자의 삶에서 가장 위험한 1분은 방금 설정한 지갑으로 거래소에서 처음 출금하는 순간입니다.
두 앱 사이에서 낯선 문자열을 복사하고 있고, 주소록이 아직 없으며, 가운데 20글자가 바뀐 것을 알아차릴 가능성이 가장 낮은 때입니다. 또한 금액이 대개 보유 자산 전부인 때이기도 합니다. 세 가지 통제로 위험의 거의 전부를 없앨 수 있고, 그중 어느 것도 조심하는 것에 의존하지 않습니다.
출금 허용 목록을 설정하십시오. Kraken, Coinbase, Binance 모두 계좌가 보낼 수 있는 주소를 등록할 수 있게 해 주며, 대부분은 새로 추가한 주소를 사용할 수 있게 되기까지 지연 시간을 둡니다. 아무것도 도난당하지 않는 평온한 때에 한 번 설정하면 됩니다. 허용 목록이 설정된 계좌에 오염된 주소를 붙여넣으면 그냥 거부됩니다.
주소는 내역이 아니라 수취 기기에서 가져오십시오. 하드웨어 지갑은 자체 화면에 수취 주소를 생성해 표시합니다. Trezor와 Ledger 모두 기기에서 이를 확인하게 하며, 컴퓨터의 악성코드나 위조된 내역은 기기가 표시하는 내용을 바꿀 수 없습니다. 송금할 때는 반대로 하십시오. 승인하기 전에 기기 화면에서 목적지를 읽으십시오.
가운데를 확인하십시오. 앞 네 글자와 뒤 네 글자를 비교하는 것은 바로 이 공격이 통과하도록 설계된 검사입니다. 문자열 가운데 부분의 연속된 글자를 비교하거나, 더 나아가 읽는 대신 QR 코드를 스캔해 전체를 비교하십시오.
6,800만 달러짜리 붙여넣기
2024년 5월 3일에 한 거래자가 1,155개의 래핑 비트코인을 옮기려 준비했고, 당시 가치는 약 6,800만 달러였으며, 먼저 책임 있는 일을 했습니다. 소액 시험 전송입니다.
공격자는 바로 그 패턴을 찾아 멤풀을 지켜보고 있었습니다. 몇 분 안에 정당한 목적지의 앞 글자와 뒤 글자가 일치하는 주소를 만들어 그 주소에서 토큰 전송을 보냈고, 오염된 항목이 실제 항목 바로 위에 보낸 사람의 내역에 남았습니다. 1,155개 코인 전송은 공격자에게 갔습니다.
결말은 이례적입니다. 온체인 조사관들이 공격자의 인프라를 추적해 공개했고, 약 일주일 뒤 자금은 전액 반환되었습니다. 그 결과 중 반복 가능한 것은 아무것도 없습니다. 환수가 이루어진 것은 금액이 공공 포렌식의 주목을 끌 만큼 컸고 공격자가 감당할 위험이 그만한 가치가 없다고 판단했기 때문이며, 어떤 프로토콜이나 회사에 결제를 되돌릴 방법이 있어서가 아닙니다.
주소 오염 vs 더스팅 공격
주소 오염과 더스팅 공격은 모두 예상치 못한 소액 입금으로 도착하며, 서로 다른 실수를 노립니다. 더스팅 공격은 코인 자체가 다시 유통되기를 원합니다. 다른 출력과 함께 사용되어 체인 분석가가 둘을 하나의 클러스터로 묶을 수 있게 하려는 것입니다. 주소 오염은 더스트가 어떻게 되든 관심이 없습니다. 공격의 핵심은 내역에 남는 보낸 사람 주소입니다. 출력을 동결하면 첫 번째 공격은 막을 수 있지만 두 번째 공격에는 아무 효과가 없으며, 그래서 여기서 진짜 대응책은 트랜잭션 목록에서 주소를 가져오지 않는 것입니다.
주소 오염 vs 클립보드 악성코드
두 공격 모두 이용자가 의도하지 않은 문자열로 비트코인이 가는 것으로 끝나지만, 노리는 지점은 주소가 오가는 경로에서 서로 다릅니다. 클립보드 악성코드는 이용자의 기기에서 실행되는 코드를 필요로 하며 복사와 붙여넣기 사이에 주소를 바꿔치기하므로, 이용자가 본 주소는 맞았고 보낸 주소는 틀렸습니다. 주소 오염은 기기에 대한 접근이 전혀 필요 없습니다. 잘못된 주소는 이미 지갑 자체의 내역에 있었고, 누구나 할 수 있는 결제로 그 자리에 놓인 것입니다. 그래서 오염은 백신 소프트웨어에 면역이며, 이용자의 주소 하나를 아는 사람이면 누구나 접근할 수 있습니다.