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

Использование LavaMoat для защиты цепочки поставок ПО

LavaMoat — набор инструментов безопасности для любого JavaScript-приложения, снижающих риски цепочки поставок программного обеспечения.

3 мин чтения
Использование LavaMoat для защиты цепочки поставок ПО

LavaMoat — это бесплатный инструмент с открытым исходным кодом для любой команды JavaScript-разработчиков, озабоченной безопасностью цепочки поставок. Это детище сооснователя MetaMask Кумависа одновременно решает проблемы безопасности в Web3 и давно существующие структурные уязвимости в экосистеме открытого исходного кода.

Если вы разрабатываете на JavaScript (сокращённо JS), вам необходимо понимать ситуацию с безопасностью этого языка и его зависимостями. JS-разработчики редко создают приложения «с нуля» — как правило, они импортируют в свой проект готовые фрагменты кода, которые принято называть «зависимостями», и используют их как строительные блоки. Это отлично подходит для совместной работы и ускорения разработки, но что если в одну из таких зависимостей внедрён вредоносный код?

Безопасность цепочки поставок программного обеспечения охватывает всё, что взаимодействует с приложением (например, зависимости) или участвует в его разработке (например, инструменты сборки или CI-системы). JavaScript — самый популярный язык среди разработчиков с большим отрывом, и при этом он крайне уязвим к атакам на цепочку поставок. Эта хронология уязвимостей с 2017 года наглядно показывает, что добрая половина атак исходит из npm — популярного источника пакетов с открытым исходным кодом для JS:

Источник: SonaType

JavaScript становится мишенью благодаря следующим характеристикам:

  1. Популярность: он используется как на фронтенде, так и на бэкенде

  2. Широкие полномочия: при запуске JavaScript в любой среде он получает доступ к множеству возможностей, например к сетевому доступу

  3. Изменяемость: по умолчанию всё поддаётся модификации

Взлом кошелька Copay в 2018 году заинтересовал Кумависа этой проблемой и стал основным кейсом при проектировании LavaMoat. Copay — это некастодиальный биткоин-кошелёк от BitPay, ставший жертвой атаки на цепочку поставок, в результате которой были похищены средства пользователей. Злоумышленник получил контроль над npm-зависимостью, используемой кошельком, что и позволило ему осуществить атаку.

Так в чём же решение? Существует несколько подходов к устранению этой проблемы.

Полностью отказаться от зависимостей? Нет.

Пусть это и безопаснее, но готовы ли вы отказаться от открытого исходного кода — общего достояния, на котором строится всё, что мы создаём? От обмена знаниями и совместной работы? Если вы разрабатываете что-то сложное, неужели вы хотите тратить время на изобретение велосипеда?

Мы тоже нет.

Постоянно аудировать все зависимости? Тоже нет.

Идея хорошая, но сколько у вас зависимостей? Сотни? Тысячи? Десятки тысяч? Это нереалистично — хотя если вы всё же хотите провести ручной аудит, LavaMoat поможет вам расставить приоритеты и выявить наиболее опасные зависимости (подробнее об этом ниже).

И даже если у вас есть время тщательно изучить пакет, сможете ли вы обнаружить уязвимость безопасности?

Рискованная ставка. Поэтому давайте рассмотрим другое решение:

LavaMoat? Да.

Вместо того чтобы полностью отказываться от зависимостей или постоянно их аудировать, давайте разберёмся, как работает ядро безопасности LavaMoat: оно оборачивает пакеты в изолированные отсеки и предоставляет им доступ только к тому, что им действительно необходимо.

Ведь помните: чтобы вредоносный код мог атаковать вашу систему, ему нужно разрешение на это. Ядро LavaMoat анализирует сторонний код, который вы подключаете к своему проекту, определяет, что нужно зависимостям для работы, и предоставляет им только это**.**

В настоящее время LavaMoat защищает десятки миллионов пользователей MetaMask и задействуется на трёх этапах каждого процесса разработки: установка зависимостей, сборка и runtime.

Чтобы лучше понять масштаб, взгляните на эту панель визуализации графа зависимостей:

Список ваших зависимостей отображается слева, а граф представлен в виде нейронной сети справа. Цвета основаны на эвристической оценке опасности: например, зелёные зависимости не импортируют никаких мощных платформенных API.

Цель здесь — помочь вам расставить приоритеты при аудите зависимостей.

Как же это реализовать?

С учётом трёх фаз разработки:

  1. Установка: @lavamoat/allow-scripts

  2. Сборка: lavamoat-node

  3. Runtime: плагин lavamoat-x для вашего бандлера

Всё это должно служить надёжным рвом против вредоносного кода.

Разработка программного обеспечения в масштабе

Если вы хотите помочь нам, LavaMoat — проект с открытым исходным кодом! Мы стремимся создать плагины для как можно большего числа бандлеров и хотим упростить проверку политик, а также добавить жёсткие ограничения при предоставлении пакетам сетевого доступа. Вы можете внести свой вклад здесь.

Подпишитесь на нашу рассылку для разработчиков, чтобы получать актуальные обновления! Удачной разработки.

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

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

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

  • MetaMask

    MetaMask, ранее известная как Consensys Software Inc, — крупнейшая в мире самостоятельная финансовая платформа, предоставляющая людям единое место для хранения, расходования, накопления и приумножения средств как в криптовалюте, так и в традиционных активах. Компания создаёт потребительскую платформу, объединяющую платежи, сбережения, инвестиции и цифровые активы в едином бесшовном опыте. Вырастая из самого широко используемого в мире self-custodial кошелька, MetaMask предоставляет пользователям прямой контроль над их деньгами и активами, охватывая около 190 стран. MetaMask сыграл основополагающую роль в развитии Ethereum с 2016 года. Сегодня MetaMask занимает центральное место в экономике блокчейна, создавая операционную систему для Open Money и предоставляя людям полный контроль над их финансовой жизнью.

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