Ad
Инциденты

BTCPay Server позволял без авторизации получить токены управления LND — атака уже привела к краже биткоинов

Маша Даровская
By Маша Даровская , IT-редактор и автор
BTCPay Server позволял без авторизации получить токены управления LND — атака уже привела к краже биткоинов
Обложка © Anonhaven

Разработчики BTCPay Server выпустили экстренное обновление 2.4.2 после реальных атак на серверы, использующие LND для платежей через Lightning Network. Уязвимость позволяла удалённому пользователю без предварительной авторизации получить файлы .macaroon, которые LND использует для управления правами доступа. Украденные токены применялись для доступа к Lightning-нодам и вывода средств. BTCPay подтвердил, что пользователи пострадали и деньги были украдены.

Исправление опубликовано в BTCPay Server 2.4.2. Уязвимость присутствует во всех более ранних версиях, включая кандидаты на выпуск 2.4.2. Финальный релиз считается исправленным. Основной финансовый риск относится к установкам BTCPay Server, где используется Lightning Network Daemon — LND.

Точный механизм атаки пока остаётся закрытым. Команда проекта сознательно не публикует подробное описание ошибки, поскольку часть серверов ещё может работать без обновления. Поэтому сейчас нельзя достоверно утверждать, через какую именно конечную точку или ошибку обработки запросов злоумышленники извлекали файлы LND.

LND использует так называемые macaroon для авторизации запросов к своим программным интерфейсам.

По смыслу это предъявительские токены доступа: сервер проверяет сам macaroon и содержащиеся в нём разрешения. Токен можно выпустить с узким набором полномочий — например, только для чтения определённых данных — либо предоставить ему широкий доступ. Особенно чувствителен admin.macaroon.

Документация Lightning Labs указывает для него разрешение all: такой macaroon получает весь набор прав, доступный через интерфейсы LND. Файлы macaroon при обычной конфигурации также относятся к чувствительным данным, которые хранятся на диске без дополнительного шифрования самого файла.

BTCPay впоследствии уточнил, что атакующие получали административные macaroon LND и использовали их для доступа к связанным кошелькам. Иными словами, ломать криптографию Bitcoin или Lightning им не требовалось — они добирались до уже существующего механизма авторизации ноды.

LND фигурирует в инциденте потому, что BTCPay Server мог раскрыть его файлы авторизации. Сам BTCPay не заявлял об обнаружении соответствующей уязвимости в коде LND или протоколе Lightning Network.

Для исправления нужно обновить именно BTCPay Server до версии 2.4.2. Стандартная процедура обновления одновременно переводит LND на 0.21.1.

Официальное предупреждение охватывает все BTCPay Server младше 2.4.2. В список входят и предварительные версии 2.4.2 Release Candidate. Если используется финальный BTCPay Server 2.4.2, описанная уязвимость исправлена.

Владельцы серверов с другими реализациями Lightning либо вообще без Lightning не подвержены именно риску утечки учётных данных LND. Проект всё равно советует им поставить 2.4.2: выпуск содержит дополнительные исправления безопасности и изменения конфигурации.

После первых сообщений команда проекта рекомендовала пользователям в качестве меры предосторожности переместить средства из обычных on-chain-кошельков BTCPay. Позднейший анализ позволил сузить область риска. Встроенные on-chain-кошельки BTCPay Server, включая горячие, от этой уязвимости не пострадали. Риск относится к LND.

У самого BTCPay Server может быть кошелёк для обычных транзакций в сети Bitcoin. Он не затронут. LND также располагает собственным on-chain-кошельком, который используется в работе Lightning-ноды. Средства в нём относятся к скомпрометированной LND-среде и могут находиться под угрозой. То же относится к средствам внутри Lightning-каналов.

BTCPay подтвердил эксплуатацию ошибки, пострадавших пользователей и кражу средств. Анализ известных атак показал, что злоумышленники целились в файлы с расширением .macaroon.

Среди публично названных пострадавших оказались производитель аппаратных кошельков Foundation и Bitcoin-издание Citadel21. Оба сообщили о потерях на Lightning-нодах. Общая сумма ущерба не раскрыта.

