Eis, a realidade: as linguagens de programação C/C++ não são mais vistas como ideais ou apropriadas, para o desenvolvimento de softwares que requeram uma atenção especial para a segurança! Isto se dá, em vista da flexibilidade para a gestão de memória, pois diferente das linguagens mais modernas (que contam com diversos recursos para automatizar estes processos), o programador possui toda a liberdade para definir como irá lidar com os aspectos relacionados a alocação de memória. Porém, esta liberdade acaba resultando em códigos mal escritos…
“Common memory safety bugs can lead to dangerous security vulnerabilities such as buffer overflows, uninitialized memory, type confusion, and use-after-free conditions. Attackers can exploit these bugs to compromise entire operating systems, steal users’ data, or run malicious code on the vulnerable systems. Most importantly, these type of bugs are the most prevalent in shipping software today. The issues with memory safety have become a serious concern for the world’s most important intelligence and cyber-security agencies commonly known as the Five Eyes…”
— by TechSpot.
… que por sua vez acabam trazendo uma série de falhas e vulnerabilidades, que comprometem toda a segurança do sistema! E o impacto negativo é tão grande, que as principais agências de inteligência e segurança cibernética do mundo inteiro, passaram a recomendar o uso de outras linguagens de programação mais modernas, ao invés das tradicionais linguagens C/C++! Dentre as agências citadas, estão a CISA, a NSA e o FBI nos Estados Unidos, bem como outras agências de segurança de países como a Austrália, o Canadá, o Reino Unido e a Nova Zelândia.
As agências em questão recomendam a utilização de linguagens como a Rush, a C#, a Go e a Java, bem como outras plataformas de codificação modernas. Estas por sua vez, são linguagens que são “seguras por design” e por isto, são menos suscetíveis a problemas típicos de gestão de memória como o estouro de buffer, a memória não inicializada, a confusão de tipos e limpeza dos registros. Com base nestas falhas, os atacantes podem tirar proveito delas para comprometer os sistemas operacionais, roubar dados dos usuários e executar códigos maliciosos nos sistemas vulneráveis. Será este, o fim da linha para C/C++?
Para se ter uma idéia do impacto “causado” pelo uso das linguagens C/C++, tanto a Microsoft quanto o Google reportaram que os seus sistemas operacionais tiveram respectivamente, 70% e 67% dos registros de falhas e vulnerabilidades na base de dados CVE (Common Vulnerabilities and Exposures). Por isto, o novo documento publicado sob o nome “The Case for Memory Safe Roadmaps” tem como objetivo promover a programação com ênfase na segurança de memória, recomendando para isto a transição para as linguagens de programação modernas já citadas.
Por outro lado, Bjarne Stroustrup (criador de C++) discorda das afirmações relacionadas a insegurança de C/C++, deixando claro que a adoção de práticas de programação adequadas também podem promover a segurança para a gestão de memória. Inclusive, ele também observou que mesmo o código em linguagens mais modernas como o Rust, pode ser escrito de forma insegura. Seja como for, o recado já está dado: ou utilizem linguagens mais modernas ou terá que assumir os riscos ao realizar a gestão da memória com as linguagens clássicas!
Eis, a questão: como a indústria de jogos irá lidar com estas definições? &;-D