.
As correções de segurança do Python geralmente acontecem por meio de confirmações de código “silenciosas”, sem um identificador de vulnerabilidades e exposições comuns (CVE) associado, de acordo com um grupo de pesquisadores de segurança de computadores.
Isso não é o ideal, dizem eles, porque os invasores adoram explorar vulnerabilidades não divulgadas em sistemas não corrigidos e porque os desenvolvedores que não são especialistas em segurança podem não reconhecer que um upstream commit visa uma falha explorável que é relevante para seu código.
Portanto, um pacote Python pode ter um buraco sério, os desenvolvedores de aplicativos podem não perceber isso porque há pouco ou nenhum anúncio sobre isso e não incorporam uma versão corrigida em seu código, e os malfeitores podem tirar o máximo proveito disso explorando aqueles não -vulnerabilidades divulgadas.
Em um papel de pré-impressão intitulado “Exploring Security Commits in Python”, Shiyu Sun, Shu Wang, Xinda Wang, Yunlong Xing, Kun Sun da George Mason University e Elisa Zhang da Dougherty Valley High School, todos nos Estados Unidos, propõem uma solução: um banco de dados de commits de segurança chamados PySecDBName para tornar os reparos de código Python mais visíveis para a comunidade.
Mais confirmações de segurança caem silenciosamente, sem serem indexadas pelo CVE
“Como os registros CVE em programas Python são limitados, observamos que apenas 46% deles fornecem os commits de segurança correspondentes e mais commits de segurança caem silenciosamente, sem serem indexados pelo CVE”, concluiu o grupo em seu artigo, que foi aceito para o 2023 ICSME conferência.
O PySecDB tem três partes: um conjunto de dados base, um conjunto de dados piloto e um conjunto de dados aumentado. O conjunto de dados base consiste em confirmações de segurança associadas a identificadores CVE. Por exemplo, CVE-2021-27213 inclui um link para a mudança real do código no repositório GitHub do projeto relevante, uma correção de CWE 502Desserialização de dados não confiáveis.
O conjunto de dados piloto vem da identificação de mensagens de confirmação do GitHub em projetos Python que contêm palavras-chave relevantes.
E o conjunto de dados aumentado, projetado para capturar confirmações de segurança sem mensagens de confirmação reveladoras, vem de um modelo de rede neural de gráfico chamado SCOPY que detecta alterações de código relacionadas à segurança por meio da sequência e estrutura da semântica do código.
Juntos, eles formam o PySecDB, que os acadêmicos dizem representar o primeiro conjunto de dados de confirmação de segurança em Python. Ele contém 1.258 commits de segurança e 2.791 commits não relacionados à segurança selecionados de mais de 351 projetos populares do GitHub, abrangendo mais 119 CWEs.
Ao compilar o PySecDB, os autores do artigo notaram quatro padrões comuns de correção de segurança, que, segundo eles, podem ser generalizados e transformados em representações intermediárias para uso no reparo automatizado de programas. Esses padrões incluem: adicionar ou atualizar verificações de sanidade; revisar o uso da API; atualização de expressões regulares; e restringindo as propriedades de segurança.
Os boffins alertam que seu modelo SCOPY tem o potencial de identificar correções de vulnerabilidade não divulgadas, que, embora úteis, também podem permitir que um invasor encontre falhas em sistemas não corrigidos.
“Nosso objetivo neste documento é priorizar a segurança dos sistemas dos usuários; é por isso que compartilhamos apenas informações detalhadas sobre as correções de segurança, em vez das vulnerabilidades”, afirmam em seu documento. “Ao adotar essa abordagem, os invasores não podem aproveitar o SCOPY para obter detalhes adicionais sobre as vulnerabilidades. No entanto, com o SCOPY, os mantenedores de software de código aberto podem revelar vulnerabilidades rapidamente assim que as correções de segurança se tornarem públicas, melhorando a segurança geral de seus sistemas de software .”
O Dr. Kun Sun, professor do Departamento de Ciências e Tecnologia da Informação da George Mason University e co-autor do artigo, disse Strong The One em um e-mail que uma das razões pelas quais tantas vulnerabilidades do Python são abordadas silenciosamente é que “é muito complicado obter um CVE-ID para uma vulnerabilidade do Python”. Ele acrescentou também que “os desenvolvedores podem considerar a vulnerabilidade como um bug de desempenho”.
Para melhorar a situação de segurança, a Sun defende o aumento da conscientização sobre patches de segurança silenciosos, criando orientações para ajudar os desenvolvedores a identificar e rotular vulnerabilidades e aplicar ferramentas para detectar patches de segurança silenciosos.
Seth Michael Larson, desenvolvedor de segurança residente na Python Software Foundation, disse Strong The One que embora os patches de segurança silenciosos tenham algum impacto na segurança, ele suspeita que falhas graves com impacto significativo estão sendo devidamente registradas nos avisos CVE.
“No momento, há uma variedade de razões pelas quais pode haver uma discrepância entre correções de segurança e CVEs, como falta de tempo e recursos para mantenedores de código aberto ou incompatibilidades entre uma correção de segurança anotada automaticamente e um modelo de segurança de projetos que normalmente não pode ser processado automaticamente “, explicou Larson.
“Do ponto de vista dos produtores de software: o que estou vendo agora é que há uma ‘redução de barreiras’ geral para projetos que desejam adotar uma política de divulgação, publicar avisos e ter IDs CVE alocados para vulnerabilidades. Isso significa que haverá mais CVEs emitidos para vulnerabilidades de segurança e correções no futuro.”
“Para esse fim, em minha própria função: estou trabalhando nStrong The One do PSF como CVE Numbering Authority (CNA) e publicarei materiais para outras organizações ou projetos de código aberto que buscam gerenciar seus próprios CVEs e consultorias e como oferecer esses benefícios aos projetos em seu escopo.”
PySecDB está disponível em solicitar do Sun Security Laboratory da George Mason University, para pesquisa não comercial ou uso pessoal. ®
.