The US intelligence agency promotes memory-safer programming languages. The NSA highlights Rust, C#, Go, Java, Ruby and Swift, but leaves C and C++ aside.
Although we talk a lot about software supply chain security, the question of choosing a programming language remains more discreet. And yet, this point is important according to NSA that published the recommendations about the safest languages, especially about memory. In short, C and C++ are in the hot seat, and C#, Rust, Go, Java, Ruby or Swift are preferred. “NSA recommends that organizations use memory-safe languages when possible and improve protection with defenses such as compiler options, tools, and operating system configurations,” the intelligence agency emphasizes.
The NSA’s main concern is that hackers could exploit flaws in code that mishandles memory, which happens more often in languages that offer more options and flexibility to the programmer. The agency gives the example of a cybercriminal breaking into a system by overflowing the buffer or exploiting software weaknesses in memory allocation. In the document, the NSA states that hackers “can exploit these vulnerabilities to remotely execute code or achieve other harmful effects, which can often compromise a device and represent the first step in a major network intrusion.”
Higher technical debt and learning curve
Putting C and C++ behind security issues is an increasingly common opinion. So Mark Russinovich, technical director of Microsoft Azure, explained in September that it is time to stop all new projects in these two proven languages. The manager then explained that he was moving towards languages like Rust.
Two pitfalls remain, technical debt management. The amount of code written in C and C++ over the years has been significant. Additionally, moving to languages like Rust and Go requires a steeper learning curve. Two challenges that will take time, but the NSA’s recommendations should accelerate this migration.