Proteger sistemas de tecnologia crítica de ameaças potenciais é uma preocupação crescente para os governos. E um exemplo disso é o recente apelo dirigido à indústria de desenvolvimento de software e feito pela Casa Branca por meio do Escritório de seu Diretor Nacional de Cibersegurança (ONCD) para adotar linguagens” seguras para memória. Neste documento, o Governo dos Estados Unidos pede nada mais, nada menos que o fim das linguagens de programação C/C++.
Isso significa abandonar as linguagens de programação interpretadas como “inseguras” nesta área, uma lista que inclui as duas principais linguagens de desenvolvimento de sistemas operacionais: C e C++.
Linguagens populares, mas não tão seguras: Governo dos Estados Unidos pede fim das linguagens de programação C/C++
As linguagens C e C++, apesar de sua popularidade e uso extensivo no desenvolvimento de software (incluindo sistemas operacionais) nas últimas décadas, têm sido destacadas por apresentarem riscos de segurança, especialmente quando se utilizam sistemas críticos.
Enquanto linguagens como Java têm controles de detecção de erros em tempo de execução, que as tornam exemplos de linguagens “seguras para memória”, C ou C++ permitem a manipulação direta e irrestrita de endereços de memória, o que pode levar a vulnerabilidades como estouros de buffer.
A ONCD, em seu relatório, não se limita a apontar os riscos associados ao C e ao C++, mas também propõe alternativas. Linguagens como Rust, Go, C#, Java, Swift, JavaScript e Ruby são mencionadas como opções seguras para memória.
É importante notar que, no entanto, o ONCD não estabeleceu uma lista de linguagens de programação “permitidas” ou “proibidas”, mas (por enquanto) apenas busca promover uma maior conscientização sobre os riscos associados a certas linguagens.
Uma mudança difícil e desnecessária?
De acordo com estudos anteriores da Microsoft e do Google, cerca de 70% das vulnerabilidades de segurança são causadas por problemas relacionados à segurança da memória.
O problema é que nem todas as linguagens propostas pela Casa Branca podem substituir o C/C++ (tente criar um sistema operacional com JavaScript) e que o trabalho já feito nessas linguagens inseguras não pode ser portado da noite para o dia (ou de um ano para o outro) para outras mais solventes, como Rust.
Nem mesmo a Linux Foundation, que recentemente apoiou a última linguagem em seu kernel, contempla seu uso para algo mais do que módulos e drivers. E isso apesar do fato de Linus Torvalds afirmar estar convencido de que “em algum momento” ele testemunhará tal mudança de linguagem em seu núcleo.
Há um ano, o criador do C++ criticou um relatório da Agência de Segurança Nacional dos EUA (NSA) que defendia a superioridade de “linguagens seguras”, como Rust, sobre outras, como C e C++; Esse relatório também se concentrou no gerenciamento de memória e, previsivelmente, foi o gatilho para a atual decisão da Casa Branca.
Bjarne Stroustrup foi contundente então:
“Se eu considerasse uma dessas linguagens ‘seguras’ superior ao C++ para a gama de usos em que estou interessado, não veria o fim do C/C++ como negativo, mas esse não é o caso. Como descrito [pela NSA], ‘seguro’ é limitado à segurança da memória, deixando de fora uma dúzia de maneiras diferentes pelas quais uma linguagem pode (e será) ser usada para violar qualquer tipo de proteção.”
Além disso, de acordo com Stroustrup, um analisador estático que esteja em conformidade com as diretrizes básicas de C++ desenvolvidas nos últimos anos pode garantir a segurança do código… e a um custo muito menor do que o necessário para iniciar uma transição de código para novas linguagens.
Não há cibersegurança sem considerar o “quem” além do “o quê”
Este apelo é uma consequência da crescente preocupação com a cibersegurança causada por incidentes como a grave vulnerabilidade Log4j, que expôs as deficiências no desenvolvimento de software crítico, quando a segurança de milhões de sites foi deixada nas mãos de apenas três programadores voluntários que, trabalhando de graça (e ficando sem dormir) tiveram que lançar um patch contra o relógio que mais tarde seria implementado por muitas grandes empresas.
O que aconteceu com os programadores que há dois anos trabalharam de graça para evitar milhões de dólares em prejuízos às grandes empresas de tecnologia?
É por isso que a recomendação da Casa Branca não apenas incentiva uma mudança nas ferramentas de desenvolvimento, mas também busca redefinir a responsabilidade pela segurança cibernética, para que ela não esteja mais exclusivamente sobre os ombros de pequenas equipes ou programadores individuais.
… e incentivar organizações maiores que também se beneficiam do uso desse tipo de software (grandes empresas de tecnologia e, em última análise, o governo) a “fazer pitch-in”.