Нове замилювання очей з підписами Uniswap Permit2: активи крадуться після одного підпису

Розкриття замилювання очей Uniswap Permit2: тільки підпишіть, і вас обкрадуть

Хакери завжди були лякаючим існуванням у екосистемі Web3. Для проектів відкритий код означає, що вони розробляють, як по лезу ножа, побоюючись, що одна помилка в коді може залишити вразливість. Для окремих користувачів, якщо вони не розуміють, що відбувається, кожна взаємодія в ланцюгу або підпис може призвести до крадіжки активів. Тому проблеми безпеки завжди були однією з найбільш складних проблем у криптосвіті. Через особливості блокчейну, як тільки активи вкрадені, їх майже неможливо повернути, тому в криптосвіті особливо важливо володіти знаннями про безпеку.

Нещодавно було виявлено новий тип фішингу, який активізувався приблизно два місяці тому. Достатньо підписати, і вас можуть обікрасти; метод вкрай прихований і важкий для запобігання. Крім того, адреси, які раніше використовували взаємодію з Uniswap, також можуть бути під загрозою. У цій статті буде проведено популяризацію знань про цей метод фішингу з підписом, щоб якомога більше людей уникли втрат активів.

Хід подій

Нещодавно один мій друг ( умовно званий Маленьким А ) втратив активи у своєму гаманці. На відміну від звичайних способів крадіжки, Маленький А не розкрив свій приватний ключ і не взаємодіяв з контрактами фішингових сайтів.

За допомогою блокчейн-браузера можна побачити, що вкрадені USDT з гаманця маленького А були переведені за допомогою функції Transfer From. Це означає, що цей вкрадений актив був переміщений з іншої адреси, а не внаслідок витоку приватного ключа гаманця.

Перевірка деталей транзакції виявила деякі ключові підказки:

  • Адреса, що закінчується на fd51, перевела активи маленького А на адресу, що закінчується на a0c8.
  • Ця операція взаємодіє з контрактом Permit2 Uniswap.

Підпис було вкрадено? Розкриття шахрайства з підписами Uniswap Permit2

Отже, виникає питання, як адреса з кінцевими цифрами fd51 отримала права на ці активи? Чому це пов'язано з Uniswap?

По-перше, потрібно знати, що для успішного виклику функції Transfer From, попередньою умовою є те, що викликач повинен мати права на обмеження цього токена, тобто approve. Коли ми використовуємо деякі Dapp, як тільки йдеться про передачу активів, потрібно спочатку провести авторизацію ( approve ), тільки тоді контракт Dapp матиме право на переміщення наших активів.

Відповідь знаходиться в записах взаємодії за адресою з кінцевими цифрами fd51. Перед тим, як здійснити Transfer From для переміщення активів маленького A за цією адресою, також була проведена операція Permit, об'єктами взаємодії цих двох операцій є контракт Permit2 від Uniswap.

Підписано, і вас обікрали? Розкриття шахрайства з підписами Uniswap Permit2

Контракт Uniswap Permit2 - це новий смарт-контракт, представлений Uniswap наприкінці 2022 року. За офіційними даними, це контракт на схвалення токенів, який дозволяє ділитися та керувати授权 токенами в різних додатках, з метою створення більш єдиного, економічно доцільного та безпечного користувацького досвіду.

Зі зростанням кількості проектів, які інтегруються з Permit2, він може реалізувати стандартизоване схвалення токенів у всіх програмах. Permit2 покращить досвід користувачів, знижуючи витрати на транзакції, одночасно підвищуючи безпеку смарт-контрактів.

Запуск Permit2 може змінити правила гри в екосистемі Dapp. Простими словами, традиційний підхід вимагає авторизації кожного разу, коли відбувається взаємодія з Dapp для передачі активів, тоді як Permit2 може пропустити цей крок, ефективно знизивши витрати на взаємодію користувачів і забезпечивши кращий користувацький досвід.

Permit2 як посередник між користувачем і Dapp, користувачеві потрібно лише надати права на токени контракту Permit2, всі Dapp, які інтегрують контракт Permit2, можуть ділитися цим лімітом авторизації. Для користувача це знижує витрати на взаємодію та покращує досвід; для Dapp покращення користувацького досвіду приносить більше користувачів та коштів, що є вигідним для обох сторін. Але це також може бути двосічним мечем, проблема полягає у способі взаємодії з Permit2.

