Sobre o GitHub Advisory Database
Adicionamos comunicados ao GitHub Advisory Database das seguintes fontes:
- Consultorias de segurança relatadas em GitHub
- O banco de dados Nacional de Vulnerabilidades
- O banco de dados Avisos de segurança do npm
- O banco de dados FriendsOfPHP
- O banco de dados Go Vulncheck
- O banco de dados Avisos de Empacotamento do Python
- O banco de dados Avisos do Ruby
- O banco de dados Avisos do RustSec
- {1>Contribuições da comunidade<1}. Para obter mais informações, confira https://github.com/github/advisory-database/pulls.
Se você conhecer outro banco de dados do qual devemos importar os avisos, conte-nos sobre ele abrindo um problema em https://github.com/github/advisory-database.
Os avisos de segurança são publicados como arquivos JSON no formato OSV (Vulnerabilidade de código aberto). Para obter mais informações sobre o formato OSV, confira "Formato de vulnerabilidade de código aberto".
Sobre tipos de avisos de segurança
Cada aviso no GitHub Advisory Database é sobre uma vulnerabilidade em projetos de código aberto ou sobre softwares de código aberto mal-intencionados.
Uma vulnerabilidade é um problema no código de um projeto que poderia ser explorada para corromper a confidencialidade, a integridade ou a disponibilidade do projeto ou de outros projetos que usam o código. As vulnerabilidades variam de tipo, gravidade e método de ataque. As vulnerabilidades no código geralmente são introduzidas por acidente e corrigidas logo que são descobertas. Você deve atualizar o código para usar a versão fixa da dependência assim que ela estiver disponível.
Por outro lado, um software mal-intencionado ou um malware é um código projetado com a intenção de para executar funções indesejadas ou prejudiciais. O malware pode ter como alvo hardware, software, dados confidenciais ou usuários de qualquer aplicativo que o use. Você precisa remover o malware do projeto e encontrar uma substituição alternativa e mais segura para a dependência.
Avisos examinados pelo GitHub
Os avisos revisados pelo GitHub são vulnerabilidades de segurança que foram mapeadas para pacotes nos ecossistemas que contam com nosso suporte. Examinamos cuidadosamente a validade de cada aviso e garantimos que eles tenham uma descrição completa e contenham informações de ecossistema e pacote.
Geralmente, nomeamos os ecossistemas com suporte de acordo com o registro do pacote associado da linguagem de programação de software. Examinamos os avisos quando eles são de uma vulnerabilidade em um pacote proveniente de um registro com suporte.
- Composer (registro: https://packagist.org/)
- Erlang (registro: https://hex.pm/)
- Go (registro: https://pkg.go.dev/)
- GitHub Actions (https://github.com/marketplace?type=actions/)
- Maven (registro: https://repo.maven.apache.org/maven2)
- Npm (registro: https://www.npmjs.com/)
- NuGet (registro: https://www.nuget.org/)
- Pip (registro: https://pypi.org/)
- Pub (registry: https://pub.dev/packages/registry)
- RubyGems (registro: https://rubygems.org/)
- Rust (registro: https://crates.io/)
- Swift (registro: N/A)
Se você tiver uma sugestão para um novo ecossistema que precisa de suporte, abra um problema para discussão.
Caso habilite os Dependabot alerts para os repositórios, você será notificado automaticamente quando um novo aviso revisado pelo GitHub relatar uma vulnerabilidade ou um malware em pacotes dos quais você depende. Para obter mais informações, confira "Sobre alertas do Dependabot".
Avisos não examinados
Comunicados não revisados são vulnerabilidades de segurança que publicamos automaticamente no GitHub Advisory Database, diretamente do feed do National Vulnerability Database.
Dependabot não cria Dependabot alerts para consultorias não revisadas, pois esse tipo de consultoria não é verificado com relação à validade ou integralidade.
Avisos de malware
Os avisos de malware estão relacionados a vulnerabilidades causadas por malware e são avisos de segurança que o GitHub publica automaticamente no GitHub Advisory Database, diretamente das informações fornecidas pela equipe de segurança do npm. Os avisos de malware são exclusivos para o ecossistema do npm. O GitHub não edita nem aceita contribuições da comunidade nesses avisos.
O Dependabot não gera alertas quando um malware é detectado, pois a maioria das vulnerabilidades não pode ser resolvida por usuários downstream. Você pode visualizar avisos de malware ao pesquisar type:malware
no GitHub Advisory Database.
Nossos avisos de malware são principalmente sobre ataques de substituição. Durante esse tipo de ataque, um invasor publica um pacote no registro público com o mesmo nome de uma dependência da qual os usuários dependem de um registro de terceiros ou privado, com a esperança de que a versão mal-intencionada seja consumida. O Dependabot não examina as configurações do projeto para determinar se os pacotes são provenientes de um registro privado. Portanto, não temos certeza se você está usando uma versão mal-intencionada ou uma versão não mal-intencionada. Os usuários que têm suas dependências adequadamente definidas não devem ser afetados por malware.
Sobre informações em avisos de segurança
Nesta seção, você pode encontrar informações mais detalhadas sobre atributos de dados específicos do GitHub Advisory Database.
Sobre as IDs de GHSA
Cada comunicado de segurança, independentemente do tipo, tem um identificador exclusivo conhecido como ID de GHSA. Um qualificador GHSA-ID
é atribuído quando um aviso é criado no GitHub ou adicionado ao GitHub Advisory Database por meio de qualquer uma das fontes compatíveis.
A sintaxe das IDs de GHSA segue este formato: GHSA-xxxx-xxxx-xxxx
em que:
x
é uma letra ou um número do seguinte conjunto:23456789cfghjmpqrvwx
.- Fora da parte
GHSA
do nome:- Os números e letras são atribuídos aleatoriamente.
- Todas as letras são minúsculas.
É possível validar uma ID de GHSA usando uma expressão regular.
/GHSA(-[23456789cfghjmpqrvwx]{4}){3}/
/GHSA(-[23456789cfghjmpqrvwx]{4}){3}/
Sobre os níveis do CVSS
Cada aviso de segurança contém informações sobre a vulnerabilidade ou o malware, o que pode incluir a descrição, a severidade, o pacote afetado, o ecossistema do pacote, as versões afetadas e as versões de patch, o impacto e informações opcionais como, referências, soluções alternativas e créditos. Além disso, a consultoria da lista de Bancos de Vulnerabilidade Nacional contêm um link para o registro CVE, onde você pode ler mais detalhes sobre a vulnerabilidade, suas pontuações CVSS e seu nível de gravidade qualitativa. Para obter mais informações, confira o "Banco de Dados de Vulnerabilidades Nacionais" (National Vulnerability Database) do National Institute of Standards and Technology.
O nível de severidade é um dos quatro níveis possíveis definidos no "CVSS (Sistema de Pontuação de Vulnerabilidade Comum), Seção 5".
- Baixo
- Médio/Moderado
- Alta
- Crítico
O GitHub Advisory Database usa os níveis de CVSS descritos acima. Se GitHub obtiver um CVE, o GitHub Advisory Database usará a versão do CVSS atribuída pelo mantenedor, que pode ser a versão 3.1. Se o CVE for importado, o GitHub Advisory Database é compatível com as versões 3.1 e 3.0 do CVSS.
Você também pode ingressar no GitHub Security Lab para procurar tópicos relacionados à segurança e contribuir com ferramentas de segurança e projetos.
Sobre pontuações do EPSS
O Exploit Prediction Scoring System, ou EPSS, é um sistema desenvolvido pelo Forum of Incident Response and Security Teams (FIRST) para quantificar a probabilidade de exploração de vulnerabilidades. O modelo produz uma pontuação de probabilidade entre 0 e 1 (0 e 100%) em que, quanto maior a pontuação, maior a probabilidade de uma vulnerabilidade ser explorada. Para obter mais informações sobre o FIRST, consulte https://www.first.org/.
O GitHub Advisory Database inclui pontuações do EPSS do FIRST para avisos contendo CVEs com dados do EPSS correspondentes. A GitHub também exibe o percentil de pontuação do EPSS, que é a proporção de todas as vulnerabilidades marcadas com a mesma pontuação ou uma pontuação do EPSS inferior.
Por exemplo, se um consultor teve uma pontuação do EPSS com uma porcentagem de 90,534% no percentil 95, de acordo com o modelo do EPSS, isso significa que:
- Há 90,534% de chance de essa vulnerabilidade ser explorada nos próximos 30 dias.
- 95% do total de vulnerabilidades modeladas são consideradas menos propensas de serem exploradas nos próximos 30 dias do que essa vulnerabilidade.
Informações estendidas sobre como interpretar esses dados podem ser encontradas no Guia do Usuário sobre o EPSS do FIRST. Essas informações ajudam a entender como a porcentagem e o percentil podem ser usados para interpretar a probabilidade de uma vulnerabilidade ser explorada, de acordo com o modelo do FIRST. Para obter mais informações, consulte o Guia do usuário sobre o EPSS do FIRST, no site do FIRST.
O FIRST também fornece informações adicionais sobre a distribuição de seus dados do EPSS. Para obter mais informações, consulte a documentação de dados e estatísticas do EPSS no site do FIRST.
Note
A GitHub mantém os dados do EPSS atualizados com uma ação de sincronização diária. Embora as porcentagens de pontuação do EPSS sempre sejam totalmente sincronizadas, os percentis de pontuação apenas serão atualizados quando forem significativamente diferentes.
Na GitHub, não criamos esses dados, mas os obtemos do FIRST, o que significa que esses dados não são editáveis nas contribuições da comunidade.
Leitura adicional
- "Sobre alertas do Dependabot"
- A definição de "vulnerabilidade" do Programa CVE