Sobre o 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.
Tipos de avisos de segurança
Cada aviso em GitHub Advisory Database refere-se a um problema de segurança específico em um componente de software. Esses problemas vêm em várias variedades.
Uma vulnerabilidade é um problema no código de um projeto que pode ser explorado para prejudicar a confidencialidade, a integridade ou a disponibilidade do projeto ou de outros projetos que o usam. Vulnerabilidades no código geralmente são introduzidas por acidente e corrigidas logo após serem descobertas. Os avisos de vulnerabilidade contêm informações sobre o intervalo de versões de pacote lançadas em que o problema existe e a versão mais antiga em que o problema foi corrigido. Isso ajuda os usuários downstream do software a resolver a vulnerabilidade atualizando suas dependências para usar uma versão fixa 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. Os alertas de malware não contêm uma versão de correção, pois a característica definidora de um alerta de malware é que não há versões seguras. O único curso de ação seguro é não usar o pacote.
Ambos os tipos de consultoria são informações públicas sobre pacotes de código aberto. Os usuários com GitHub Code Security ou GitHub Advanced Security também podem criar avisos de fonte interna, que restringem a visibilidade apenas à sua organização ou empresa. Os avisos de innersource usam o mesmo formato OSV que os avisos públicos, mas podem ser associados a projetos públicos ou internos privados. Isso permite que as empresas usem os recursos familiares Dependabot de alerta e atualização para fornecer correções aos consumidores de software internos. Para obter mais informações sobre avisos de fonte interna, consulte Innersource advisories.
GitHubAvisos de vulnerabilidade revisados
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.
** GitHubOs avisos revisados** são mapeados para pacotes em ecossistemas que oferecemos suporte. Revisamos cuidadosamente cada consultoria quanto à validade e garantimos que elas contenham uma descrição completa e 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/)
- Ações do GitHub (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 (registro: 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.
Se você habilitar Dependabot alerts para seus repositórios, será notificado automaticamente quando um novo GitHub aviso revisado relatar uma vulnerabilidade em um pacote ao qual você depende. Para obter mais informações, consulte Alertas do Dependabot.
Avisos de vulnerabilidade não verificados
Os avisos não verificados são publicados automaticamente no GitHub Advisory Databasefeed do Banco de Dados de Vulnerabilidade Nacional.
Dependabot não cria Dependabot alerts para avisos não revisados, pois esse tipo de aviso não é verificado quanto à validade ou à conclusão.
Avisos de malware
Os avisos de malware estão relacionados a vulnerabilidades causadas por malware e são exclusivos do ecossistema npm . Os publicamos automaticamente no GitHub Advisory Database, diretamente a partir das informações fornecidas pela equipe de segurança do npm.
Dependabot não gera alertas quando o malware é detectado, pois a maioria das vulnerabilidades não pode ser resolvida por usuários downstream. Você pode visualizar avisos de malware pesquisando 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. Dependabot não analisa as configurações do projeto para determinar se os pacotes são provenientes de um registro privado, portanto, não podemos determinar se você está usando a versão mal-intencionada ou uma versão não mal-intencionada que tem o mesmo nome. Os usuários que têm suas dependências adequadamente definidas não devem ser afetados por malware.
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.
Identificadores GHSA
Cada comunicado de segurança, independentemente do tipo, tem um identificador exclusivo conhecido como ID de GHSA. Um GHSA-ID qualificador é atribuído quando um novo aviso é criado em GitHub ou adicionado ao GitHub Advisory Database de qualquer uma das fontes suportadas.
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
GHSAdo 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}/
Níveis de CVSS
O GitHub Advisory Database suporta tanto o CVSS versão 3.1 quanto o CVSS versão 4.0.
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, avisos da lista do Banco de Dados Nacional de Vulnerabilidades contém um link para a entrada CVE, no qual 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
- Alto
- Crítico
O GitHub Advisory Database usa os níveis de CVSS descritos acima. Se GitHub obtiver um CVE, usará a GitHub Advisory Database versão CVSS atribuída pelo mantenedor, que pode ser a versão 3.1 ou 4.0. Se o CVE for importado, o GitHub Advisory Database CVSS oferecerá suporte às versões 4.0, 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.
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/.
Inclui GitHub Advisory Database pontuações de EPSS de FIRST para avisos que contêm CVEs com dados EPSS correspondentes. GitHub também exibe o percentil de pontuação do EPSS, que é a proporção de todas as vulnerabilidades pontuadas com a mesma pontuação EPSS ou uma pontuação menor do EPSS.
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.
Observação
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.
GitHub, onde não criamos esses dados, mas sim os obtemos do FIRST, o que implica que esses dados não podem ser editados em contribuições da comunidade. Para obter mais informações sobre contribuições da comunidade, confira Editando consultorias de segurança no banco de dados consultivo do GitHub.
Contribuições da comunidade
Uma contribuição da comunidade é uma solicitação de pull enviada ao repositório github/advisory-database que aprimora o conteúdo de um aviso de segurança global. Ao fazer uma contribuição da comunidade, você pode editar ou adicionar qualquer detalhe, incluindo ecossistemas afetados adicionais, o nível de gravidade ou a descrição de quem é afetado. A GitHub Security Lab equipe de curadoria examinará as contribuições enviadas e, se aceitas, publicará as no GitHub Advisory Database.
Se aceitarmos e publicarmos a contribuição da comunidade, a pessoa que enviou a solicitação de pull de contribuição da comunidade receberá automaticamente um tipo de crédito de "Analista". Para obter mais informações, consulte Criando uma consultoria de segurança do repositório.
Leitura adicional
- Alertas do Dependabot
- A definição de "vulnerabilidade" do Programa CVE