Forwarded from dev.insuline.eth
gm! JS инфраструктура в очередной раз поддается атакам на криптанов.
В этот раз задели несколько старых системных JS пакетов – debug (357M установок в неделю) и chalk (299М установок в неделю) и пачку остальных, с помощью взлома Git одного из предыдуших мейнтейнеров. Можно прочитать полный репорт здесь от владельца взломанного аккаунта. Вкратце – взлом 2FA доступов к NPM через email.
Как это может задеть вас?
При обыкновенном подключении кошелька ничего без вашего ведома не произойдет.
Скрипт внедряется в любую страницу, содержащую JS код и проверяет наличие Ethereum кошельков (с помощью проверки `window.ethereum`), затем при попытке отправки любой транзакции через кошелек просто подменяет адрес получателя.
Уязвимым может оказаться буквально любой веб-сайт, который в течение последних пары часов обновлял свои зависимости и установил взломанную версию. На текущий момент с NPM уже удалили версию с багом
Кажется, что ближайшие пару дней лучше избегать подписи транзакций, либо быть максимально внимательным к адресу получения. Адрес злоумышленника –
Что сделать разработчикам?
Проверьте lock файлы, ведь взломанные пакеты по большей части служебные и могут не использоваться напрямую в проекте.
Учитывая то, что пакетов – много, лучше пройти grep c фильтром на строку кода:
Обфусцированный скрипт оставили здесь, а тут немного больше деталей, как он работает под капотом.
Issues с предупреждениями и больше технических деталей:
https://github.com/chalk/chalk/issues/656
https://github.com/debug-js/debug/issues/1005
но tbh пока выглядит как самая грустная атака, кошелек абсолютно пустой🥰
В этот раз задели несколько старых системных 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!).
Времени заняло много, но в целом понравилось – неплохо разобрался как оно вообще работает. Кому интересно – сниппет.
Не исключаю, что изобрел велосипед, если что - тыкните.
А в целом, AA понравился хотя бы за то, что можно делать аппрув+трансфер в одной транзакции (тот самый Web3 UX LFG!).
👍5🔥1