A equipe de segurança de código aberto do Google diz que o OSS-Fuzz, seu serviço de fuzzing comunitário, ajudou a corrigir mais de 8.000 vulnerabilidades de segurança e 26.000 outros bugs em projetos de código aberto desde sua estreia em 2016. Assim, o Google incentiva comunidade open source a testar código fuzz.
E o grupo gostaria de ver os desenvolvedores de código aberto fazendo mais fuzzing para tornar o mundo um lugar melhor, ou pelo menos tornar o software um pouco mais seguro. Então, está oferecendo incentivos concretos versus pontos de exposição.
Fuzzing, ou teste fuzz, é uma técnica de teste de software que tenta encontrar bugs injetando dados aleatórios ou semi-aleatórios no software. Foi desenvolvido pelo professor de ciência da computação da UW-Madison, Barton Miller, em 1989 [PDF]. Miller queria entender como o ruído criado por uma tempestade interferia em sua conexão de modem dial-up a um sistema Unix, e isso abriu novas áreas de pesquisa em análise de código.
Google incentiva comunidade open source a testar código fuzz
O Google lançou o OSS-Fuzz em 2016 em resposta à vulnerabilidade Heartbleed, uma falha de estouro de buffer de memória que poderia ter sido detectada por testes de fuzz.
“Na época, porém, o fuzzing não era amplamente usado e era complicado para os desenvolvedores, exigindo um esforço manual extenso”, explicam Jonathan Metzman e Dongge Liu, da equipe de segurança de código aberto do Google, em um post no blog.
O OSS-Fuzz atualmente verifica cerca de 700 projetos críticos de código aberto em busca de bugs e em julho detectou uma falha séria no projeto TinyGLTF, uma biblioteca que depende da função da biblioteca C wordexp() para expansão de caminho de arquivo em caminhos não confiáveis de um arquivo de entrada.
“Esta vulnerabilidade mostra que foi possível injetar backticks no formato de arquivo glTF de entrada e permitir que comandos sejam executados durante a análise”, explicaram Metzman e Liu.
Qualquer projeto que incorporasse o TinyGLTF como uma dependência era potencialmente vulnerável, então essa foi uma vitória significativa para o fuzzing.
Metzman e Liu atribuem a descoberta ao trabalho que sua equipe de segurança realizou em dezembro passado em resposta à vulnerabilidade do Log4Shell. Esse esforço levou ao desenvolvimento de novos sanitizantes que poderiam identificar bugs capazes de serem explorados para executar comandos arbitrários em qualquer linguagem de programação. Um desses desinfetantes, SystemSan, é creditado por detectar o bug do TinyGLTF.
O trabalho levou a um código de prova de conceito para detectar problemas em programas JavaScript e Python e, com a ajuda da empresa de segurança Code Intelligence, à criação de sanitizadores para vários problemas específicos de Java. De acordo com Metzman e Liu, várias vulnerabilidades de desserialização e injeção de LDAP já foram encontradas usando essas ferramentas e aguardam divulgação coordenada.
Incentivo para adotar o código
Metzman e Liu encorajaram os participantes da comunidade de código aberto a adotar o fuzzing e acenaram com a perspectiva de recompensas. Aqueles que integram um novo desinfetante no OSS-Fuzz, ou um mecanismo de fuzzing como o Jazzer, que encontra pelo menos duas vulnerabilidades não identificadas anteriormente em projetos OSS-Fuzz, receberão um prêmio de US$ 11.337.
Alternativamente, aqueles que integram um novo projeto de importância suficiente no OSS-Fuzz – uma grande base de usuários e/ou críticos para a infraestrutura de TI global – são elegíveis para prêmios que variam de US$ 1.000 a US$ 20.000.
“Fuzzing ainda tem muito potencial inexplorado na descoberta de mais classes de vulnerabilidades”, concluem Metzman e Liu.