[Info-vax] NSA on programming languages

Arne Vajhøj arne at vajhoej.dk
Fri Nov 11 21:01:54 EST 2022


https://media.defense.gov/2022/Nov/10/2003112742/-1/-1/0/CSI_SOFTWARE_MEMORY_SAFETY.PDF

National Security Agency | Cybersecurity Information Sheet
Software Memory Safety

<quote>
While developers often perform rigorous testing to
prepare the logic in software for surprising conditions, exploitable 
software
vulnerabilities are still frequently based on memory issues. Examples 
include
overflowing a memory buffer and leveraging issues with how software 
allocates and de-
allocates memory. Microsoft revealed at a conference in 2019 that from 
2006 to 2018
70 percent of their vulnerabilities were due to memory safety issues. 
Google also
found a similar percentage of memory safety vulnerabilities over several 
years in
Chrome.
</quote>

<quote>
Commonly used languages, such as C and C++, provide a lot of freedom and 
flexibility
in memory management while relying heavily on the programmer to perform 
the needed
checks on memory references. Simple mistakes can lead to exploitable 
memory-based
vulnerabilities. Software analysis tools can detect many instances of memory
management issues and operating environment options can also provide some
protection, but inherent protections offered by memory safe software 
languages can
prevent or mitigate most memory management issues. NSA recommends using a
memory safe language when possible. While the use of added protections 
to non-
memory safe languages and the use of memory safe languages do not 
provide absolute
protection against exploitable memory issues, they do provide 
considerable protection.
Therefore, the overarching software community across the private sector, 
academia,
and the U.S. Government have begun initiatives to drive the culture of 
software
development towards utilizing memory safe languages.
</quote>

<quote>
Using a memory safe language can help prevent programmers from 
introducing certain
types of memory-related issues. Memory is managed automatically as part 
of the
computer language; it does not rely on the programmer adding code to 
implement
memory protections. The language institutes automatic protections using 
a combination
of compile time and runtime checks. These inherent language features 
protect the
programmer from introducing memory management mistakes unintentionally. 
Examples
of memory safe language include C#, Go, Java, Ruby™, Rust, and Swift.
</quote>

Arne

PS: Only Java and Ruby are currently available on VMS.




More information about the Info-vax mailing list