Segundo a Microsoft, o incidente de tela azul causado por uma atualização da solução de segurança da CrowdStrike Falcon afetou mais de 8,5 milhões de computadores em todo o mundo. Este incidente custou caro a muitas empresas e também suscitou um grande debate sobre como evitar que situações semelhantes voltassem a acontecer.
Em primeiro lugar, ninguém está imune a erros; é simplesmente impossível garantir a completa ausência de bugs em sistemas de software complexos. No entanto, um processo adequadamente estruturado para desenvolver, testar e fornecer produtos e suas atualizações aos dispositivos dos usuários pode minimizar significativamente o risco de uma falha grave. E temos esse processo firmemente implementado há anos.
Nós também tivemos incidentes diretamente relacionados a atualizações de nossos produtos. Mas a última vez que algo desse tipo ocorreu em grande escala com nossas soluções foi em 2013. Após esse episódio desagradável, conduzimos uma análise completa das causas – levando a uma revisão completa da nossa abordagem para a criação e teste de atualizações, tanto em produtos para usuários empresariais quanto domésticos. E o sistema que construímos provou ser muito confiável: em 11 anos não tivemos uma única falha de magnitude semelhante.
Os mecanismos de lançamento de atualizações que construímos estão disponíveis para todas as corporações interessadas e estamos prontos compartilhá-los com a indústria. Afinal, sem o livre intercâmbio das melhores práticas e soluções desenvolvidas por diferentes empresas, o progresso na indústria da cibersegurança será enormemente prejudicado. Entre os principais mecanismos de proteção ao lançamento de atualizações estão os testes em vários níveis, a implementação gradual de atualizações e o monitoramento automático de anomalias. Vamos falar sobre eles em detalhes.
Testes em vários níveis
Existem dois tipos de atualizações para nossos produtos: algumas delas são usadas para adicionar nova lógica de detecção e outras para alterar a funcionalidade de um determinado produto. Adicionar novas funções potencialmente adiciona mais riscos, mas às vezes as atualizações lógicas também podem causar problemas. Portanto, testamos cuidadosamente ambos os tipos de atualizações em diferentes estágios.
Checagem para falsos positivos
Ao criar e liberar regras de detecção (tanto aquelas geradas automaticamente quanto aquelas escritas por analistas), nós as testamos em um extenso banco de dados de objetos legítimos (ou “limpos”) — arquivos, páginas da web, padrões de comportamento e assim por diante. Dessa forma, os falsos positivos são identificados e filtrados. Temos uma coleção extensa e constantemente atualizada de objetos legítimos — tanto software quanto recursos web — nos quais todas as regras criadas são testadas.
Uma das maneiras pelas quais essa coleção é reabastecida é por meio do nosso Programa de Listas de Permissão, que viabiliza que desenvolvedores de software (tanto clientes que desenvolvem e usam suas próprias soluções quanto fornecedores independentes) nos forneçam seus softwares. Isso reduz o número de possíveis falsos positivos e o risco de classificação incorreta do software.
Outros métodos para obter arquivos e metadados incluem a troca de informações com parceiros tecnológicos, o uso do nosso Portal de Inteligência de Ameaças e assim por diante. No total, a nossa base de dados de objetos legítimos contém informações sobre cerca de 7.2 bilhões objetos.
Testes em máquinas virtuais
Mas os testes de atualização não se limitam a verificá-los em coleções de arquivos. Se nenhum problema for detectado no primeiro estágio, todos os componentes atualizados passam por testes automáticos em vários estágios em máquinas virtuais com diversas configurações de produtos de segurança, software e sistemas operacionais. São executados vários cenários relacionados aos nossos produtos, ao funcionamento dos mecanismos de segurança e à imitação de ações típicas do usuário.
Em relação especificamente aos cenários do produto, eles incluem uma verificação completa do sistema de arquivos, o processo de instalação da atualização do produto, a reinicialização após a atualização e assim por diante. Isso nos permite garantir que o produto funcione normalmente após a atualização e não trave nem afete a estabilidade do sistema. Cada atualização passa por essa verificação.
Os cenários testados simulam o comportamento humano típico em um computador — abrir um navegador, visitar uma página da web, baixar um arquivo, iniciar um programa. Esta verificação assegura que o produto não tem um impacto negativo no desempenho, velocidade de trabalho ou estabilidade do computador.
Separadamente, as atualizações são testadas automaticamente quanto à compatibilidade com software industrial (por exemplo, sistemas SCADA). Qualquer impacto negativo nas soluções relacionadas com esta esfera pode levar a uma interrupção inadmissível dos processos produtivos e a potenciais danos financeiros.
Controle de qualidade
Além das verificações acima mencionadas, também contamos com uma equipe separada de controle de qualidade. Nem uma única versão de atualização de produto é entregue aos nossos clientes sem a confirmação de sua prontidão por parte de seus especialistas. Também, se necessário, ajusta e melhora constantemente os processos de verificação e monitora o surgimento de possíveis riscos operacionais.
Lançamento de atualizações de tecnologias de proteção em etapas
É claro que somos realistas e admitimos que todo este sistema de controle multinível pode não ser suficiente. Por exemplo, alguns softwares de terceiros serão atualizados ao mesmo tempo que o nosso, e isso pode causar um conflito imprevisto. E, em geral, é impossível prever todas as combinações de configurações de diferentes programas e sistemas. Portanto, depois que uma atualização que afeta a funcionalidade das soluções de segurança está pronta e aprovada, ela não é enviada para todos os computadores dos nossos usuários de uma só vez. Em vez disso, as atualizações são lançadas em fases.
Uma atualização passa por testes preliminares em máquinas da nossa própria rede antes de ser publicada em servidores públicos de atualização. Se nenhum problema for detectado, a atualização será recebida primeiro por um número pequeno de usuários selecionados aleatoriamente. Se nenhum problema ou falha for notificado, o número de computadores que receberá a atualização aumenta gradualmente em determinados intervalos, de forma contínua, até que a atualização esteja disponível para todos os usuários.
Monitoramento de anomalias automático
Então, o que acontece se uma atualização causar problemas? Monitoramos o comportamento de soluções atualizadas usando dados anônimos transmitidos voluntariamente por meio de nossa KSN e interrompemos imediatamente a distribuição de atualizações se algo der errado.
Mas o mais importante é que, graças à combinação do monitoramento automático de anomalias e do lançamento faseado de atualizações, um erro afetaria apenas um número muito pequeno de computadores – dezenas, não milhões ou mesmo milhares deles.
Teste de atualizações pela perspectiva do cliente
Nossa empresa oferece a capacidade de verificar novamente as atualizações recebidas, só que desta vez no lado do cliente, por meio do console de gerenciamento do Kaspersky Security Center. Milhões ou até milhares delas.
Os administradores de sistema do cliente podem estabelecer um grupo de teste isolado de computadores (ou máquinas virtuais) com a configuração e conjunto de software mais comum para a rede da organização e, em seguida, criar uma tarefa para verificar atualizações — especificando esse grupo de teste como alvo. Neste caso, todas as atualizações recebidas são primeiro instaladas apenas em máquinas de teste, testadas em ação e somente após o teste são distribuídas por toda a rede da empresa. Mais informações sobre como configurar essa verificação podem ser encontradas em nosso site de suporte técnico.
Analisamos minuciosamente todos os problemas relacionados com atualizações de software que possam surgir (incluindo aqueles identificados em testes preliminares), compreendemos as razões da sua ocorrência e, em seguida, tomamos medidas para garantir que não voltem a acontecer. Além disso, implementamos uma prática de identificar e avaliar proativamente os riscos de possíveis problemas e abordá-los de forma sistemática. Como resultado de fazer isso durante toda a vida da nossa empresa, estabelecemos um sistema multinível que nos permite reduzir significativamente o risco de surgimento de novos problemas.
É claro que em apenas uma publicação no blog é impossível contar tudo sobre todas as nuances do nosso sistema multinível para verificação de atualizações de produtos. No entanto, se este tema despertar interesse na indústria, estamos prontos para continuar compartilhando os detalhes. Só a cooperação aberta de todos os intervenientes na esfera da segurança da informação pode criar uma linha de defesa eficaz contra as ações dos cibercriminosos.