본문으로 이동

주소 포이즈닝

주소 포이즈닝은 거래 내역이나 신뢰할 만해 보이는 화면에 수취인의 유사 주소를 심어 이후 지급이 공격자에게 복사되도록 유도하는 사기입니다. 실제 주소를 바꾸거나 키를 훔치는 것이 아니라 수취인 검증의 허점을 노립니다.

업데이트

교육 목적의 정보이며 투자 조언이 아닙니다. 잘못된 주소로 서명해 보낸 전송은 되돌릴 수 없을 수 있으며, 동결이나 회수도 전혀 보장되지 않습니다.

핵심 답변

주소 포이즈닝은 수취인을 바꿔치기하는 사기입니다. 공격자는 화면에 보이는 앞부분과 뒷부분이 신뢰하는 수취인과 비슷한 별도 주소를 생성한 뒤, 거래 내역이나 신뢰할 만해 보이는 다른 화면에 심습니다. 이후 송금자가 그 유사 주소를 복사하고 해당 주소로 유효한 지급에 서명하기를 노립니다. 이 공격은 정상 주소를 변경하거나 개인 키를 해독하지 않으며, 합의가 전송을 잘못 전달하게 만들지도 않습니다.

심어진 기록은 실제 네이티브 자산 트랜잭션, 표준을 준수한 0 수량 토큰 전송, 또는 다른 토큰 컨트랙트가 발생시킨 로그에서 생길 수 있습니다. 지갑과 탐색기의 활동 화면은 파생된 보기입니다. ’보냄’으로 표시된 행이 화면의 from 주소가 서명한 외부 트랜잭션이 아니라 이벤트 필드에서 파생되었을 수 있습니다. 외부 트랜잭션의 발신자와 목적지, 호출된 컨트랙트, 이벤트 발생 컨트랙트, 인덱싱된 필드, 실제 잔액 변화를 각각 확인해야 합니다.

ERC-55 체크섬은 일부 우발적인 입력 오류를 찾는 데 도움이 되지만, 공격자의 별도 주소도 문법적으로 유효하고 올바른 체크섬을 가질 수 있습니다. 일반적인 20바이트 EVM 주소만으로는 의도한 체인, 자산, 수취인 역할, 입금 메모, 컨트랙트 호출도 식별할 수 없습니다. 안전한 지급 지시는 이 모든 사실을 전체 목적지에 묶어야 합니다.

주소 포이즈닝
0 / 5
0 개 항목 검토; 5 개 항목 미해결

모든 항목을 검토해도 자산, 거래 또는 시스템의 안전이 입증되는 것은 아닙니다.

작동 방식

공격자는 공개 지급 패턴을 관찰하고 지갑이 줄여서 보여 주는 문자와 일치하는 vanity 주소를 탐색합니다. 선택한 16진수 문자가 같다고 계정이 복제되는 것은 아닙니다. 보이지 않는 바이트는 다르고 새 키는 공격자가 통제합니다. 소액 전송으로 이 실제 주소를 내역에 넣을 수 있습니다. 한편 ERC-20은 0 수량 전송을 정상 전송으로 취급하고 Transfer를 발생시키도록 요구하므로, 0 수량 기록만으로 위조, 침해, 승인 또는 경제적 손실을 입증할 수 없습니다.

악성 토큰 컨트랙트는 자체적으로 Transfer(victim, lookalike, 0) 로그를 발생시킬 수도 있습니다. 이 로그는 발생 컨트랙트에 귀속되는 실제 영수증 데이터이지만, 정상 자산 컨트랙트의 이벤트가 아니며 피해자가 외부 트랜잭션에 서명했다는 증거도 아닙니다. 그럼에도 컨트랙트와 호출 맥락을 충분히 확인하지 않고 이벤트 토픽만으로 활동을 분류하는 인덱서는 오해를 부르는 출금 행을 표시할 수 있습니다.

