NSA mener du bør droppe C/C++ til fordel for språk som C#, Java, Go og Rust

Sikkerhetstjenesten NSA anbefaler deg å bruke minnesikre språk for å forhindre hacking.

NSA mener du bør droppe C til fordel for språk som Go, Ruby eller Rust. 📸: Carlos Gonzalez
NSA mener du bør droppe C til fordel for språk som Go, Ruby eller Rust. 📸: Carlos Gonzalez Vis mer

Er det noe som kan få det til å gå en kule varmt hos utviklere, er det debatten om hvorfor en bør - eller ikke bør - bruke det og det språket.

Nå tar den amerikanske etterretningstjenesten National Security Agency (NSA), til orde for at utviklere bør droppe C og C++ til fordel for språk som C#, Go, Java, Ruby, Rust og Swift.

Og ja, helt riktig: NSA er den skumle etterretningstjenesten som du kjenner igjen fra Edward Snowden-lekkasjene i 2013.

Kan ende opp med å bli hacka

Hvordan et program administrer minne er kjernen i å forhindre mange sårbarheter og sikre robuste programmer, skriver NSA i et nytt notat.

Ved å utnytte dårlig eller uforsiktig minnehåndtering, kan en hacker utføre ondsinnede handlinger.

Dette kan for eksempel være å krasje programmet eller endre instruksjonene til det hackeren måtte ønske.

Selv ikke-utnyttbare problemer med minnebehandling kan resultere i feil resultater, dårligere ytelse over tid, eller tilfeldige programkrasj, påpeker NSA.

C++ gir frihet, men lav sikkerhet

Ifølge NSA gir språk som C og C++ mye frihet og fleksibilitet i minnehåndtering. Samtidig må du stole på at utvikleren har utført minnereferanser riktig. Og enkle feil kan fort føre til utnyttbare, minnebaserte sårbarheter.

Derimot mener NSA at den iboende beskyttelsen som tilbys av minnesikre språk, kan forhindre eller redusere de fleste problemer med minneadministrasjon. Mantraet fra overvåkningsetaten er derfor: Bruk et minnesikkert språk når det er mulig!

Ifølge "big brother" er minnesikre språk nettopp sikre, ettersom minnet administreres automatisk. Det er ikke nødvendig at utvikleren legger til kode for å implementere minnebeskyttelse.

Velg minnesikre språk

Den automatiske beskyttelsen skjer ved hjelp at en kombinasjon av kompileringstids- og kjøretidskontroller, skriver NSA, i språk som C#, Go, Java, Ruby, Rust og Swift.

Det er disse iboende språkfunksjonene som beskytter utviklere fra å introdusere utilsikta minnehåndteringsfeil.

Samtidig: NSA bemerker at dette ikke gir en absolutt beskyttelse. Men bidrar til å forhindre at utviklere introduserer visse typer minnerelaterte problemer.