Количество скомпрометированных серверов команда BTCPay тоже пока не публиковала. Поэтому оценки масштаба атаки в десятках, сотнях или тысячах нод сейчас не подтверждены.

Для стандартной установки разработчики рекомендуют открыть Server Settings → Maintenance → Update.

После завершения процедуры в интерфейсе BTCPay должна отображаться версия 2.4.2, а LND — 0.21.1.

Обновление также автоматически заново создаёт macaroon LND. Если есть сомнения, завершилось ли обновление корректно, проект советует запустить процедуру ещё раз через интерфейс или btcpay-update.sh.

Обновление не способно исправить сетевые маршруты, которые администратор настроил самостоятельно.

Например, LND мог быть опубликован через собственный обратный прокси, отдельный Tor-сервис, перенаправленный порт или другую схему, не управляемую BTCPay Server.

Для таких конфигураций проект требует отдельно сменить учётные данные LND. Обновление BTCPay не закрывает независимо настроенные точки доступа.

BTCPay Server 2.4.2 дополнительно меняет стандартную конфигурацию Docker. Публичный доступ к программному интерфейсу LND временно отключён. Разработчики называют эту меру частью реагирования на продолжающийся инцидент.

Изменение затрагивает внешние приложения для управления нодой. Например, Zeus временно не сможет подключаться к LND через домен BTCPay Server или обычный Tor onion-адрес стандартной Docker-установки. BTCPay планирует вернуть возможность после усиления защиты.

Установки с LND разработчики советуют считать потенциально затронутыми и проверить историю работы ноды.

Стоит обратить внимание на платежи, которые администратор не создавал, неожиданные закрытия Lightning-каналов, неизвестных участников соединений и расхождения между ожидаемыми и фактическими остатками в on-chain-кошельке LND и каналах. Именно такие признаки перечислены в официальном предупреждении. Если поставить обновление сразу нельзя, рекомендация ещё жёстче: уязвимый сервер с LND следует убрать из сети до установки 2.4.2. BTCPay просит не оставлять старую установку LND доступной из интернета.

Экстренный выпуск содержит и другие изменения.

Отдельно закрыт обход двухфакторной аутентификации TOTP при использовании базовой авторизации Greenfield API. Для новых учётных записей базовая авторизация теперь по умолчанию отключается через пять минут после создания, если пользователь явно не разрешил её снова. Разработчики также ограничили частоту публичного создания счетов через Payment Requests. Интеграторам рекомендовано обновить NBXplorer до версии 2.6.10.

В официальном предупреждении BTCPay благодарит разработчика Sparrow Wallet Крейга Роу за ответственное раскрытие уязвимости, а Bitcoin Red Team — за помощь в анализе эксплуатации. В примечаниях к выпуску 2.4.2 также упомянуты Bruno Garcia и Ben Carman из Bitcoin Red Team как авторы переданных проекту сообщений о проблемах безопасности. Полный разбор инцидента ещё готовится.

Инфраструктура пожертвований OpenSats использовала BTCPay Server вместе с LND и попадала в область риска. Организация обновила сервер после предупреждения и сообщила, что пожертвованные ей средства не были украдены. Приём пожертвований через Lightning временно отключили как меру предосторожности.

10 августа команда BTCPay опубликовала отдельный план реагирования. Сторонники проекта сформировали награду за информацию, которая поможет вернуть похищенные средства. Размер — 10% от реально возвращённой суммы, максимум 3 BTC в случае полного возврата средств.

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

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

BTCPay Server Foundation отдельно объявила две выплаты за работу над безопасностью. Крейгу Роу выделят 0,21 BTC, ещё 0,21 BTC получит фонд Bitcoin Red Team. Речь идёт о поддержке исследователей, занимавшихся ответственным раскрытием и анализом проблемы. Команда проекта также решила временно поставить исправления безопасности и усиление защиты выше выпуска крупных новых функций. Планируется расширить автоматическое сканирование кода, усилить проверку изменений и продолжить обработку отчётов Bitcoin Red Team, Project Loupe, Magic Grants и независимых специалистов.

Есть новость? Станьте автором.

Мы сотрудничаем с независимыми исследователями и специалистами по кибербезопасности. Отправьте нам новость или предложите статью на рассмотрение редакции.