Pular para o conteúdo

Relatório de Segurança Cripto: Maio de 2022

Implementações de import.meta e __dirname do Endo para compatibilidade de módulos MetaMask, um snap protótipo de geração de chaves distribuídas via computação multipartidária para MetaMask Flask e o lançamento do bug bounty HackerOne do MetaMask.

4 minutos
Relatório de Segurança Cripto: Maio de 2022

Cada mês, o Diretor de Segurança da MetaMask, Luker, relata os mais recentes ataques cripto e riscos emergentes que você precisa conhecer.

A edição de maio de 2022 abordou o lançamento do programa de bug bounty da MetaMask no HackerOne, a implementação de import.meta e __dirname pelo Endo para avançar a compatibilidade de dependências da MetaMask, e um protótipo de snap de geração de chaves distribuídas demonstrando assinatura por computação multipartidária no MetaMask Flask. Confira os detalhes abaixo, mas primeiro...

Pioneira STEM em destaque: Adi Shamir, co-inventora do RSA e criadora do compartilhamento de segredos

Adi Shamir é um criptógrafo israelense que co-inventou o algoritmo RSA em 1977, ao lado de Ron Rivest e Leonard Adleman — o primeiro criptossistema de chave pública prático, rendendo ao trio o Prêmio Turing em 2002. Em 1979, ele publicou "How to Share a Secret" (Como Compartilhar um Segredo), introduzindo o Compartilhamento de Segredo de Shamir: um esquema que divide um segredo em partes, onde apenas um número mínimo delas é necessário para reconstruir o original. Essa propriedade é fundamental para o trabalho de geração de chaves distribuídas abordado neste relatório.

MetaMask lança programa de bug bounty no HackerOne

A MetaMask lançou seu programa de bug bounty no HackerOne em junho de 2022, abrindo um canal formal para que pesquisadores de segurança reportem vulnerabilidades nos produtos da MetaMask.

Endo implementa import.meta e __dirname, avançando a compatibilidade de dependências da MetaMask

Com o progresso de abril de 2022 no suporte CommonJS do Endo, os resultados dos testes end-to-end mostraram que os maiores obstáculos restantes para executar módulos populares eram o suporte a import.meta.url e __dirname.

Uma reunião entre Agoric, MetaMask e Moddable em 3 de maio de 2022 resultou em um acordo sobre em qual momento do processo de importação de módulos o import.meta deveria ser processado. O conceito importMetaHook foi introduzido na especificação do Compartment. O hook só é chamado se a análise estática indicar que o módulo acessa import.meta — pois o Node.js anexa uma função resolve ali e sua criação é custosa, sendo melhor invocar o hook apenas quando seus resultados possam ser utilizados.

A implementação do import.meta está completa (issue da spec, PR de implementação). O que resta é implementar a passagem de import.meta.url para os módulos no Endo por padrão. A implementação do __dirname também está completa (PR), após múltiplas iterações para garantir a correção e o suporte a caminhos do Windows.

Além disso, foi adicionado suporte para arquivos package.json aninhados que alteram a suposição padrão do tipo de módulo para arquivos .js, de modo que o compartment-mapper lide com pacotes de estruturas complexas destinados a suportar tanto as especificações CommonJS quanto ES module (fonte).

O suporte ao comportamento __esModule está em pausa. Duas tentativas de implementação resultaram em pontuações piores nos testes end-to-end. Uma terceira abordagem — colocar a lógica de suporte no ThirdPartyModuleInstance dentro do SES — é considerada controversa. O recurso é acompanhado na issue #927.

Protótipo de snap de geração de chaves distribuídas demonstra assinatura MPC no MetaMask Flask

Progressos foram feitos nas capacidades de computação multipartidária (MPC). Nossa equipe utilizou bindings WebAssembly (WASM) de prova de conceito anteriores e criou um protótipo de snap, utilizável no MetaMask Flask, que demonstra a geração de chaves distribuídas (DKG) e a assinatura de mensagens. O snap suporta exportação e importação de partes de chaves, além de geração de chaves e salvamento de provas para assinatura de mensagens.

Por baixo dos panos, o pacote utiliza uma implementação do GG2020 (Gennaro e Goldfeder 2020, artigo), um protocolo que suporta uma fase online não interativa, permitindo que os participantes participem de forma assíncrona sem precisar estar online simultaneamente, e possibilita a detecção eficiente de partes que abandonam o processo.

Os próximos passos incluem adicionar suporte a criptografia para snap_manageState, a fim de eliminar a criptografia manual de partes de chaves no código do snap, seguido pela adição de suporte para assinatura de transações. O protótipo é acompanhado no repositório tss-snap (originalmente publicado como ecdsa-wasm).


O Relatório de Segurança Cripto de maio de 2022 da MetaMask abordou a implementação de import.meta e __dirname pelo Endo para a cadeia de compatibilidade de módulos da MetaMask, e o protótipo de snap de geração de chaves distribuídas demonstrando assinatura por computação multipartidária no MetaMask Flask. Confira as edições anteriores do relatório de segurança cripto da MetaMask para mais ameaças, tendências e dicas para se manter seguro em todo o ecossistema.

Traduzido por IA. Pode conter erros. Por favor, verifique sempre as informações.

Avalie a tradução

Este artigo foi escrito por:

  • Luker

      Jen Luker, conhecida pela maioria simplesmente como Luker, é a Diretora de Segurança de Produto na Consensys, onde lidera os defensores da linha de frente que protegem milhões de usuários contra vulnerabilidades, ameaças emergentes e agentes maliciosos em toda a tecnologia descentralizada. Participante ativa no ecossistema Ethereum desde 2017, ela ocupou funções-chave, incluindo Editora no ETHNews e Gerente de Projetos na MyCrypto. Luker é palestrante frequente em conferências do setor, autora do Relatório Mensal de Segurança Cripto da MetaMask e detentora oficial do ETH Security Badge designado pela The DAO. Ela também é uma defensora apaixonada da educação contínua e da conscientização sobre segurança como pilares essenciais para o futuro do Ethereum e da tecnologia blockchain.

      Ler todos os artigos