Перейти к содержимому

Отчёт о безопасности в крипто: апрель 2022

Веха совместимости CommonJS от Endo для цепочки зависимостей npm MetaMask, выпуск пакетов 'a'a в LavaMoat v6, путь LavaMoat к React Native и MetaMask Mobile, а также рекомендации по резервному копированию хранилища MetaMask в iCloud.

5 минут
Отчёт о безопасности в крипто: апрель 2022

Каждый месяц директор по безопасности MetaMask Лукер публикует отчёт о последних атаках в сфере криптовалют и новых угрозах, о которых вам необходимо знать.

Апрельский отчёт 2022 года команды безопасности MetaMask охватывает достижение Endo milestone совместимости с CommonJS для нашей цепочки зависимостей npm, новую нотацию именования пакетов 'a'a в LavaMoat v6, сокращающую время выполнения metamask-extension примерно в 600 раз — с 10 минут до менее 1 секунды, переход MetaMask Extension на защиту цепочки поставок LavaMoat v6, достижение lockdown() в LavaMoat совместимости с React Native, открывающее путь к MetaMask Mobile, а также рекомендации по резервному копированию iCloud для данных хранилища MetaMask. Подробности — ниже, но сначала...

Выдающийся пионер STEM: Батлер Лэмпсон, отец компьютерной безопасности на основе возможностей (capability-based security)

Батлер Лэмпсон — американский учёный в области информатики, формализовавший принципы управления доступом программного обеспечения к ресурсам. Его модель матрицы доступа, разработанная в начале 1970-х годов, объединила capabilities и списки управления доступом в единую систему — и принесла ему премию Тьюринга в 1992 году. Изолирование на основе возможностей (capability-based isolation), которое он разработал, является теоретической основой для изоляции compartment sandboxing, которую Endo и LavaMoat используют для защиты MetaMask сегодня.

Endo достигает совместимости с модулями CommonJS и выявляет оставшиеся пробелы при загрузке пакетов npm

Поддержка CommonJS в Endo достигла важного milestone в апреле 2022 года. Сквозные тесты на реальных пакетах из экосистемы npm — преимущественно выбранных из зависимостей MetaMask — выявили случаи, где поддержка CommonJS была недостаточной, и помогли продвинуть реализацию. Тест, сравнивающий несколько форм экспорта из CommonJS, импортированного в ESM, в Endo, Node.js и ряде бандлеров, помог определить цели и избежать регрессий.

Наиболее значимые изменения в поддержке CommonJS в Endo за этот период включали: подключение exports к import * и введение неявного default export, улучшение лексера для обнаружения всех вхождений require и перенос ошибок об отсутствующих пакетах на время выполнения, рефакторинг обработки exports для установки module.exports в качестве значения по умолчанию и идентификации именованных экспортов, а также добавление поддержки вложенного package.json с type:module и массивов необязательных значений в exports package.json.

Прогресс отслеживается в CommonJS tracking epic.

Endo теперь корректно поддерживает загрузку модулей CommonJS. Все оставшиеся проблемы при загрузке реальных пакетов из npm делятся на четыре категории: использование отсутствующих функций (например, require.resolve или import.meta), изменение глобальных переменных и intrinsics, срабатывание фильтров, защищающих от внедрения imports или HTML-комментариев, а также некорректное сопоставление экспортов и определение типа модуля в Endo.

Экспериментальная команда endo run выполняет JS-файлы с изоляцией compartment

На основе существующих инструментов, используемых для настройки сквозных тестов Endo, экспериментальная команда endo run теперь может выполнять JS-файл с compartments — аналогично node app.js, но с применением модели изоляции Endo.

В настоящее время все основные модули Node.js доступны для require/import кодовой базой и зависимостями. Дальнейшая работа должна добавить поддержку политик из LavaMoat.

Нотация именования пакетов 'a'a в LavaMoat v6 сокращает время выполнения metamask-extension в 600 раз — с 10 минут до менее 1 секунды

LavaMoat v6 вышел с новой нотацией идентификаторов пакетов для предотвращения проблем, связанных с имперсонацией и повторным использованием имён пакетов. Нотация, получившая название 'a'a, теперь используется в качестве ключей в файлах политик.

