Предупреждение! РазводятПривет.
ИнцидентВчера моего товарища чуть было не развели на альту. Ниже цитата и разбор:
Слушай, смотри что тут со мной произошло только что. Значит я сижу в крипточате одной монеты /удалено/. Так вот этого говна у меня 20к монет. В чате чувак один сегодня написал мол куплю большую сумму /удалено/ дороже чем на бирже. Ну я стукнул ему, сказал что по 6к сат отдам, хотя по бирже 5к она. Чувак согласился. Ну я ему говорю отсылай ты первый битки, он тоже согласился. Первой транзакцией он отправил 0,02 битка, в блокчейне транзакция появилась, смотрел по адресу моего кошелька, транза была **не подтверждена**. Ну я ему сказал мол давай подождем, он сказал мол торопиться давай еще на 0,05, ну я опять подписался, потом еще на 0,1 битка. Все три транзы появились. Бля миллион процентов, только были не подтвержденными, Я смотрел его кошелек с которого он отправлял там тоже были битки 3.5 что-то около того. Да блядь я посмотрел по трезору своему, там тоже битки уже были в ожидании. Но он очень дико торопил, мне это странным показалось. Я решил с трезора сделать транзу на 0,01 битка на бинансовый кошелек. Как только я это сделал сразу все стало по нулям, все транзы пропали, у него кошелек стал нулевым тоже, ну и чувак полностью удалил чат наш.
Каким раком это могло быть сделано? Бля я думал биток невозможно взломать, но это явный взлом, я смотрел на реальном сайте блокчейновом, да блядь не то что на сайте в трезоре все показывало то биток идет! Как он это смог сделать? Все биток ломанули что-ли?РазборБлокчейн не ломанули, но использовали одну интересную уязвимость.
1. Транзакция действительно была отправлена (но с Bitcoin Core, что важно), но за нее была указана очень низкая комиссия за перевод, что гарантирует, что транзакция не будет подтверждена майнерами.
2. Пока транзакция весит в мемпуле (и является
неподтвержденной в парсере), идет развод – торопят закрыть свою часть сделки.
3. Чтобы «отменить» неподтвержденную транзакцию, пересоздается кошелек с тем же приватником, что был и на прошлом «разводном» кошельке:
a. Через консоль Bitcoin Core вводится
dumpprivkey + адрес разводного кошелька, это дает приватный ключ, который сохраняется.
b. Переименовывается файл разводного кошелька. Bitcoin Core его не находит и создает новый кошелек.
c. Новый кошелек открывается через Bitcoin Core, открывается консоль, вводится
importprivatekey + приватник разводного кошелька.
d. Bitcoin Core зависает на 1 час для сканирования данных и по итогу появляется список подтвержденных ранее транзакций, и там нету «неподтвержденной» «разводной» транзы.
e. Так транза отменяется.
f. Данный способ самый примитивный, есть и изящней варианты, через BDM и прочие приблуды.
4. Парсеры показывают, что в адрес целевого кошелька идет неподтвержденная транзакция, пока не будет сделан пункт 3.
К счастью, мой товарищ не стал торопиться с отсылкой альты, решил все перепроверить и сам вскрыл развод.
Способы защиты:Если вы получаете транзакцию от
неизвестных ранее источников:
1. Развод возможен на любых кошельках с парсерами неподвержденных транзакций.
2.
Всегда ждите подтверждения транзакций 2-3 блоками.
3. Старайтесь давать кошелек с нулевым балансом, как целевой.
4. Старайтесь двинуть битки, которые пришли на кошелек. Например, на биржу.
5. Никогда не торопитесь, даже если торопят. Всякое бывает, понимаю, но сеть биткойна не поторопить, и
пока транзакция неподтверждена – она не существует.
Будь аккуратен.