A Microsoft anunciou que desenvolveu um novo sistema capaz de distinguir corretamente erros de segurança e não relacionados a segurança em 99% das vezes. O sistema também é capaz de identificar com precisão bugs de segurança críticos e de alta prioridade, em média, 97% do tempo.
A Microsoft usou um conjunto de dados de 13m itens de trabalho e bugs de 47.000 de seus desenvolvedores armazenados nos repositórios AzureDevOps e GitHub para desenvolver um modelo de processo e aprendizado de máquina que distingue corretamente entre bugs de segurança e não relacionados à segurança. Nos próximos meses, a empresa planeja abrir a metodologia de código-fonte no GitHub, juntamente com modelos de exemplo e outros recursos, para que o sistema possa ser usado para ajudar no suporte a especialistas humanos.
Ao desenvolver seu modelo, os especialistas em segurança aprovaram os dados de treinamento e a amostragem estatística que foram usados para fornecer a eles uma quantidade gerenciável de dados para revisar. Esses dados foram codificados em representações chamadas vetores de recursos, enquanto os pesquisadores da Microsoft projetavam o sistema usando um processo de duas etapas.
O modelo aprendeu primeiro a classificar os bugs de segurança e não relacionados à segurança e, em seguida, aprendeu a aplicar rótulos de segurança (críticos, importantes ou de baixo impacto) a esses bugs.
Identificando erros de segurança
Para fazer suas previsões de erros, o modelo da Microsoft utiliza duas técnicas.
A primeira é uma abordagem de recuperação de informações chamada algoritmo de frequência de documento inverso de frequência (TF-IDF), que identifica quantas vezes uma palavra aparece em um documento e, em seguida, verifica a relevância da palavra em uma coleção de títulos. Segundo a Microsoft, seus títulos de bugs geralmente são bastante curtos e contêm cerca de 10 palavras.
A segunda técnica usada pela gigante do software é um modelo de regressão logística que utiliza uma função logística para modelar a probabilidade de uma determinada classe ou evento existente.
Em seu blog anunciando o novo sistema, a Microsoft explicou como utilizava modelos de aprendizado de máquina e especialistas em segurança para identificar melhor os bugs de segurança, dizendo:
“Todos os dias, os desenvolvedores de software examinam uma longa lista de recursos e bugs que precisam ser resolvidos. Os profissionais de segurança tentam ajudar usando ferramentas automatizadas para priorizar os erros de segurança, mas, com muita frequência, os engenheiros perdem tempo com falsos positivos ou perdem uma vulnerabilidade crítica de segurança que foi classificada incorretamente. Para resolver esse problema, as equipes de ciência e segurança de dados se reuniram para explorar como o aprendizado de máquina poderia ajudar. Descobrimos que, ao emparelhar modelos de aprendizado de máquina com especialistas em segurança, podemos melhorar significativamente a identificação e classificação de bugs de segurança. ”
O novo sistema de detecção de bugs da Microsoft já foi implantado em sua produção interna e também é continuamente treinado com dados aprovados pelos especialistas em segurança da empresa, que monitoram quantos bugs são gerados durante o desenvolvimento do software.