Производительность первоначальной реализации была существенно снижена из-за неэффективности Node.js при поиске и доступе к файлам. Первая попытка улучшения производительности — ограниченная двумя случаями простой мемоизации — сократила наихудшее время выполнения 'a'a в metamask-extension с 10 минут до 30 секунд. Однако стоимость пиков потребления памяти оказалась слишком высокой.

Вторая итерация диагностики и улучшений производительности обеспечила более чем 25-кратное сокращение времени и потребления RAM по сравнению с результатами первой итерации благодаря новому алгоритму, устранению рекурсии и локальным улучшениям производительности разрешения модулей Node.js.

В целом улучшение времени выполнения составило примерно 600 раз между первой полной реализацией и текущей версией.

MetaMask Extension переходит на защиту цепочки поставок LavaMoat v6

MetaMask Extension теперь работает под защитой LavaMoat v6, а развёртывание отслеживается в PR #14488.

lockdown() в LavaMoat достигает совместимости с React Native, открывая путь к MetaMask Mobile

Фундаментальным шагом для обеспечения работы LavaMoat в приложениях React Native является запуск функции SES lockdown(). Функция lockdown() защищает программное обеспечение от атак на цепочку поставок, перечисляя primordials в JavaScript и замораживая прототипы, что делает маловероятным выполнение злоумышленником атаки на загрязнение прототипа (prototype pollution attack).

Подробное описание выводов, сделанных в ходе этой работы, содержится в React Native Compatibility Tracker. Ключевые условия для достижения совместимости: разрешение Metro запускать SES bundle путём выполнения .cjs файлов, добавление специфических параметров lockdown, удаление плагинов Babel и удаление полифила Promise. Другие проблемы специфичны для приложения MetaMask Mobile, например зависимости Sentry и EthereumJS.

Результатом стал pull request в репозиторий приложения MetaMask Mobile. Следующие шаги включают запуск сквозных тестов для подтверждения того, что lockdown() не нарушил дополнительную функциональность, прежде чем перейти к следующему этапу: интеграции LavaMoat в MetaMask Mobile.

Обнаружено, что резервная копия iCloud включает зашифрованные паролем данные хранилища MetaMask

Пользователи Apple, включившие резервное копирование данных приложений в iCloud, могут непреднамеренно создавать резервные копии своего зашифрованного паролем хранилища MetaMask. Если ваш пароль недостаточно надёжен и кто-то похитит ваши учётные данные iCloud с помощью фишинга, это может привести к краже средств. MetaMask опубликовал рекомендации в X с инструкциями по управлению этой настройкой на устройствах пользователей.


Апрельский отчёт MetaMask по криптобезопасности за 2022 год охватил достижение Endo milestone совместимости с CommonJS для цепочки зависимостей npm MetaMask, 600-кратное улучшение производительности LavaMoat v6 в metamask-extension благодаря новой нотации именования пакетов 'a'a, а также рекомендации по резервному копированию iCloud для данных хранилища MetaMask. Просматривайте предыдущие выпуски отчёта MetaMask по криптобезопасности для получения информации о новых угрозах, тенденциях и советах по обеспечению безопасности в экосистеме.

Переведено ИИ. Может содержать ошибки. Пожалуйста, всегда проверяйте информацию.

Оцените перевод

Автор статьи:

  • Luker

      Джен Лукер, известная большинству просто как Лукер, является директором по безопасности продуктов в Consensys, где она руководит командой специалистов первой линии защиты, оберегающих миллионы пользователей от уязвимостей, новых угроз и злоумышленников в сфере децентрализованных технологий. Активный участник экосистемы Ethereum с 2017 года, она занимала ключевые должности, в том числе редактора в ETHNews и менеджера проектов в MyCrypto. Лукер регулярно выступает на отраслевых конференциях, является автором ежемесячного отчёта MetaMask по криптобезопасности (Crypto Security Report) и официальным обладателем значка ETH Security Badge, присвоенного организацией The DAO. Она также является страстным сторонником непрерывного обучения и повышения осведомлённости в области безопасности как ключевых основ будущего Ethereum и технологии блокчейн.

      Читать все статьи