결정적인 통제 대상은 최종 지급 의도입니다. 체인과 네트워크, 네이티브 자산 또는 정확한 토큰 컨트랙트, 전체 수취 주소, 수취인 유형, 수량과 원시 단위, calldata, 메모, 목적지 태그, 유효 기간을 함께 묶어야 합니다. 거래소 입금 주소, 브리지, 프록시, 일회성 경로는 만료되거나 주소 외 정보가 필요할 수 있습니다. 클립보드 악성코드와 변조된 QR 코드는 별개의 공격이지만, 서명 전 전체 목적지를 검증하면 같은 바꿔치기를 탐지할 수 있습니다.

이름과 시험 전송은 보조 통제 수단이지 신원 증명이 아닙니다. 서명 시 의도한 체인에 맞게 ENS 이름을 해석하고 기록해야 합니다. 역방향 이름이 표시되면 같은 주소로 정방향 해석되는지 확인합니다. 소액 시험은 수취인이 별도로 입금을 확인하고 본 지급이 동일한 고정 목적지를 재사용할 때만 유효합니다. 내역에서 다시 복사하면 이 보호는 사라집니다.

다음 절차를 사용합니다.

  1. 인증된 독립 출처에서 체인, 네트워크, 자산과 정확한 토큰 컨트랙트, 수취인 유형, 주소 형식, 수량, 메모, 태그, calldata, 버전, 만료 시점을 고정합니다.
  2. 이름이나 QR 코드는 한 번만 해석하고 형식과 체크섬을 검증한 뒤 전체 목적지 바이트를 의도한 체인에 묶습니다. 역방향 이름은 정방향으로 확인하고, 레이블을 신원으로 간주하지 않습니다.
  3. 거래 내역이 아니라 통제된 허용 목록, 주소록 또는 서명된 청구서와 목적지를 대조합니다. 신규 수취인이나 중요한 변경에는 독립 검토 또는 이중 승인을 요구합니다.
  4. 정확한 미서명 트랜잭션을 디코딩합니다. 네이티브 to와 토큰 또는 브리지 컨트랙트를 구분하고 calldata의 수취인, 토큰, 원시 수량, 승인, 기한, 목적지 의미를 확인합니다.
  5. 적절한 경우 고정된 목적지로 소액 시험을 보내고 수취인의 별도 확인을 받습니다. 본 지급 주소를 거래 내역에서 다시 복사하지 않습니다.
  6. 검증된 기록에서만 본 전송에 서명하고, 신뢰할 수 있는 화면에서 전체 목적지와 수량을 대조한 뒤 올바른 체인에서 영수증, 이벤트 발생 컨트랙트, 로그, 잔액 변화를 확인합니다.
  7. 포이즈닝이나 오송금이 의심되면 후속 지급을 중단하고 해시와 증거를 보존한 뒤, 해당되는 경우 수취 서비스, 발행자 또는 수사 기관에 신속히 연락합니다. 동결, 반환, 회수는 조건부일 뿐 보장되지 않습니다.

예시

  • 축약 표시가 차이를 가립니다. 정상 0x12ab1111111111111111111111111111111189ef와 공격자의 0x12ab9999999999999999999999999999999989ef는 모두 0x12ab...89ef로 표시됩니다. 표시되는 16진수 문자는 4 + 4 = 8개가 같지만 중간 32개 문자는 모두 다릅니다. 표시된 양 끝만 비교하면 잘못 일치하지만 전체 바이트 비교는 일치하지 않습니다.
  • vanity 탐색 작업량. 선택한 16진수 문자 k = 8개를 맞추는 예상 작업량은 16^8 = 4,294,967,296개 후보입니다. 가정한 속도가 50,000,000 candidates/s이면 예상 시간은 4,294,967,296 / 50,000,000 = 85.89934592 s입니다. 이는 탐색 공간의 예일 뿐 실행 시간이나 지갑 경고 기준을 보장하지 않습니다.
  • 로그와 상태. 토큰 컨트랙트가 Transfer(victim, lookalike, 0)을 발생시킵니다. 피해자 잔액은 250,000.000000에서 250,000.000000으로 바뀌므로 변화량은 0.000000이지만, 활동 인덱스에는 전송 행이 표시될 수 있습니다. 이벤트 발생 컨트랙트와 호출 승인을 확인해야 합니다. 이 행만으로는 가치 이동도 피해자의 서명도 입증되지 않습니다.
  • 시험은 목적지를 고정해야 합니다. 자금 관리자가 50,000 USDC를 지급하려고 검증된 주소에 1 USDC를 보내 별도 확인을 받은 뒤 같은 고정 기록에서 49,999 USDC를 보내면 1 + 49,999 = 50,000 USDC입니다. 담당자가 두 번째 지급을 위해 내역의 유사 주소를 다시 복사하면 시험은 해당 49,999 USDC 지급을 보호하지 못합니다.

