Защо портфейлът ви показва превод, който никога не сте изпращали: трансакции с нулева стойност и отравяне на адреси
Непозната изходяща трансакция не означава автоматично, че портфейлът ви е хакнат. Научете какво действително доказват записите с нулева стойност, приличащите си адреси и реалните движения на активи.
Какво доказва този запис за портфейла ми?
Ако историята ви внезапно показва, че сте изпратили 0 USDT към непознат адрес, самият запис не доказва, че някой е получил достъп до частния ви ключ. Трета страна може да създаде определени записи за прехвърляне на нулев брой токени, в които фигурира адресът ви, без ваш подпис или разрешение да се харчи положителна сума. Записът може да съществува в блокчейна, въпреки че никога не сте инициирали трансакцията.
Полезните въпроси са по-конкретни: Кой е активът? Колко действително е прехвърлено? Кой е подал трансакцията? Какво е разрешило евентуалното реално харчене?
- Събитие за нулево количество токени не доказва, че сте подписали или похарчили нещо. При истински токен точно нулево количество означава, че конкретният превод не е преместил токени.
- Превод под познато име на токен не установява кой е активът. Несвързан договор може да използва същото име и символ.
- Малко входящо плащане може да е истинско и едновременно с това да внедри подвеждащ адрес на подател в историята ви.
- Потвърдено, необяснимо изходящо движение на истински активи изисква проверка. Не го пренебрегвайте, защото друго поле показва нула.
Това ръководство обхваща Ethereum, BNB Smart Chain (BSC) и подобни мрежи с договори за токени по модела на Ethereum. Примерите са умишлено опростени и измислени записи, а не екранни снимки или констатации за определен портфейл.
Първо установете кое поле показва нула
Хората използват израза трансакция с нулева стойност за няколко различни неща. Само едно от тези показания означава, че количеството токени е нула:
- Количество токени: 0 USDC. При истинския договор на USDC точно нулево количество означава, че конкретният превод не прехвърля USDC.
- Стойност на трансакцията: 0 ETH. Към основната трансакция не е приложен ETH. Токените все пак могат да се прехвърлят и действията по договори могат да се изпълняват.
- Прогнозна стойност: $0.00. Интерфейсът показва оценка във фиатна валута. Това не установява количеството токени.
В BSC полето за собствената монета на мрежата обикновено използва BNB вместо ETH. Взаимодействие с договор с нулева стойност в собствената монета може да прехвърля токени, да променя разрешения за харчене или да задейства други операции. Стойността в собствената монета е отделна от входните данни на трансакцията.
Малко положително количество може да се закръгли до $0.00. Актив без надеждна цена също може да има неинформативна фиатна оценка. Разгънете количеството токени до пълната точност; дори показано количество от 0.00 може да скрива по-малко положително количество. Променящата се оценка на портфейла не е надежден запис на единиците, постъпили или напуснали акаунта.
Нулата е допустимо количество токени, затова сама по себе си не доказва атака. Подобните адреси и копираните платежни данни са следи, които си струва да се проверят.
Защо двете полета From могат да се различават
Историята на портфейла може да комбинира информация от различни нива:
- Трансакцията: подписаната инструкция, подадена към мрежата. При обикновена трансакция в Ethereum основното поле From посочва подписалия акаунт.
- Събитието на токена: запис, излъчен от договор при изпълнение. Събитието Transfer има собствени полета From, To и количество.
- Редът в историята: начинът, по който портфейлът или блокчейн браузърът представя информацията. Той може да отбележи събитие като OUT, защото в него адресът ви е посочен като подател.
Тези две полета From не са взаимозаменяеми. Появата на адреса ви вътре в събитие не е подпис от портфейла ви. Злонамерен договор може да постави адреса ви в данните на събитие, но това не прави дневника му произхождащ от истинския договор на токена. Следователно договорът, излъчил събитието, е съществена част от доказателствата.
По същия начин хешът на трансакция я идентифицира, но не установява съгласието ви. Включена трансакция със статус Success показва, че външното ѝ изпълнение не е отменено. Това не е одобрение на токена, получателя или целта.
Пет пояснени примера от историята на трансакциите
Пример 1: Изходящ превод на нула токени, който никога не сте подписвали
Запис в историята: OUT · 0 USDC · От вашия адрес към непознат подобен адрес.
- From на трансакцията: несвързан акаунт е подал трансакцията.
- From на събитието на токена: събитието посочва вашия адрес.
- Договорът, излъчил събитието: истинският договор на USDC в тази мрежа.
- Точно количество токени: нула.
Какво доказва това: истинският договор на токена е записал превод на нулево количество, в който фигурира адресът ви. Този превод не е прехвърлил USDC. Това не доказва, че портфейлът ви е подписал трансакцията, че извикващият има право да харчи положително количество или че ключът ви е откраднат.
Как се случва: ERC-20, широко използваният стандарт за токени, изисква преводите на нулево количество да излъчват събития Transfer. При често използваните реализации функцията за делегиран превод transferFrom проверява дали исканото количество надвишава разрешения на извикващия лимит. Нулата не надвишава лимит от нула. При спазване на останалите правила на договора извикването може да успее без предварително одобрение.
Това не е универсална гаранция за всеки токен. Отделните договори могат да налагат допълнителни ограничения.
Какво да проверите след това: разгледайте останалата част от трансакцията. Нулевият ред описва само себе си; друга операция може да има различен ефект. Ако това е изолиран запис за отравяне без подозрително харчене или промени в разрешенията, подходящият отговор е да избягвате внедрения адрес, а не да приемате, че трябва да смените портфейла.
Пример 2: Фалшива трансакция, показваща голямо количество токени
Запис в историята: OUT · 2,500 USDC · От вашия адрес към непознат адрес.
- Показан символ на токена: USDC.
- Излъчващ договор: несвързан договор, не истински USDC.
- Отчетено количество в събитието: 2,500.
- Движение на истински USDC в тази трансакция: няма.
Какво доказва това: друг договор е излъчил запис, показан с етикет USDC. Това не доказва, че 2,500 истински USDC са напуснали акаунта ви.
Фалшива трансакция в портфейла може да е реален запис в блокчейна, представен подвеждащо. Нападателите могат да копират името и символа на токен и да излъчват събития, приличащи на предишните ви плащания, включително сумите. Нестандартни договори също могат да излъчват записи за преводи, които не отговарят на промени в собствените им салда.
Какво да проверите след това: установете мрежата и точния договор, излъчил събитието. Сравнете адреса с независимо получената от издателя информация за договора в тази мрежа. Познат тикер, лого или знак за проверен изходен код не са достатъчни за потвърждаване на самоличността на издателя.
Пример 3: Много малко реално плащане от подобен адрес
Запис в историята: IN · 0.000001 USDC · От непознат адрес към вашия адрес.
Да предположим, че истинският договор на токена потвърждава превода и балансът ви нараства с това малко количество. Тук действително са пристигнали токени. За получаването им не е било нужно да одобрявате подателя и това не му предоставя право да харчи.
Капанът е в адреса. Вижте тези измислени примери, разделени с интервали, за да се вижда всеки знак. Истинските адреси нямат интервали; удебелените групи по средата се различават:
Проверен получател: 0x7a2f 1111 2222 3333 4444 5555 6666 7777 8888 9c4d
Внедрен адрес: 0x7a2f aaaa bbbb cccc dddd eeee ffff 0000 1111 9c4d
Интерфейс, който показва само началото и края, може да представи и двата като 0x7a2f...9c4d.
Какво доказва това: някой ви е изпратил малко количество от този адрес. Не доказва, че подателят е обичайният ви получател или акаунт, който контролирате. Съвпадащите видими знаци не доказват собственост.
Какво да проверите след това: вземете желаната дестинация от отделно проверен контакт или надеждната страница на акаунта на получателя. Сравнете целия адрес. Отравянето на адреси цели да превърне внедрен запис в историята в адреса, който избирате за бъдещо плащане. Загубата може да настъпи по-късно, когато разрешите напълно валиден превод към грешната дестинация.
Пример 4: Нула ETH, но 2,500 истински токена напускат портфейла
Заглавна информация за трансакцията: Value · 0 ETH.
- Стойност в собствената монета, приложена към извикването: 0 ETH.
- Превод на истински токени: 2,500 USDC от вашия адрес.
- Промяна в баланса на USDC от трансакцията: намаление с 2,500 USDC.
- Статус на изпълнението: Success.
Какво доказва това: в примера истински USDC са прехвърлени навън. Нулата описва ETH, приложени към извикването. Тя не описва превода на USDC и не изключва разходи за gas.
Какво остава неизвестно: защо е направено плащането и дали сте го възнамерявали. То може да съответства на размяна, депозит, планирана операция, плащане към грешен адрес или неразрешено харчене. Съпоставете го с действието, което сте предприели, и планираната дестинация, преди да го класифицирате.
Пример 5: Истински токени напускат, но друг акаунт подава трансакцията
Запис в историята: OUT · 500 истински USDC · Непозната дестинация.
Да приемем, че успешната трансакция е намалила баланса ви на истински USDC с 500, но основното поле From посочва друг човек.
Какво доказва това: токените са преместени. Различният подател на трансакцията не прави движението фалшиво.
Предварително одобрен ползвател може да използва разрешен лимит за токени, без да иска да подписвате нова трансакция за всяко теглене. Някои токени поддържат и подписи permit, които разрешават лимит чрез подписано съобщение, подавано от друга страна. Интелигентните акаунти и делегираните портфейли предлагат допълнителни начини друг да подаде разрешена операция.
Какво да проверите след това: проверете упълномощения ползвател, съответния лимит или подписано разрешение и операцията на портфейла. Ако дебитът остава необяснен, третирайте го като инцидент със сигурността. Доказателствата могат да сочат вредно одобрение, измамен подпис или компрометиран контрол над акаунта; редът сам по себе си не ги разграничава.
При обикновена пряко подписана трансакция вашият адрес в основното поле From е доказателство за валиден подпис на този акаунт. Това все още не доказва, че сте разбирали действието, възнамерявали сте да платите на този получател или лично сте го инициирали. Полето From на събитие за токен е много по-слабо доказателство.
Какво всъщност измерват 270-те милиона опита за отравяне
Двугодишен анализ на активността в Ethereum и BSC от 1 юли 2022 г. до 30 юни 2024 г. установява приблизително 270 милиона записа за отравящи преводи, насочени към 17 милиона адреса.
Записите попадат в три категории:
- 147.7 милиона превода с нулева стойност.
- 118.4 милиона превода на фалшиви токени.
- 4.0 милиона много малки превода.
Това са записи за преводи в рамките на около 18.2 милиона трансакции, тъй като нападателите могат да групират записите. Атакуваните адреси не са равнозначни на хора, компрометирани портфейли или жертви, загубили пари.
Анализът установява 6,633 успешни превода към нападателите на обща стойност най-малко $83.8 милиона. Някои жертви са платили повече от веднъж. Засичането е съсредоточено върху избрани стейбълкойни, затова оценката за загубите е долна граница в този обхват, а не обща сума за всеки токен или верига.
Практическият извод е, че проверяването само за нулеви количества пропуска значителна част от атаката. Фалшивите записи могат да имитират съществено плащане, а малък входящ превод може да пренесе истински токени и едновременно да въведе опасен адрес.
Как да проверите конкретния непознат запис
- Отворете трансакцията в правилната мрежа. Използвайте опцията за блокчейн браузър в портфейла си или познат такъв като Etherscan или BscScan. Проверете статуса. Четенето на публичните данни за трансакцията не изисква свързване на портфейл, одобряване на токени, подписване на съобщение или въвеждане на фраза за възстановяване.
- Установете действителния актив. Разграничете собствените ETH или BNB от токен с такова име. При токените проверете точната мрежа и излъчващия договор спрямо надежден източник от издателя.
- Прочетете количеството с пълната му точност. Отделете количеството токени от стойността в собствената монета и фиатната оценка.
- Разграничете подателя на трансакцията от подателя на събитието. При интелигентен акаунт прегледайте също операцията на портфейла и разрешенията ѝ. Това, че някой друг плаща gas, не доказва, че активите ви не са могли да се преместят.
- Прегледайте цялата трансакция. Проверете всички движения на токени, преводи на собствени монети и свързани промени на разрешения. Ако браузърът показва промени в балансите за цялата трансакция, използвайте ги за сверяване. Днешният непроменен баланс е по-слабо доказателство: по-късни депозити или компенсиращи преводи могат да прикрият предишно движение.
- Потвърдете дестинацията независимо. Използвайте надеждните платежни данни на получателя или запис в адресната книга, който сте проверили по-рано. Скорошен ред в историята е основание за проверка, не доказателство за правилната дестинация.
Ако блокчейн браузърът не изяснява резултата, дайте на официалната поддръжка на доставчика на портфейла мрежата и публичния хеш на трансакцията. Опишете действието, което сте очаквали, ако е имало такова. Тези данни помагат да се различи непозната, но умишлена операция от необяснено харчене, без да се разкриват тайните за управление на портфейла.
Какво да направите след проверката
Ако сте открили само изолиран запис за отравяне
Скрийте или докладвайте спама, ако портфейлът поддържа това, и не използвайте адресите му. Скриването на ред променя интерфейса; то не изтрива блокчейн историята и не отменя разрешения.
Превод с нулево количество може да се случи при нулев разрешен лимит, затова самият запис не е причина да отменяте всички одобрения или да местите всичките си средства. Възможно е да няма свързано с него разрешение за харчене, което да премахнете. Никога не използвайте рекламирания уебсайт на токена или линк за възстановяване от непознат, за да „почистите“ портфейла си.
Ако сте открили подозрително разрешение за харчене
Използвайте надеждния механизъм на портфейла за управление на одобренията, за да прегледате и отмените съответния лимит. Прекъсването на връзката между уебсайт и портфейла не отменя съществуващите одобрения на токени в блокчейна. Отмяната решава проблема с това разрешение; тя не поправя откраднат частен ключ.
Ако истински активи са се преместили без ваше намерение
Запазете хеша на трансакцията, мрежата, засегнатия актив и съответните адреси. Прегледайте скорошните подписи, одобрения и операции на портфейла чрез официалните канали за поддръжка.
Ако има доказателства, че фразата за възстановяване или частният ви ключ са разкрити, създайте нов портфейл с нова фраза на надеждно устройство и следвайте внимателен план за прехвърляне на останалите активи. Друг акаунт, извлечен от компрометираната фраза, не отстранява риска. Ако средствата изчезват автоматично, не продължавайте да добавяте пари за gas: автоматична програма за източване може да ги вземе.
Ако съзнателно сте подписали плащане, но сте копирали отровена дестинация, документирайте тази разлика. Плащането може да е правилно подписано и изпълнено, но да е отишло при грешен получател. Това само по себе си не доказва, че частният ви ключ е откраднат.
Чести въпроси за непознати трансакции
Нападателят накара ли ме да платя gas?
При обичайния сценарий на отравяне нападателят подава трансакцията и плаща мрежовата ѝ такса. Самото посочване на адреса ви в събитие на токен не таксува акаунта ви. Спонсорираните трансакции и интелигентните акаунти обаче означават, че само платецът на таксата не може да докаже, че операцията е безвредна. Проверете реалните ефекти.
А ако трансакцията е неуспешна?
Отменен превод на токени не е завършил прехвърлянето, макар че gas все още може да бъде начислен. Ако портфейлът използва делегиране на акаунт, проверете го отделно: Ethereum може да запази делегирането дори когато последващото изпълнение се провали. Непознато делегиране заслужава проверка.
Хардуерен портфейл би ли предотвратил отравянето на адреси?
Той предоставя още едно място за проверка на дестинацията преди подписване. Не може да направи адрес под контрола на нападател правилен, ако го одобрите. Сравнете пълния адрес на надеждния дисплей за подписване с независимо потвърдените данни на получателя.
Мога ли да спра непознати да добавят такива записи?
По принцип не можете да попречите на трети страни да изпращат активи или да генерират приложими записи с публичен адрес. Филтрите на портфейла и блокчейн браузъра могат да ограничат видимото. Запазвайте проверени получатели и сверявайте пълната дестинация преди плащане; само скриването на записи с нулева стойност не улавя всеки вариант с фалшиви токени или малки преводи.
