Web3 разработчик
260 subscribers
17 photos
2 videos
51 links
Ethereum, DeFi, nodes infrastructure, open source
Download Telegram
Forwarded from dev.insuline.eth
gm! JS инфраструктура в очередной раз поддается атакам на криптанов.

В этот раз задели несколько старых системных JS пакетов – debug (357M установок в неделю) и chalk (299М установок в неделю) и пачку остальных, с помощью взлома Git одного из предыдуших мейнтейнеров. Можно прочитать полный репорт здесь от владельца взломанного аккаунта. Вкратце – взлом 2FA доступов к NPM через email.

Как это может задеть вас?

При обыкновенном подключении кошелька ничего без вашего ведома не произойдет.

Скрипт внедряется в любую страницу, содержащую JS код и проверяет наличие Ethereum кошельков (с помощью проверки `window.ethereum`), затем при попытке отправки любой транзакции через кошелек просто подменяет адрес получателя.

Уязвимым может оказаться буквально любой веб-сайт, который в течение последних пары часов обновлял свои зависимости и установил взломанную версию. На текущий момент с NPM уже удалили версию с багом

Кажется, что ближайшие пару дней лучше избегать подписи транзакций, либо быть максимально внимательным к адресу получения. Адрес злоумышленника – 0xFc4a4858bafef54D1b1d7697bfb5c52F4c166976

Что сделать разработчикам?

Проверьте lock файлы, ведь взломанные пакеты по большей части служебные и могут не использоваться напрямую в проекте.

Учитывая то, что пакетов – много, лучше пройти grep c фильтром на строку кода:


grep -r "const _0x112" node_modules/


Обфусцированный скрипт оставили здесь, а тут немного больше деталей, как он работает под капотом.

Issues с предупреждениями и больше технических деталей:
https://github.com/chalk/chalk/issues/656
https://github.com/debug-js/debug/issues/1005

но tbh пока выглядит как самая грустная атака, кошелек абсолютно пустой 🥰
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Случай еще раз говорит о том, что сам по себе холодный кошелек не спасет, если не проверять на его экране адрес получателя, что рекомендую делать всегда
2
Давеча копнул ERC4337 account abstraction (на этот раз с серьезной задачей для проекта). Вообще, отправка userOp – довольно тривиальная задача (туториалы и реализации есть у Zerodev, Alchemy, etc), но я хотел немного странного. А именно, отправить несколько userOp от разных smart contract wallets, но в одной onchain транзакции. И вот тут, после многодневных плясок с бубном, пришлось реализовать сборку массива userOp прямо самостоятельно, и потом отправлять на EntryPoint как обычную транзу.

Времени заняло много, но в целом понравилось – неплохо разобрался как оно вообще работает. Кому интересно – сниппет.

Не исключаю, что изобрел велосипед, если что - тыкните.

А в целом, AA понравился хотя бы за то, что можно делать аппрув+трансфер в одной транзакции (тот самый Web3 UX LFG!).
👍5🔥1