위험

  • 송금자가 오염된 거래 내역에서 유사 주소를 복사합니다.
  • 축약된 화면이 서로 다른 중간 문자를 숨깁니다.
  • vanity 접두사나 접미사를 수취인 신원으로 오인합니다.
  • 0 수량 ERC-20 전송이 오해를 부르는 내역 행을 만듭니다.
  • 모조 토큰이나 그 로그를 정상 자산 활동으로 오인합니다.
  • 인덱서가 이벤트 필드를 잘못 분류하거나 너무 늦게 정정합니다.
  • 스팸 토큰 이름, 심볼, 아이콘이 신뢰하는 자산을 사칭합니다.
  • 클립보드 악성코드가 서명 전에 검증된 주소를 바꿉니다.
  • 로컬 또는 동기화된 주소록이 오염되거나 오래됩니다.
  • 허용 목록이 잘못된 체인, 자산, 역할 또는 주소 버전을 묶습니다.
  • 유효하지 않거나 누락된 체크섬 경고를 무시합니다.
  • 유효한 체크섬을 수취인 신원 증명으로 오인합니다.
  • ENS 해석이 변경되거나 잘못된 coin type을 사용하거나 오래됩니다.
  • 역방향 이름을 정방향 확인 없이 표시합니다.
  • 소액 시험 뒤 신뢰할 수 없는 출처에서 다시 복사합니다.
  • 거래소 입금 주소, 네트워크, 메모 또는 태그가 잘못되거나 만료됩니다.
  • 브리지, 프록시 또는 컨트랙트 목적지와 필요한 calldata를 잘못 이해합니다.
  • 하드웨어 기기에서도 축약된 문자열만 확인합니다.
  • 개입 전에 잘못된 수취인 트랜잭션이 정규 체인에 확정됩니다.
  • 발행자의 재량적 동결에 의존하거나 회수 사기를 당합니다.

흔한 오해

  • 주소 포이즈닝은 지갑, 키 또는 블록체인이 해킹되었다는 뜻입니다. 일반적인 공격은 수취인 선택을 악용하며, 유효한 암호 기술과 합의는 잘못 서명된 의도를 실행할 뿐입니다.
  • 0 수량 행은 반드시 가짜 온체인 트랜잭션입니다. 표준 준수 전송과 실제 로그도 0 수량일 수 있으므로 출처와 상태 영향을 확인해야 합니다.
  • 양 끝의 일치와 체크섬이 수취인을 증명합니다. 별도의 유효한 주소도 보이는 문자와 일치하고 자체적으로 유효한 체크섬을 가질 수 있습니다.
  • 한 번 성공한 시험은 다음 전송을 자동으로 보호합니다. 본 전송이 고정되고 확인된 목적지를 재사용하지 않으면 보호는 사라집니다.
  • 지갑, 검증자 또는 토큰 발행자는 언제나 지급을 취소할 수 있습니다. 회수 권한과 협조 여부는 자산, 서비스, 관할권, 증거, 시점에 따라 다릅니다.

관련 주제

출처

탐색

위키 검색...