VeilSwap
← All posts
보안2026-11-078 min read

주소 포이즌: 스왑 내역에 끼어든 0값 전송

이더리움 20블록 구간에서 USDT 전송 로그의 25%가 0값이었습니다. 서명도 키도 필요 없고, 다음에 복사할 지급·환불 주소를 노립니다.

2026년 11월 7일, 이더리움 연속 20개 블록(26,363,482–26,363,501)의 USDT Transfer 로그를 전부 가져왔다. 2,346건 중 587건이 0값이었고, 이는 약 4분 동안 해당 토큰 전송의 25.0%다. 대부분은 배치 거래로 들어왔지만 하나는 달랐다. 0x8c6ff6…91e1에서 0x8c6f58…91e1로 간 0값 전송으로, 두 주소는 앞 4자리와 뒤 4자리 16진수가 완전히 같다. 이것이 주소 포이즌이다. 키가 털리지도, 컨트랙트가 승인되지도, 서명이 요구되지도 않았다. 공격자가 산 것은 수취인 내역 한 줄뿐이고, 다음 복사·붙여넣기가 틀린 주소를 고르리라 베팅한다. (XMR→USDT 출구 루트)

어떻게 만드나. 공격자는 대상 주소의 앞과 뒤가 같은 주소를 만든다. EVM 주소는 20바이트, 40개의 16진 문자로 표시된다. 앞 k자와 뒤 k자를 고정해도 가운데는 자유롭다. 배니티 검색에서 k+k 일치는 대략 16^(2k)번 시도가 필요하다. 3+3이면 1,670만 번으로 노트북에서 몇 분, 4+4면 43억 번으로 GPU 장비면 가능하지만 공짜는 아니다. 그다음 공격자는 가짜 주소에서 대상에게 0 USDT(또는 0.000001)를 보낸다. 직접 보내거나 배치 컨트랙트를 거칠 수 있다. 거래는 유효하고 가스만 조금 내면 되며, 공격자 주소가 대상 내역에 기록된다. 지갑과 익스플로러는 앞뒤 몇 글자만 보여 주므로 가짜는 언뜻 맞아 보인다. (XMR→USDT 출구 루트)

측정이 말하는 것과 말하지 않는 것. 다른 20블록 구간에서 0값 비율은 14.6%(2,287건 중 333건), 같은 시기 USDC 구간은 19.0%(1,638건 중 311건)였다. 비율은 스팸 파동에 따라 움직인다. 0값 전송은 값싼 잡음이다. 첫 구간의 배치 거래 한 건은 네 개 토큰 컨트랙트에 116개의 0값 Transfer 로그를 내보내며 1,767,530 가스, 46.5 gwei를 냈다. 0.0000822 ETH, 14:10 UTC ETH 2,243달러 기준 약 0.18달러, 로그당 약 0.0016달러다. 많은 0값 전송은 에어드롭 쓰레기나 인덱서 장난이고, 포이즌의 신호는 금액이 아니라 주소 쌍이다.

왜 적어도 이번 표본에서는 이더리움형인가. TRON 연속 60개 블록(87,795,702–87,795,761)에는 27,423건 거래, 5,514회 TRC20 transfer 호출이 있었고 0값은 한 건도 없었다. 잔액이 있는 주소에서 USDT-TRC20 컨트랙트(TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t)의 transfer(0)를 시뮬레이션하니 63,999 에너지를 썼고, 네트워크 100 sun/에너지 기준 6.3999 TRX, TRX 0.3196달러로 약 2.04달러다. 이더리움 배치는 로그당 0.0016달러로 약 1,300배 싸다. 이 비용 차이는 우리가 측정한 0값 대량 스팸이 이더리움에서 나타나는 이유를 설명하는 데 도움이 된다. TRON이 안전하다는 뜻은 아니다. 표본은 약 3분이고, 가짜 TRC20 컨트랙트나 다른 전송 방법이면 주소를 심을 수 있다. (XMR→USDT 출구 루트)

스왑 양식에서는 무엇을 뜻하나. 스왑은 지급 주소와 환불 주소를 내가 지정하고, 사이트가 입금 주소를 준다. 이 사이트의 입금 주소는 주문마다 생성되고 주문 후에야 나타나므로 미리 포이즌할 수 없다. 지급과 환불은 다르다. 내 지갑, 주소록, 내역에서 온다. 가짜 주소를 지급 칸에 붙이면 스왑 출금이 공격자에게 간다. 환불 칸에 붙이면 실패 주문의 환불이 그리로 간다. 환불 칸은 급하게 채우고, 이전 주문 페이지에서 복사하는 일이 많다 — 포이즌이 의지하는 습관 그대로다. Monero의 긴 base58 주소도 지갑이 줄여 표시하면 소용없다. 규칙은 같다.

