Bug importante do Ethereum (ETH) pode finalmente ter sido corrigido

ETH
envenenamento de cache de chaves públicassegurança de validadorescorreção de vulnerabilidadecliente de consensoGlamsterdamfork GloasEthereum
há 21 horasFonte: u.today
Bug importante do Ethereum (ETH) pode finalmente ter sido corrigido

Um dos clientes de consenso do Ethereum mesclou uma correção para um ataque de envenenamento do cache de chaves públicas de validadores, de acordo com um pull request no GitHub. O patch aborda uma vulnerabilidade em torno do fork Gloas, que poderia resultar em alguns nós rejeitando assinaturas válidas devido a um bug no cache global de chaves públicas.

Gloas é a parte da camada de consenso da próxima atualização Glamsterdam.

Três depósitos, duas cadeias

O problema está em um mecanismo no qual o cliente armazena chaves públicas de validadores e seus índices em um cache global.

Tecnicamente, depósitos que já foram finalizados deveriam produzir os mesmos validadores em todas as cadeias, embora seja uma história diferente no limite do fork.

Article image
Fonte: Github

O atacante precisa de 3 depósitos pendentes pouco antes do fork. O primeiro é uma grande recarga para um validador existente. Os outros dois são novas chaves: A com credenciais de builder e B com credenciais regulares de validador.

Na cadeia canônica, a recarga consome a rotatividade de saldo, então A e B são processados após o fork. A se torna um builder, e B assume o próximo índice de validador.

Na cadeia lateral do atacante, o validador recarregado sofre slashing antes do fork, e seu depósito é ignorado. Isso leva A a ser processado mais cedo, essencialmente assumindo o índice de B.

O cache com bug assumia que ambas as cadeias produziriam os mesmos validadores e importou a chave de A globalmente.

No fork, os nós afetados rejeitariam todas as assinaturas válidas de B na cadeia canônica e fariam fork.

Realisticamente, o ataque é um tanto complicado, pois precisa de um slashing no momento certo e de uma cadeia lateral, então é improvável que aconteça por acidente.

O que a correção muda?

De acordo com o PR, a correção é adicionar chaves ao cache global de chaves públicas apenas quando sua época de elegibilidade para ativação for finalizada.

Uma nova estrutura HeadPubkeys também combina chaves do estado head e do cache global, para que os nós não percam chaves se a cadeia finalizar sem novos blocos.

Se outros clientes de consenso tinham um problema semelhante ainda precisa ser confirmado. Em outras palavras, quanto mais perto o Glamsterdam chega, mais casos extremos em torno do limite do fork os desenvolvedores precisam capturar.