Web3 Security & Wallet Hygiene 2026: Как защитить депозит от Permit2-дрейнеров, фишинговых подписей и отравленных адресов
Если вы до сих пор думаете, что криптовалюту могут украсть только в том случае, если вы сфотографировали сид-фразу и выложили ее в iCloud — у меня для вас отрезвляющие новости.
В 2025–2026 годах более 85% всех украденных средств с некастодиальных кошельков утекли без компрометации приватного ключа. Владельцы кошельков держали сид-фразы на титановых пластинах в швейцарских сейфах, пользовались аппаратными Ledger и Keystone, но лишились всех USDT, USDC и нативных монет за 1.2 секунды.
Они сделали это добровольно. Собственными руками. Нажав кнопку «Sign» в окне кошелька.
Современные дрейнеры (Inferno, Angel, Pink Drainer и их форки нового поколения) больше не пытаются угадать ваш пароль. Они используют архитектуру самих смарт-контрактов Ethereum, Solana, Arbitrum и Base против вас.
Этот гайд — жесткий полевой практикум по Web3-безопасности. Мы препарируем анатомию атак через Permit / Permit2, покажем механику Address Poisoning, объясним, почему встроенные симуляторы транзакций в MetaMask и Phantom слепы к хитрым эксплойтам, и разберем архитектуру 3-уровневого бункера, которая гарантирует 100% выживание вашего депозита.
# 1. Анатомия Permit2: как вас грабят без списания вашего газа
Исторически, чтобы смарт-контракт мог забрать у вас ERC-20 токены (например, для свапа на Uniswap), требовалась ончейн-транзакция:
// Старый добрый ERC-20 Approve
function approve(address spender, uint256 amount) external returns (bool);
Вы платили комиссию сети (газ), одобряли трату, и только потом dApp списывал токены. Если у вас на кошельке не было ETH на газ, злоумышленник ничего не мог сделать.
Всё изменилось со стандартами EIP-2612 (Permit) и библиотекой Uniswap Permit2. Они были созданы из лучших побуждений: улучшить UX, убрать необходимость платить газ за аппрув и объединить все одобрения под единым смарт-контрактом. Но для мошенников это стало ядерным оружием.
Как работает атака через офчейн-подпись:
Что происходит под капотом:
Вы подписали криптографическое сообщение стандарта EIP-712:{
"types": {
"PermitSingle": [
{ "name": "details", "type": "PermitDetails" },
{ "name": "spender", "type": "address" },
{ "name": "sigDeadline", "type": "uint256" }
]
},
"primaryType": "PermitSingle",
"domain": {
"name": "Permit2",
"chainId": 1,
"verifyingContract": "0x000000000022D473030F116dDEE9F6B43aC78BA3"
},
"message": {
"details": {
"token": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
"amount": "115792089237316195423570985008687907853269984665640564039457584007913129639935",
"expiration": "1788789200",
"nonce": "0"
},
"spender": "0xAttackerContractAddress...",
"sigDeadline": "1788789200"
}
}
Параметр amount содержит число 2^256 - 1 (максимально возможное число в EVM — так называемый Unlimited Approval).
Как только вы нажали «Sign», бэкэнд дрейнера получает байты вашей подписи (v, r, s). Теперь дрейнер сам со своего кошелька отправляет транзакцию в блокчейн, вызывает контракт Permit2.permitTransferFrom() и передает туда вашу подпись.
Контракт видит: подпись валидна, владелец дал добро. Ваши 50,000 USDT улетают на миксер Tornado Cash за один блок. Вы не потратили ни цента на газ, но потеряли весь депозит.
# 2. Address Poisoning: почему копировать кошелек из истории — самоубийство
Это самая коварная и пассивная атака, на которую ежедневно попадаются даже опытные ончейн-арбитражники и киты.
Механика отравления:
0x71C...49A2
0x71C99f38b2c41890123512a849A2
0x71C) и хвост (49A2), нажимаете «Отправить».Золотое правило крипто-гигиены #1: Никогда, ни при каких обстоятельствах не копируйте адреса получателей из истории транзакций кошелька или эксплорера. Используйте только сохраненную адресную книгу биржи (Whitelisting), QR-коды или сверяйте минимум 12 символов адреса (включая середину).
# 3. Архитектура «3-Уровневого Бункера» (Hot → Warm → Cold)
Единственный способ не стать статистикой в отчетах Chainalysis — физически изолировать риски. Профессиональные фонды и системные арбитражники никогда не используют один кошелек для всех задач.
┌─────────────────────────────────────────────────────────────┐
│ LEVEL 3: COLD FORTRESS │
│ Ledger / Keystone / Safe Multisig │
│ - 80% депозита │
│ - НИКОГДА не подключается к браузерным dApp │
│ - Только прямые трансферы на Level 2 │
└──────────────────────────────┬──────────────────────────────┘
│ Direct Transfer Only
▼
┌─────────────────────────────────────────────────────────────┐
│ LEVEL 2: WARM TRADING │
│ Rabby Wallet / Phantom (Верифицированные биржи & DEX) │
│ - 15-20% депозита (рабочий капитал) │
│ - Свапы на проверенных Uniswap / Raydium / Hyperliquid │
│ - Еженедельный сброс всех аппрувов через Revoke.cash │
└──────────────────────────────┬──────────────────────────────┘
│ Small Gas Top-ups
▼
┌─────────────────────────────────────────────────────────────┐
│ LEVEL 1: BURNER / DEG-ZONE │
│ Одноразовый горячий кошелек │
│ - $50 - $150 на балансе │
│ - Любые тестнеты, новые мемкоины на Pump.fun, аирдропы │
│ - После сессии сбрасывается или полностью опустошается │
└─────────────────────────────────────────────────────────────┘
Спецификация уровней:
# 4. Почему симуляции кошельков врут: ловушка ложной безопасности
Многие уверены, что расширения вроде Rabby, Phantom Preview или Wallet Guard защищают на 100%, показывая симуляцию: «Баланс изменится: -$0».
Это опасная иллюзия. Создатели дрейнеров прекрасно знают, как работают симуляторы, и обходят их следующими методами:
1. Проверка симулятора на стороне смарт-контракта
Вредоносный смарт-контракт умеет определять, исполняется ли он внутри ноды симуляции (sandbox) или в реальном блоке майнера. Если контракт видит среду симуляции, функция возвращаетtrue и не трогает баланс. Когда же транзакция отправляется в настоящий блокчейн — срабатывает логика списания.
2. Time-lock и отложенный триггер
Подпись дает право списать средства в любой момент до наступленияdeadline (например, в течение следующих 30 дней). Симулятор показывает, что в момент клика с вашего кошелька ушло $0. Но через 4 часа, когда вы легли спать, скрипт дрейнера активирует подпись и забирает токены.
3. Газовые бомбы и реверты
Транзакция симулируется как успешная, но внутри зашит механизм, требующий 5,000,000 газа при попытке отмены или перехвата, вызывая Out-of-Gas ошибку у защитных ботов.# 5. Полный протокол регулярной гигиены (Еженедельный чек-лист)
Чтобы кошелек оставался стерильным, выполняйте этот регламент каждое воскресенье:
Шаг 1: Полный аудит открытых аппрувов через Revoke.cash
Перейдите на верифицированный сайт Revoke.cash и проверьте все сети (Ethereum, Arbitrum, Base, BSC, Polygon, Solana).Unlimited к контрактам, которыми не пользовались больше недели — нажимайте Revoke.Шаг 2: Чистка подключенных dApp (Connected Sites)
В настройках MetaMask / Phantom зайдите в раздел Connected Sites (Подключенные сайты) и нажмите Disconnect All. Сайты не должны иметь постоянной сессии чтения ваших открытых адресов.Шаг 3: Проверка приватных RPC-эндпоинтов
Убедитесь, что в кошельке не прописаны кастомные RPC, добавленные во время сомнительных тестнетов. Вредоносный RPC может подменять балансы, возвращать ложные данные о комиссиях и подсовывать фишинговые хеши транзакций.# 6. Экстренная эвакуация: что делать, если вы подписали дрейнер ПРЯМО СЕЙЧАС
Если вы нажали подпись и через секунду осознали, что сайт подозрительный:
# 7. Философия Zero-Trust в экосистеме Bitcoin Compass
Платформа Bitcoin Compass изначально спроектирована по институциональному принципу Zero-Custody & Client-Side Encryption:
Резюме: В крипте вы сами себе банк. Но это означает, что вы сами себе и служба безопасности, и инкассация, и аудит. Держите 80% депозита на холодном железе, никогда не подписывайте транзакции в спешке и относитесь к каждому всплывающему окну подписи как к потенциальной попытке опустошить ваш счет.