O Google construiu uma ferramenta online que mapeia todas as dependências em milhões de bibliotecas de software de código aberto e sinaliza quaisquer vulnerabilidades não reparadas.
Isso é útil para descobrir o que exatamente está dentro das bibliotecas usadas por seus projetos de programação e, crucialmente, se eles contêm bugs de segurança ocultos que não foram corrigidos. Assim, você pode escolher outro conjunto de pacotes, ou ajudar a obter os furos corrigidos, para evitar deixar seu aplicativo explorável.
Hoje em dia, quando você puxa uma biblioteca para um projeto, você normalmente está puxando dezenas de dependências e subdependências dessa biblioteca. E qualquer um desses componentes poderia – e fazer – conter falhas de segurança, o que pode deixar o programa pai vulnerável a ataques.
Essas dependências também podem quebrar ou desaparecer,impedindo que o código construa, implante ou construa como esperado. Os programas podem importar bibliotecas desatualizadas e não se manter atualizados, o que significa que eles perdem correções de bugs, patches de segurança e novos recursos.
É seguro dizer que os desenvolvedores raramente sabem no que estão se metendo, ou que problemas estão sob a superfície, quando adicionam uma biblioteca ao seu projeto. Esse frágil estado de engenharia de software afeta aplicativos comerciais, bem como software livre e é um problema sobre o que os Googlers estão cada vez mais vocais.
Objetivos
O que nos leva à ferramenta de exploração de dependência experimental da gigante da web, apelidada de Open Source Insights, que foi anunciada hoje e está disponível em deps.dev. Você pode procurar por um pacote e navegar pelo seu conteúdo como uma tabela ou um gráfico, e quaisquer falhas de segurança conhecidas nessas dependências são sinalizadas.
Nos disseram que o serviço é, neste momento, indexando, digitalizando e monitorando 1,63 milhões de bibliotecas JavaScript em npm, módulos 624.000 Go, 404.000 artefatos Maven do código Java e 62.000 caixas Rust Cargo. Os pacotes PyPi e NuGet serão adicionados em seguida. Também é gratuito.
“O Open Source Insights verifica continuamente milhões de projetos no ecossistema de software de código aberto, coletando informações sobre pacotes, incluindo licenciamento, propriedade, questões de segurança e outros metadados, como contagens de downloads, sinais de popularidade e Cartões de Pontuação openssf”, disseram Andrew Gerrand, Michael Goddard, Rob Pike e Nicky Ringland em seu anúncio.
“Ele então constrói um gráfico de dependência completa – rastreando transitivamente dependências, dependências de dependências e assim por diante – e incorpora os metadados, em seguida, publica-o para que você possa ver como tudo isso pode afetar seu software. E as informações que ele fornece são continuamente atualizadas.”
Quão bem funciona?
Seu humilde abutre decidiu levar o serviço para dar uma volta com uma biblioteca, pegando no topo de sua cabeça uma caixa de ferrugem útil chamada .tui
Este software pode ser usado para criar interfaces de usuário baseadas em texto com ótima aparência dentro de um terminal. Ele foi estrelado mais de 5.100 vezes no GitHub, tem dezenas de colaboradores e é usado para construir vários aplicativos, incluindo um cliente spotify baseado em terminais.
Entrar na deps.dev barra de pesquisa e selecionar a caixa de carga, traz o painelda biblioteca. Clicar na guia dependências mostra uma tabela de seus componentes, que pode ser pesquisada, e clicar no botão gráfico à direita abre uma visualização das bibliotecas das bibliotecas.tui
tui
A teia de aranha quebrada de dependências em tui, gerada por deps.dev … Clique para ampliar
Você pode ampliar e entrar e sair rolando na exibição do gráfico e mover pontos ao redor clicando-e arrastando-os. Cada caixa, começando com, tem linhas com pontas de flecha apontando para suas dependências. Você pode ver, por exemplo, a cadeia de dependências das caixas que lidam com a API do Windows chama esse sistema operacional e todos os caminhos que levam a .tui
libc
Mais importante, e inesperadamente para um projeto Rust, o serviço do Google mostra que a versão mais recente de , 0.15.0, tem um par de falhas de segurança.tui
Uh-oh … Problemas de segurança sinalizados pelo serviço do Google
No entanto, é claro que eles estão em dependências de ‘, e os programadores que usam a biblioteca de interface em seus aplicativos podem não estar cientes dos bugs enterrados.tui
Uma dessas vulnerabilidades é o RUSTSEC-2019-0005 em dependência. Esta biblioteca é um dos backends disponíveis para que cuida do envio das sequências de caracteres necessárias para o terminal, seja no Linux ou Windows, para exibir a interface de usuário baseada em texto.tui
pancurses
tui
O bug pode ser explorado em “um ataque de string de formato, que trivialmente permite escrever dados arbitrários para empilhar memória”. Isso está presente na versão 0.16.1 da versão mais recente e a usada em sua versão mais recente.pancurses
tui
Isso sugere que pode ser possível sequestrar um aplicativo que usa com o dar-lhe uma sequência de dados, como um nome de arquivo especialmente criado, ou conteúdo de um arquivo, ou informações da rede, que se aproveita da supervisão de segurança acima mencionada.tui
pancurses
A outra vulnerabilidade é rustsec-2019-0006, que está na caixa que é um invólucro fino em torno da biblioteca C. Este bug está presente na versão mais recente da caixa do invólucro, 5.101.0, e na versão usada pela versão 5.91.0. Ele é explorável através de estouro de buffer e ataques de sequência de formato, e assim, como a falha acima, pode ser potencialmente usado para sequestrar aplicativos usando dados de entrada maliciosamente criados.ncurses
ncurses
pancurses
Os dois bugs estão documentados aqui em detalhes com uma exploração de falha de prova de conceito, se você estiver interessado. Mesmo que eles não sejam habilmente exploráveis em aplicativos do mundo real, eles ainda servem como um exemplo de como os Open Source Insights do Google podem ser usados para descobrir potenciais falhas de segurança à espreita no gráfico de dependência do seu projeto.
Existem outros scanners de vulnerabilidade de dependência por aí – o GitHub’svem à mente. OWASP tem um. Snyk, também. Sinta-se livre para compartilhar suas recomendações nos comentários.
FONTE: THE REGISTER