Como o Google reduziu as vulnerabilidades de segurança do Android em 52%

Por anos, o Google vem trabalhando duro para tornar o Android um sistema operacional cada vez mais seguro. Os invasores procuram por qualquer brecha que possam explorar, usando métodos comuns como phishing ou outros mais complexos como vulnerabilidades de segurança de memória. Agora, o Google explica como a abordagem Safe Coding conseguiu reduzir significativamente as vulnerabilidades de segurança de memória no Android nos últimos anos.

Google usa abordagem de codificação segura contra vulnerabilidades de segurança de memória

Vulnerabilidades de segurança de memória são aquelas que tiram vantagem de bugs relacionados à memória, como estouros de buffer, problemas de string de formato ou ponteiros pendurados, para interagir ou até mesmo sobrescrever a memória. Esses tipos de vulnerabilidades ainda estão amplamente presentes no desenvolvimento de software. Os desenvolvedores tentam atacá-los de várias abordagens, com mitigações e detecções proativas predominando. No entanto, o Google está confiante de que o Safe Coding é a abordagem ideal para minimizar vulnerabilidades de segurança de memória, como evidenciado por seus resultados com o Android.

A abordagem Safe Coding prioriza o uso de linguagens de programação com segurança de memória desde o início. No entanto, há softwares com muitos anos de idade e milhões de linhas de código-chave desenvolvidos em linguagens “inseguras para memória”. Então, qual é a proposta do Google nesses casos? A resposta está na transição gradual para linguagens com segurança de memória (como Rust) para novos recursos.

Basicamente, o Google propõe que os desenvolvedores comecem a implementar exclusivamente linguagens seguras para memória ao desenvolver novos recursos. Enquanto isso, o código antigo baseado em linguagens inseguras permanecerá “inalterado” além da manutenção clássica e correções de bugs. Isso se traduz em alcançar interoperabilidade segura, eficiente e econômica entre código novo e antigo.

Vulnerabilidades de segurança de memória do Android caíram 52% em 6 anos

De acordo com o Google, a abordagem Safe Coding resultou em uma queda nas vulnerabilidades de segurança de memória no Android de 76% para 24% em apenas 6 anos. No entanto, a ideia de manter um código inseguro para a memória pode parecer contraintuitiva. Afinal, se você está procurando segurança máxima, seu primeiro pensamento seria migrar todo o seu código para uma linguagem segura. Embora isso possa ser verdade, a abordagem do Google faz sentido, e a empresa explica o porquê.

Vulnerabilidades do Google Memory Safe (1)

No desenvolvimento de software, eficiência de código e custo-benefício são essenciais. Existem ferramentas ou sistemas inteiros com muitos anos de desenvolvimento por trás deles. Isso envolve milhões e milhões de linhas fundamentais de código. Enquanto uma empresa poderia simplesmente começar a reescrever software do zero com base em linguagens seguras de memória, o investimento e o esforço provavelmente não valem a pena. A situação pode ser diferente em desenvolvimentos relativamente novos com pouco tempo por trás deles, no entanto.

Vantagens da codificação segura e interoperabilidade

O Google alega que a abordagem Safe Coding, que é baseada na interoperabilidade do código, é uma maneira econômica e prática de adotar código seguro para memória. Isso, por sua vez, o torna econômico, pois permite que as empresas alavanquem investimentos anteriores. O custo é significativamente menor em comparação com a reescrita do software do zero. Também é eficiente porque permite que novos recursos continuem a ser desenvolvidos enquanto integra o novo código seguro.

Usar código inerentemente seguro para memória também garante custos mais baixos a longo prazo. Abordagens anteriores favoreciam um ciclo infinito de “ataque e defesa” entre desenvolvedores e invasores. Contar com mitigações e detecções proativas exigia ação e investimento contínuos em resposta a ataques potenciais. No entanto, a Codificação Segura permite que desenvolvedores e empresas esqueçam isso, concentrando-se em manter e melhorar recursos ou corrigir bugs.

Também há maior produtividade graças a menores taxas de rollback de código. Ou seja, há menos situações de rollback de código de emergência devido a bugs inesperados. O Google afirma que o Rust oferece taxas de rollback de código menores que a metade do C++. Essencialmente, o Safe Coding traz economias significativas de tempo e dinheiro para empresas e desenvolvedores. Na indústria atual, que monitora de perto a lucratividade, isso pode ser crucial.

O Google revela que implementou a interoperabilidade entre “Rust ↔︎ C++ e Rust ↔︎ Kotlin”. A empresa também contribuiu com dinheiro e ferramentas para impulsionar sua abordagem. Por exemplo, o Google doou US$ 1.000.000 para a Rust Foundation para impulsionar sua evolução. Ele também forneceu suas próprias ferramentas de interoperabilidade, como Crubit e autocxx.

Vulnerabilidades do Google Memory Safe (3)

É assim que a abordagem de codificação segura torna o software mais seguro

Você ainda pode estar se perguntando como uma abordagem que mantém o código inseguro para a memória pode levar a uma redução exponencial de vulnerabilidades de segurança de memória. O Google também explica isso em seu post de blog, de uma forma bem técnica, mas tentarei simplificar para todos.

Por meio de estudos em larga escala, a USENIX Security e o próprio Google descobriram um fenômeno intrigante. Basicamente, a pesquisa concluiu que a grande maioria das vulnerabilidades de memória em software tem origem em código novo. Uma parcela significativa também é derivada de código modificado recentemente. O Google também notou que a densidade de vulnerabilidades de segurança de memória do Android diminuiu progressivamente em código antigo.

Dado que uma parte significativa do problema decorre de um novo código, faz sentido focar nele, correto? Esse é o raciocínio por trás da decisão do Google de adotar a abordagem Safe Coding. Mas por que mais problemas e vulnerabilidades se acumulam em um novo código? Isso ocorre porque toda linguagem de programação tem uma propriedade fundamental: maturação.

Embora a estrutura fundamental de uma linguagem possa torná-la insegura para a memória, atualizações sucessivas podem ajudar a mitigar isso. Então, teoricamente, o código inseguro usado em partes mais antigas do software pode se tornar menos vulnerável ao longo do tempo. Ao combinar a maturação do código mais antigo com novos recursos desenvolvidos em um código novo e inerentemente seguro para a memória, o resultado será uma diminuição exponencial nas vulnerabilidades da memória.

Vulnerabilidades do Google Memory Safe (2)

O Google recomenda Rust como uma linguagem segura para a memória

Claro, portar partes de códigos mais antigos para linguagens como Rust pode tornar as coisas ainda mais seguras. No entanto, isso nem sempre é possível, pelo menos não de forma direta. Há casos em que mover um único bloco pode derrubar o castelo inteiro. O Google é inflexível sobre Rust como uma linguagem de programação segura para memória. Então, se você está interessado em aprender programação ou uma nova linguagem para ser competitivo na indústria de hoje, Rust pode ser o que você está procurando.

Vulnerabilidades de segurança de memória não são as únicas por aí. Terceiros maliciosos continuarão a procurar maneiras de tentar contornar as camadas de segurança de qualquer software. No entanto, ter barreiras fortes nas “entranhas” do software garante que os invasores terão que recorrer a métodos mais mundanos e facilmente neutralizados. Por exemplo, você pode evitar ser vítima de phishing simplesmente usando o bom senso.

Rolar para cima
Pular para o conteúdo