У традиційних способах взаємодії, незалежно від того, чи це авторизація, чи переведення коштів, для операційного користувача все є взаємодією на ланцюгу. А Permit2 перетворює дії користувача на підписування поза ланцюгом, всі операції на ланцюгу виконуються проміжними особами (, такими як контракт Permit2 та проекти, які інтегрують Permit2, тощо ). Перевага цього підходу полягає в тому, що, оскільки роль взаємодії на ланцюгу переходить від користувача до проміжної особи, навіть якщо у користувача в гаманці немає ETH, він може використовувати інші токени для сплати газу або повністю компенсувати витрати проміжною особою, залежно від вибору останньої.

Хоча поява Permit2 може змінити правила гри для Dapp у майбутньому, це двосічний меч. Для користувачів підписування поза ланцюгом – це найпростіший момент, коли можна втратити пильність. Наприклад, коли ми підключаємося до деяких Dapp за допомогою гаманця, нам потрібно підписати підключення, більшість людей не перевіряють зміст підпису й не розуміють його значення, і це найбільш небезпечна частина.

Зрозумівши контракт Permit2, повертаючись до події з малим А, стає зрозуміло, чому активи крадуться саме через взаємодію з контрактом Permit2. Щоб відтворити цей метод фішингу підписів Permit2, першим ключовим передумовою є те, що зловлене у фішинг-атаку гаманця повинно бути надано токени для авторизації контракту Permit2 на Uniswap. Наразі для проведення свопу в Dapp або на Uniswap, інтегрованих з Permit2, потрібно авторизувати контракт Permit2.

Підписатися і бути обдуреним? Розкриття фішингу підписів Uniswap Permit2

Інша тривожна точка полягає в тому, що незалежно від того, скільки коштів потрібно обміняти, контракт Uniswap Permit2 за замовчуванням дозволяє користувачеві авторизувати весь залишок цього токена. Хоча MetaMask дозволяє вводити власну суму, більшість людей, ймовірно, просто натиснуть на максимальну або значення за замовчуванням, а значення за замовчуванням для Permit2 є необмеженим.

Це означає, що якщо ви взаємодіяли з Uniswap після 2023 року та надали повноваження контракту Permit2, ви можете бути піддані ризику цього замилювання очей.

Ключовим є функція Permit, яка взаємодіє з контрактом Permit2 за адресою з закінченням fd51. Простими словами, ця функція використовує ваш гаманець для передачі дозволених вами для контракту Permit2 сум токенів іншим адресам. Іншими словами, як тільки зловмисник отримає ваш підпис, він зможе отримати доступ до токенів у вашому гаманці та перевести ваші активи.

детальний аналіз події

функція permit:

функція permit подібна до онлайн підписання контракту. Вона дозволяє тобі (PermitSingle) заздалегідь підписати "контракт", який дозволяє іншим (spender) використати деякі з твоїх токенів у майбутньому.

Вам також потрібно надати підпис (signature), як на паперовому контракті, щоб підтвердити, що цей "контракт" дійсно підписаний вами.

Функціональний процес:

  1. Перевірте, чи не перевищує поточний час термін дії підпису (sigDeadline). Якщо термін дії закінчився, програма зупиняється.
  2. Перевірте справжність підпису. Використовуйте спеціальний метод (signature.verify) для перевірки підпису, щоб переконатися, що він не був підроблений.
  3. Якщо всі перевірки пройдено, оновіть запис програми, зафіксуйте, що ви дозволили іншим користуватися частиною ваших токенів.

Основна увага зосереджена на функціях verify та _updateApproval.

функція verify:

функція verify отримує значення v, r, s з параметрів інформації підпису. v, r, s є значеннями підпису транзакції, які можна використовувати для відновлення адреси підпису транзакції. Після відновлення адреси підпису транзакції контрактом, вона порівнюється з адресою власника токена, що передається: якщо вони однакові, то верифікація проходить, і викликається функція _updateApproval; якщо різні, транзакція скасовується.

_updateApproval Функції:

Після перевірки підпису викликається функція _updateApproval для оновлення значення дозволу, що означає, що ваші права були передані. У цей момент, уповноважена сторона може викликати функцію transferfrom для переведення токенів на вказану адресу.

Переглядаючи справжні деталі транзакцій в мережі, можна виявити:

  • owner є адресою гаманця малого A ( закінчення 308a)
  • У деталях видно адресу контракту токена (USDT) та інформацію про суму та інше
  • Spender є адресою хакера з останніми цифрами fd51
  • sigDeadline є часом дії підпису, signature є інформацією про підпис малюка А

Підписка була вкрадена? Розкриття шахрайства з підписами Uniswap Permit2

Переглянувши історію взаємодії малюка А, виявилося, що раніше малюк А натискав на стандартний ліміт авторизації під час використання Uniswap, тобто майже безмежний ліміт.

Підписали і вас обманули? Розкриваємо шахрайство з підписами Uniswap Permit2