실제로 통하는 다섯 가지 확인. 1) 지급·환불 주소는 거래 내역, 익스플로러, 채팅에서 복사하지 않는다. 지갑의 받기 화면을 열거나 내 지갑의 QR을 스캔한다. 2) 문자열 전체를 비교한다. 앞뒤 네 글자가 아니다 — 가운데가 가짜가 다른 곳이다. 하드웨어 지갑은 기기 화면에서 전체를 읽는다. 3) 자주 쓰는 코인/네트워크마다 주소록 항목을 만들고 라벨을 붙인다. 저장된 항목은 0값 전송으로 바뀌지 않는다. 4) 네트워크를 확인한다. EVM 주소는 이더리움, BSC, Arbitrum, Base에서 똑같이 생겼고, 이더리움의 포이즌 주소를 BSC 지급 칸에 붙일 수 있다. 5) 큰 금액은 작은 별도 주문부터. 큰 주문에 대한 분할 입금은 부분 결제로 해석될 수 있으므로, 서비스가 문서화하지 않았다면 입금을 쪼개지 않는다. (모네로 확인 대기)

사이트가 할 수 있는 것과 없는 것. 주문 양식은 다섯 필드뿐이고 시드 구문도 서명도 요구하지 않는다. 지급 주소는 주문 생성 시 고정되며 주문 페이지에서 나중에 바꿀 수 없다. 이것이 승인 피싱을 없애지만 복사·붙여넣기 위험을 없애지는 않는다. 주소는 내가 입력한 문자열 그대로다. 주문 페이지는 입금 주소와 금액을 보여 주고, 환불 주소는 주문에 저장된다. 지갑에 0값 토큰이 나타나면 상호작용하지 말고, 그 주소를 복사하지 말고, 가능하면 숨긴다. 취소할 승인은 없다 — 승인한 적이 없다. 0값 전송은 자금을 움직일 수 없고 주소 광고만 할 수 있다.

체크리스트와 작성 시점 숫자. 보내기 전: 전체 문자열 비교, 네트워크 확인, 주소록, 하드웨어 화면, 큰 금액이면 별도 소액 주문. 0인 줄은 결제도 잔액도 아니고 광고다. 작성 시점(2026년 11월 7일 14:23 UTC) 100 USDT-TRC20은 0.1434147 XMR, 1,000은 1.613784 XMR(2개 경로, 150bps 우위), 1 XMR은 606.72 USDT(2개 경로, 201bps), 0.01 BTC는 1.224825 XMR(2개 경로, 101bps). 카탈로그는 438개 자산·65개 네트워크, 그중 6개는 추가 ID가 필요하다. 숫자는 움직이고 페이지의 라이브 견적이 기준이다. (XMR→USDT 출구 루트)

Frequently asked questions

0값 전송으로 지갑이 털리나요?

아니요. 자금을 움직이지 않고 서명이나 승인도 요구하지 않습니다. 보낸 주소를 내역에 쓸 뿐이며, 절도는 그 주소를 지급·환불 칸에 붙여넣은 뒤에 일어납니다. 0인 줄은 거래가 아니라 광고로 보십시오.

받은 적 없는 토큰이 지갑에 뜨는 이유는 무엇인가요?

어떤 토큰 컨트랙트도 임의 주소로 Transfer 이벤트를 낼 수 있고 지갑은 이를 인덱싱합니다. 0값이나 더스트 전송은 보낸 쪽 가스만 씁니다. 상호작용도 스왑도 하지 말고 가능하면 숨기십시오. 잔액은 0이나 사실상 0입니다.

하드웨어 지갑이 주소 포이즌을 막아 주나요?

기기 화면에서 전체 주소를 읽으면 표시 절반은 막습니다. 기기는 주소를 자르지 않으니까요. 하지만 포이즌 주소를 스왑 양식에 붙이는 것은 막지 못합니다. 중요한 검사는 보내기 전 전체 문자열과 네트워크를 대조하는 것입니다.

Keep reading

All articles →

Ready to swap?

No account · No KYC · No email

Exchange now
주소 포이즌: 스왑 내역에 끼어든 0값 전송 — VeilSwap