Será que as linguagens de programação com segurança de memória podem eliminar 70% dos bugs de segurança?

Homem sentado em frente a um computador

O Gabinete do Diretor Nacional de Cibersegurança (ONCD) divulgou recentemente um novo relatório intitulado "De volta aos fundamentos: um caminho rumo a um software seguro e mensurável". O relatório é um dos primeiros grandes anúncios do novo diretor do ONCD, Harry Coker, e defende veementemente a adoção de linguagens de programação com segurança de memória.

Este novo foco decorre do objetivo de reequilibrar a responsabilidade pela cibersegurança e realinhar os incentivos em favor de investimentos de longo prazo em cibersegurança. Linguagens de programação com segurança de memória também foram incluídas como um objetivo da Iniciativa de Segurança de Software de Código Aberto (OS3I), que lançou recentemente um novo relatório.

O que são linguagens de programação com segurança de memória?

Bugs de memória acontecem quando um programador escreve um código que causa um problema relacionado ao acesso à memória. Bugs comuns acontecem com estouro de buffer e ponteiros oscilando. Ao usar uma linguagem de programação com segurança de memória, como Rust, Go, Java, Swift e Python, os desenvolvedores ficam impedidos de escrever código que cause erros de memória, porque essas linguagens têm recursos específicos, como segurança de memória e de tipos. Quando os desenvolvedores escrevem um código em linguagens que não têm segurança de memória, como C e C++, eles podem inadvertidamente escrever um código que pode causar erros de acesso à memória. Em vez de detectar os erros durante o tempo de compilação e o tempo de execução, assim como acontece nas linguagens com segurança de memória, os bugs chegam à versão final e causam problemas de segurança.

Embora a cibersegurança muitas vezes se concentre em reagir a ameaças, a redução de riscos começa com a criação de práticas que diminuam os erros de código que podem gerar problemas de segurança. O Google relatou que 70% dos bugs de segurança graves são, na verdade, problemas de segurança de memória. As linguagens de programação amplamente utilizadas, como C e C++ são muitas vezes as principais responsáveis por esses problemas, sobretudo por causa de erros relacionados a ponteiros.

O uso de uma linguagem com segurança de memória reduz significativamente ou elimina totalmente as vulnerabilidades relacionadas à segurança de memória. Isso, por sua vez, reduz o risco de cibersegurança do código final. Além de proporcionar maior segurança, linguagens com segurança de memória também reduzem travamentos e permitem que os desenvolvedores aumentem a produtividade, pois não precisam se concentrar em questões de gerenciamento de memória.

As mais recentes notícias de tecnologia, corroboradas por insights de especialistas.

Mantenha-se atualizado sobre as tendências mais importantes (e intrigantes) do setor em IA, automação, dados e muito mais com o boletim informativo Think. Consulte a Declaração de privacidade da IBM.

Agradecemos sua inscrição!

Sua assinatura será entregue em inglês. Você pode encontrar um link para cancelar a assinatura em todos os boletins informativos. Você pode gerenciar suas inscrições ou cancelar a inscrição aqui. Consulte nossa Declaração de privacidade da IBM para obter mais informações.

O relatório do ONCD descreve dois objetivos relacionados a linguagens com segurança de memória.

Reduzir bugs de memória é uma questão complexa que requer uma abordagem multifacetada. O relatório tem como objetivo levar as organizações a se concentrarem em duas áreas específicas relacionadas às linguagens com segurança de memória. Além disso, o governo quer se concentrar na criação de parcerias com a comunidade técnica, especialmente engenheiros e desenvolvedores, para colaborar na realização dessa mudança fundamental.

Estes são os dois principais objetivos descritos na ficha técnica divulgada com o relatório:

1. Reduzir a superfície de ataque no ciberespaço

Uma área de ataque menor significa menor risco. Cada linha de código que cria vulnerabilidades expande consideravelmente a superfície de ataque . Um único erro que cause um erro de segurança de memória pode criar um grande número de vulnerabilidades. O relatório recomenda o uso de uma linguagem de programação com segurança de memória como uma das maneiras mais eficazes de reduzir a superfície de ataque. Com essas linguagens, os programadores não podem cometer erros que levam ao aumento da superfície de ataque por meio de bugs de memória.

2. Antecipação de riscos de segurança sistêmicos

Muitas organizações não conseguem avaliar com precisão os riscos em seus softwares porque usar métricas em softwares em constante mudança é extremamente desafiador. Embora a mensurabilidade de software seja um desafio complexo, a mudança começa ao passar de uma postura reativa para uma postura proativa. Ao desenvolver melhores diagnósticos para a qualidade da cibersegurança, as organizações podem identificar com mais precisão e corrigir proativamente os riscos.

Mixture of Experts | 12 de dezembro, episódio 85

Decodificando a IA: resumo semanal das notícias

Participe do nosso renomado painel de engenheiros, pesquisadores, líderes de produtos e outros enquanto filtram as informações sobre IA para trazerem a você as mais recentes notícias e insights sobre IA.

A realidade da transição para a segurança de memória

Embora seja fácil dizer que as organizações deveriam usar linguagens com segurança de memória, a realidade é que essa transição é complicada. Muitos programas e bibliotecas de software são baseados em linguagens que não possuem protocolos de segurança de memória rigorosos, e reescrever completamente todo o código-fonte muitas vezes simplesmente não é viável.

Começar um novo projeto com uma linguagem de programação que priorize a segurança da memória, sempre que possível, é a maneira mais simples de iniciar a transição. As organizações também podem reduzir a superfície de ataque sem uma reescrita total reescrevendo apenas as funções críticas e bibliotecas que são mais suscetíveis a bugs de segurança de memória, que geralmente incluem áreas com estouro de buffer e ponteiros pendentes. Algumas linguagens com segurança de memória, como Rust e Swift, são interoperáveis com C e C++, tornando essa abordagem viável. Ao adotar essa abordagem, as organizações precisam integrar, na nova linguagem, os sistemas e as abstrações de build para lidar com os objetos e dados compartilhados.

No entanto, fazer essa transição requer os recursos de desenvolvimento certos. As organizações devem começar avaliando sua equipe de desenvolvedores atual para determinar qual conhecimento a equipe possui no momento em termos de linguagens de segurança de memória. As próximas etapas são treinar os desenvolvedores atuais, bem como garantir que os novos desenvolvedores sejam qualificados em linguagens de segurança de memória.

Avançar com linguagens de programação com segurança de memória

Com o crescente foco na cibersegurança, muitas organizações estão percebendo que o passo mais importante é passar de uma abordagem reativa para uma proativa. Ao retornarem ao início e se concentrarem na criação de um código seguro, as organizações podem reduzir significativamente seus riscos. Embora não seja um processo simples ou rápido, os benefícios de fazer essa mudança são significativos e duradouros.