A principal carteira cripto de autocustódia e portal para a Web3, desenvolvida pela Consensys.
Ler todos os artigosLavaMoat é um conjunto de ferramentas de segurança para qualquer app JavaScript que mitiga riscos na cadeia de fornecimento de software.

LavaMoat é uma ferramenta gratuita e de código aberto para qualquer equipe de desenvolvimento JavaScript preocupada com a segurança da cadeia de suprimentos. Criada pelo cofundador da MetaMask, Kumavis, ela aborda simultaneamente as preocupações de segurança na Web3 e questões estruturais de segurança de longa data no ecossistema de código aberto.
Se você está desenvolvendo com JavaScript (JS, para abreviar), precisa entender a situação de segurança dessa linguagem e suas dependências. Engenheiros de JS raramente constroem um aplicativo "do zero"; geralmente, eles importam partes de código já existentes — normalmente chamadas de "dependências" — para usar como blocos de construção em seus projetos. Isso é ótimo para colaboração e velocidade de desenvolvimento, mas e se um código malicioso estiver incluído em uma dessas dependências?
A segurança da cadeia de suprimentos de software envolve tudo o que toca um aplicativo (como dependências) ou desempenha um papel em seu desenvolvimento (como ferramentas de build ou sistemas de CI). O JavaScript é a linguagem mais popular entre os desenvolvedores por uma grande margem e também é muito suscetível a ataques à cadeia de suprimentos. Esta linha do tempo de vulnerabilidades de 2017 mostra que metade dos ataques tem origem no npm, uma fonte popular de pacotes JS de código aberto:
Fonte: SonaType
O JavaScript é alvo de ataques devido a:
Popularidade: É usado tanto no front-end quanto no back-end
Autoridade implícita: Se você está executando JavaScript em algum lugar, tem acesso a muitos recursos, como acesso à rede
Mutabilidade: Tudo é alterável por padrão
O Hack da Carteira Copay de 2018 despertou o interesse de Kumavis em resolver esse problema e é o principal estudo de caso para o design do LavaMoat. A Copay era uma carteira Bitcoin com autocustódia da BitPay que foi alvo de um ataque à cadeia de suprimentos, resultando no roubo de fundos dos usuários. Uma dependência npm utilizada pela carteira estava sob o controle de um invasor, o que permitiu a execução do ataque.
Então, qual é a solução? Alguns argumentos foram levantados para resolver esse problema.
Nunca usar dependências? Não.
Embora possa ser mais seguro, você vai abrir mão do código aberto — a riqueza coletiva que forma as bases sobre as quais todos construímos? De compartilhar e colaborar? Se você está tentando construir algo complexo, realmente quer gastar tempo reinventando a roda?
Nós também não.
Auditar todas as dependências sempre? Não.
É uma boa ideia, mas quantas dependências você tem? Centenas? Milhares? Dezenas de milhares? Não é prático — embora, se você quiser realizar uma auditoria manual, o LavaMoat vai ajudá-lo a priorizar as mais perigosas (mais sobre isso adiante).
E mesmo que você tenha tempo para analisar o pacote de diferenças, conseguirá identificar uma vulnerabilidade de segurança?
Difícil apostar nisso. Então, vamos explorar uma solução diferente:
LavaMoat? Sim.
Em vez de nunca usar dependências ou auditá-las sempre, vamos dar uma olhada no kernel de segurança do LavaMoat, que envolve os pacotes em compartimentos e concede a eles acesso apenas ao que precisam.
Porque, lembre-se: para que um código malicioso ataque seu sistema, ele precisa de permissão para isso. O kernel do LavaMoat analisa o código de terceiros que você está incorporando ao seu projeto, determina o que as dependências precisam para funcionar e concede a elas apenas isso**.**
O LavaMoat atualmente protege dezenas de milhões de usuários na MetaMask e é executado em três momentos distintos durante cada processo de desenvolvimento: instalação de dependências, build e runtime.
Para ter uma perspectiva melhor, confira este painel de visualização do grafo de dependências:
A lista de suas dependências está à esquerda e o grafo é representado como uma rede neural à direita. As cores são baseadas em uma heurística de periculosidade: por exemplo, as verdes não importam nenhuma API de plataforma poderosa.
A ideia aqui é ajudá-lo a priorizar a auditoria de suas dependências.
Então, como você implementa isso?
Levando em conta as três fases de desenvolvimento:
Instalação: @lavamoat/allow-scripts
Build: lavamoat-node
Runtime: plugin lavamoat-x para o seu bundler
E isso deve funcionar como um fosso contra códigos maliciosos.
Se você tiver interesse em nos ajudar, o LavaMoat é de código aberto! Estamos tentando criar plugins para o maior número possível de bundlers e queremos facilitar a revisão de políticas e a aplicação de restrições rigorosas ao conceder acesso à rede para pacotes. Você pode contribuir aqui.
E cadastre-se em nossa newsletter para desenvolvedores para mais atualizações! Bons projetos.
Traduzido por IA. Pode conter erros. Por favor, verifique sempre as informações.