Инцидент с @Solana/web3.js

2 декабря 2024 года сообщество Solana столкнулось со значительным инцидентом, связанным с безопасностью пакета @solana/web3.js npm. @Solana/web3.js – критически важная библиотека для разработчиков, работающих на блокчейне Solana с более чем 450 тыс. загрузок еженедельно. Цель этого поста – разобрать поток атаки, исследовать, как это произошло, и обсудить важность безопасности цепочки поставок.

Что произошло?

Инцидент касался версий 1.95.6 и 1.95.7 библиотеки @solana/web3.js, которые были скомпрометированы из-за, вероятно, фишинговой атаки на учетные данные для публикации npm-пакетов. Вот как это работало:

  • Злоумышленники внедрили бэкдор в библиотеку, добавив функцию addToQueue. Эта функция была предназначена для перехвата и кражи приватных ключей, которые используются для подписания транзакций и доступа к кошелькам. Злоумышленник использовал заголовки, похожие на заголовки CloudFlare, чтобы не вызвать подозрений в сетевых журналах.
  • Вредоносный код вставлялся в функции, ответственные за обработку криптографических операций, такие как Keypair.fromSecretKey и Keypair.fromSeed. Он фактически перехватывал эти операции для кражи ключей.
  • Скомпрометированные версии были доступны на npm в течение примерно пяти часов. Они потенциально влияли на любое приложение, которое обновляло или устанавливало эти версии в течение этого времени.
Рисунок 1. Бекдор addToQueue введённый в версии 1.95.6
Рисунок 1. Бекдор addToQueue введённый в версии 1.95.6

Последствия

  • По словам Мерта Мумтаза, генерального директора Helius Labs, убытки от этой атаки составляют примерно $130 тыс.
  • Быстрая реакция и обнаружение командой Solana были действительно важными для того, чтобы сократить время загрузки этих версий до минимума – до 5 часов.
  • Важно отметить, что нет никаких проблем с безопасностью блокчейна, поскольку проблема заключается в клиентской библиотеке Javascript.
Рисунок 2. Пост Мерта Мумтаза
Рисунок 2. Пост Мерта Мумтаза

Предложения по исправлению:

  • Обновление до последней версии – 1.95.8, в которой был удален вредоносный код.
  • Убедиться, что все подозрительные ключи полномочий ротируются, включая мультиподписи, полномочия приложений, пары серверных ключей и т. д.

Как Mend обнаружил атаку

Команда Mend отслеживала эту проблему как MSC-2024-17462 и MSC-2024-17463 с самого начала. Это причина, по которой их клиенты, использующие эту библиотеку, получат уведомление об этих двух скомпрометированных версиях.

Кроме того, команда Solana уже выпустила профиль CVE для решения этой проблемы.

Важность безопасности цепочки поставок

Это уже третья атака на безопасность цепочки поставок очень популярной библиотеки с открытым исходным кодом после атак на Lottie Player и Polyfill, обнаруженных за последние шесть месяцев. Все эти инциденты сочетаются с незабываемым инцидентом XZ в начале года, а также атаками Северной Кореи на разработчиков и другими так называемыми «обычными атаками», которые ежедневно происходят на основных реестрах открытого исходного кода.

Вывод

С приближением нового года пришло время задуматься о безопасности цепочек поставок. Насколько известно, компании относятся к уязвимостям серьезнее, чем к вредоносным пакетам, несмотря на то, что наличие вредоносного пакета в их коде означает, что они непременно будут скомпрометированы. Пришло время прекратить игнорировать инциденты, связанные с цепочками поставок, и изобрести больше ресурсов для защиты цепочек поставок и всех аутсорсинговых операций.

Подписаться на новости