Просте підбиття підсумків: малий A раніше надавав Uniswap необмежений ліміт USDT через Permit2 під час використання Uniswap. Під час операцій у гаманці малий A ненавмисно потрапив у пастку фішингу, спроектовану хакерами, за допомогою підпису Permit2. Отримавши підпис малий A, хакер здійснив два операції в контракті Permit2 - Permit і Transfer From, перемістивши активи малий A. Наразі спостерігається, що контракт Permit2 Uniswap став раєм для фішингу, і цей фішинг за підписами Permit2, здається, почав активізуватися два місяці тому.

У записах взаємодії видно, що більшість - це позначені адреси для замилювання очей (Fake_Phishing), постійно хтось попадається.

Підписка викрадена? Розкриття замилювання очей підпису Uniswap Permit2

Як запобігти?

Ураховуючи, що контракт Uniswap Permit2 може стати більш поширеним у майбутньому, більше проектів інтегрують контракт Permit2 для авторизації та спільного використання, ефективними засобами запобігання є:

1. Зрозуміти та ідентифікувати вміст підпису:

Формат підпису Permit зазвичай містить ключові елементи, такі як Owner, Spender, value, nonce та deadline. Якщо ви хочете скористатися перевагами та низькими витратами, які надає Permit2, обов'язково навчіться розпізнавати цей формат підпису. ( Завантажити безпечний плагін - непоганий вибір ).

Підпис став жертвою злодіїв? Розкриття шахрайства з підписом Uniswap Permit2

2. Розділення зберігання активів і інтерактивного гаманця:

Якщо у вас є велика кількість активів, рекомендується зберігати активи в холодному гаманці, а в онлайн-гаманці тримати лише невелику кількість коштів, що може суттєво зменшити втрати у разі потрапляння на шахрайство.

3. Обмеження дозволу на суму, надану контракту Permit2, або скасування дозволу:

При виконанні свопу на Uniswap, надавайте дозвіл лише на суму, необхідну для взаємодії. Хоча повторне надання дозволу для кожної взаємодії збільшує деякі витрати на взаємодію, це допомагає уникнути фішингу підписів Permit2. Якщо вже надано ліміт, можна використовувати відповідні безпечні плагіни для скасування дозволу.

Підпис зник? Розкриття шахрайства з підписом Uniswap Permit2

4. Визначте природу токена, дізнайтеся, чи підтримує він функцію permit:

У майбутньому може з'явитися все більше ERC20 токенів, які використовують цей розширений протокол для реалізації функції permit. Слід звертати увагу на те, чи підтримують токени, які ви тримаєте, цю функцію; якщо підтримують, будьте особливо обережними при торгівлі або операціях з цими токенами, ретельно перевіряйте, чи є кожен невідомий підпис підписом до функції permit.

5. Якщо після шахрайства є токени на інших платформах, необхідно розробити детальний план порятунку:

Виявивши, що вас обманули, а токени були переведені хакером, якщо ще залишилися токени на інших платформах через стейкинг або інші способи, їх потрібно витягнути та перевести на безпечну адресу. Слід знати, що хакер може в будь-який момент контролювати баланс токенів на вашій адресі. Оскільки він має ваш підпис, як тільки на вкраденій адресі з'являться токени, хакер зможе їх безпосередньо перевести. У цей момент потрібно розробити детальний процес порятунку токенів; витяг токенів та їх переведення повинні виконуватись одночасно, щоб не дати хакеру можливість втрутитись у транзакцію. Можна використовувати MEV-перевод, для цього знадобляться знання про блокчейн та програмування, також можна звернутися за допомогою до професійних безпекових компаній, використовуючи скрипти для агресивного трейдингу.

У майбутньому риболовля на основі Permit2 може ставати все більш поширеною, цей спосіб підписаного обману надзвичайно прихований і важко запобігти. З розширенням сфери застосування Permit2, також зросте кількість адрес, які піддаються ризику. Сподіваюся, що після прочитання цієї статті, її зможуть поширити серед більшої кількості людей, щоб уникнути втрат.

UNI-4.13%
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • 4
  • Поділіться
Прокоментувати
0/400
MetaLord420vip
· 07-31 15:37
Знову вкрали. Я в паніці.
Переглянути оригіналвідповісти на0
CodeAuditQueenvip
· 07-31 15:37
Можна лише сказати, що контракт не бачить, як куля, і, не обережно, активи падіння до нуля.
Переглянути оригіналвідповісти на0
MoonlightGamervip
· 07-31 15:29
Блокчейн великі гравці вже пішли, то що далі?
Переглянути оригіналвідповісти на0
CounterIndicatorvip
· 07-31 15:27
пастка грошей, хто швидше втече
Переглянути оригіналвідповісти на0
  • Закріпити