BTCPay aponta falha de julho e deixa cada lojista decidir desligar o servidor
Na noite de domingo, o BTCPay Server orientou todo lojista que aceita bitcoin com o software a desligar o servidor. Carteiras quentes de algumas instalações estavam sendo esvaziadas por invasores, e a mensagem publicada no X trazia o comando a ser executado, ./btcpay-down.sh, até o fim da investigação.
O BTCPay é gratuito e roda na máquina de quem o instala. Não existe uma empresa central capaz de desligar todos os servidores de uma vez, então o alerta funcionou como pedido. Cumpri-lo dependia de cada operador ler a mensagem e agir.
Duas horas mais tarde, o fundador do BTCPay, Nicolas Dorier, informou que as máquinas que o próprio projeto mantém, na versão 2.4.7, não haviam sido atacadas. Os relatos de esvaziamento vinham de instalações em versões anteriores à 2.4.2. Nelas, escreveu ele, o invasor conseguiu entrar como administrador. Como isso aconteceu, a equipe ainda tentava descobrir.
A resposta veio de madrugada. Perto de 1h desta segunda-feira, o projeto disse ter identificado a porta de entrada, uma falha que atinge instalações na versão 2.4.1 ou em versões anteriores. A 2.4.1 saiu em 23 de julho. Na 2.4.7, publicada na quinta-feira com 85 correções de segurança, não havia relatos confiáveis de carteiras quentes drenadas.
Para quem já havia feito ao menos uma atualização depois da 2.4.2, Dorier disse que não havia motivo para pânico. Repetiu o conselho de atualizar sempre e pediu que ninguém mantenha muito dinheiro na carteira quente. O detalhamento técnico ficou prometido para um post no blog do projeto.
A parada que dependeu de terceiros
Provedores de hospedagem entraram na operação por conta própria. A LunaNode desligou instâncias de BTCPay de clientes que ainda rodavam versões antigas, e o projeto agradeceu a iniciativa. Para quem aluga servidor, foi a única parada em massa que existiu no domingo.
Quantas máquinas foram atingidas, quanto foi levado e se o pedido de desligamento continua valendo são perguntas sem resposta até as 11h desta segunda-feira. Também não havia comunicado escrito no blog do BTCPay, cuja última publicação é de 5 de outubro. Tudo o que o BTCPay informou sobre o caso saiu em três posts no X.
O que a blockchain mostra
O caminho do dinheiro está público. Os dois endereços de destino foram divulgados por Dorier na mesma madrugada, um em bitcoin e outro em litecoin. Em uma consulta ao mempool.space feita às 10h50 desta segunda-feira, o endereço em bitcoin tinha recebido 19,8 BTC em 653 transações, cerca de US$ 1,55 milhão pelo preço do dia. Quase todo o valor, 19,3 BTC, já havia sido repassado para outros endereços. Depósitos continuavam chegando minutos antes da consulta.
Receber não significa roubar. A blockchain registra o que passou pelo endereço, sem indicar de onde veio cada moeda nem quantos lojistas perderam dinheiro ali. Nenhum número de prejuízo foi confirmado pelo projeto.
Por que desta vez o alvo foi outro
O caso lembra o de agosto, com uma diferença no que foi levado. Naquele mês, atacantes drenaram nós da Lightning ao explorar uma falha que dispensava login, como mostrou a cobertura do LaboNews. O prejuízo ficou restrito aos nós, e o projeto informou na ocasião que as carteiras ligadas à rede bitcoin, quentes inclusive, seguiram intactas, já que o acesso vinha das credenciais do nó.
Agora o dinheiro saiu das carteiras quentes. Elas guardam a chave privada no próprio servidor para assinar pagamentos sem ninguém digitar senha a cada cobrança. Com essa conveniência, o acesso de administrador basta para esvaziar o saldo. A documentação do BTCPay classifica o recurso como perigoso e recomenda deixar ali só o que o movimento do dia exige.
Se os dois episódios têm ligação, o projeto não disse. A linha de corte é a mesma, a 2.4.2 de agosto, e Dorier afirmou que as vulnerabilidades usadas agora parecem ser antigas. Quem estava na 2.4.1 ou antes passou pelo menos 86 dias sem a correção quando os saques começaram, no domingo.
A lista de providências para quem opera o software é curta. Atualizar para a 2.4.7 antes de religar a máquina, trocar a senha de administrador e as chaves de API, e passar o saldo para uma carteira com semente nova, criada fora do servidor. Um lojista perguntou a Dorier se trocar a semente bastava. A resposta foi que o servidor deveria ser tratado como comprometido por inteiro.
Quem teve fundos levados pode enviar relatos e registros ao endereço de segurança do projeto, security@btcpayserver.org, divulgado junto com o pedido de atualização.
⚠️ Aviso importante
As informações aqui descritas refletem pesquisas realizadas pelo LaboNews e não devem ser consideradas recomendação de investimento ou endosso de segurança sobre ferramentas ou links externos. Recomendamos que, ao investir ou utilizar ferramentas de terceiros, você faça sua própria pesquisa sobre a segurança e os riscos envolvidos.