Casa Branca Contra C/C++: Desafios nas Bases dos Sistemas Operacionais Windows, Linux e macOS

Casa Branca Contra C/C++: Desafios nas Bases dos Sistemas Operacionais Windows, Linux e macOS

O governo dos Estados Unidos fez um novo esforço curioso para evitar ser exposto a ameaças à segurança cibernética. Não se trata de evitar o uso de equipamentos da Huawei ou de procurar malware chinês infiltrado nas suas bases militares, mas agora o que se pretende é impedir que os programadores utilizem determinadas linguagens de programação. E esse é precisamente o problema.

Nem C nem C++. O chamado Escritório do Diretor Nacional Cibernético (ONCD) é uma agência da Casa Branca, e os responsáveis fizeram um pedido singular: que os desenvolvedores deste país não utilizem as linguagens de programação C e C++.

Por favor, use uma linguagem "segura para a memória".. O argumento é que essas duas linguagens são inseguras devido ao gerenciamento de memória, o que as exclui das recomendações deste órgão. O relatório publicado pelos responsáveis insere-se na nova estratégia de cibersegurança do Presidente Biden e visa “proteger os componentes básicos do ciberespaço”.

 <img alt="Jensen Huang é claro: nesta altura ninguém deve aprender a programar, a IA fará isso por nós" src="https://i.blogs.es/8f2e9e/jensen/375_142.jpeg">

Certamente existem riscos. Em 2019, os engenheiros de segurança da Microsoft indicaram que 70% das vulnerabilidades de segurança se deviam a problemas de segurança de gestão de memória. Em 2020, o Google revelou dados semelhantes afetando seu navegador de código aberto Chromium.

Existem “dezenas” de linguagens mais seguras. O referido relatório faz essas recomendações e cita essas duas linguagens, mas também indica que existem muitas outras que são “linguagens de programação seguras para memória que podem – e devem – ser usadas”.

Estas são as linguagens "seguras". De acordo com esta organização, as linguagens de programação seguras para memória recomendadas são as seguintes:

  • Ferrugem
  • Ir
  • C#
  • Java
  • Rápido
  • JavaScript
  • Rubi
  • Pitão
  • Delphi/Object Pascal
  • Ada

Nessa lista estão linguagens realmente populares como Python —que lidera as paradas de popularidade há muito tempo—, e também opções muito queridas por desenvolvedores como Rust.

Mas C e C++ são muito usados. O problema desta recomendação é que embora seja aplicada a novos desenvolvimentos, é muito mais difícil aplicá-la aos já existentes. Na verdade, a linguagem C é protagonista absoluta no sistema operacional Linux que, lembremos, domina na área de servidores. É verdade que existem esforços visando aumentar o uso de Rust no kernel Linux, mas mesmo assim a relevância da linguagem C no restante do sistema é importante demais para propor grandes mudanças no curto ou médio prazo.

O Windows, por sua vez, é programado em C++ e seu kernel é desenvolvido em C, enquanto o macOS é desenvolvido principalmente em Objective-C e o kernel é escrito principalmente em C e alguns segmentos de código diretamente em assembly.

Uma velha cantiga. O presente relatório lembra-nos aquele publicado há um ano pela NSA com a mesma mensagem. Na época, Bjarne Stroustrup, criador da linguagem C++ em 1979, acusou a agência de simplificar demais a situação:

"Agora, se eu considerasse uma dessas linguagens 'seguras' como superior ao C++ para a gama de usos em que estou interessado, não veria o fim do C/C++ como algo negativo, mas esse não é o caso. Conforme descrito [pela NSA] 'seguro' é limitado à segurança da memória, deixando de fora uma dúzia de maneiras diferentes pelas quais uma linguagem poderia (e será) usada para violar qualquer tipo de proteção."

Para este especialista, os problemas de segurança poderiam ser mitigados “combinando vários estilos de programação, bibliotecas complementares e aplicações de análise estática”. Poderão certamente existir alternativas mais interessantes do ponto de vista da gestão de memória, mas será difícil que a popularidade de C ou C++ seja particularmente afetada pelo relatório ONCD.

Imagem | Aaron Kittredge

Em Xataka | Copilot, ChatGPT e GPT-4 mudaram o mundo da programação para sempre. Isso é o que os programadores pensam