[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