Um bug no mecanismo de pagamentos do XRP Ledger permitiu que um pagamento cunhasse novos XRP do nada. Ele permaneceu no código por cerca de uma década, e a correção entrou no ar antes que alguém pudesse lê-la.

O mecanismo somava o que um comprador devia em várias ofertas usando um contador simples de 64 bits. Algumas centenas de ofertas criadas sob medida, cada uma pedindo uma quantidade enorme de XRP, empurraram o total além do limite e ele deu a volta até quase zero. Os vendedores receberam o pagamento integral, o comprador pagou praticamente nada, e a verificação de "nenhum XRP criado" usava o mesmo contador, então não detectou nada.

Pelas nossas contas, esse contador atinge cerca de 9,2 trilhões de XRP, aproximadamente 92 vezes a oferta de 100B. Nenhuma conta pode deter mais do que a oferta total, então o ataque precisaria de pelo menos 93 contas receptoras.

Cayden Liao e Veria AI relataram isso pelo programa de bug bounty do XRPL em 22 de setembro. O xrpld 3.4.1 foi lançado em 25 de setembro com seu código-fonte retido, e mais de 80% dos validadores padrão da UNL o executaram naquele dia. Ele pulou a votação da emenda, algo inédito para uma correção de processamento de transações em mais de dez anos. A RippleX não encontrou sinais de que isso tenha sido usado alguma vez em uma rede pública.

Cerca de dez anos no código. Três dias para corrigir.

$XRP
#XRP #CryptoSecurity
NFA. DYOR.