Selv om det er 40 år siden C++ ble lansert, er det fortsatt et svært populært programmeringsspråk – spesielt til formål der høy ytelse er viktig. I det siste har imidlertid kritikken mot C++ økt på grunn av risikoen for minnerelaterte sikkerhetshull.
En rekke store selskaper som for eksempel Microsoft har gått ut og anbefalt å heller velge minnesikre språk som for eksempel Rust.
Nå har mannen bak C++, Bjarne Stroustrup, og C++ Direction Group publisert et dokument der de kommer med en rekke anbefalinger for hvordan C++ kan utvikle seg videre, skriver The New Stack.
Sikkerhetsprofiler
C++ Direction Group tar til orde for å ikke bare gjøre språket sikrere ved å ta i bruk debuggingverktøy og annet til å analysere koden for å oppdage sikkerhetsproblemer – men også gjennom endringer i selve språket.
"Vi støtter nå idéen om at endringene for sikkerhet må være ikke bare i "tooling", men også synlige i språket/kompilatoren, og i biblioteket", står det i uttalelsen.
«Endringene for sikkerhet må være ikke bare i "tooling", men også synlige i språket/kompilatoren, og i biblioteket.»
Helt konkret foreslår gruppen å pakke en del funksjonalitet i det de kaller "profiler", der profiler beskrives som en samling med restriksjoner og krav som vil kunne håndheves strengt gjennom for eksempel automatisk analyse av koden.
Denne måten å gjøre det på vil ikke bare gi sikrere kode, men også høy grad av fleksibilitet ved at man kan lage ulike profiler til for eksempel embedded, for applikasjoner med høye ytelseskrav, eller til spesielle bruksområder som helse, spillutvikling, HPC, og så videre.
Stroustrup & co skriver videre at eventuelle nye endringer i sikkerhet bør kunne brukes slik at seksjoner i koden som er sikre skal kunne navngis (muligens ved å bruke profiler), og mikses med "vanlig" kode.
Magnus koder C# og .NET på AWS hos Easee: - Det er mulig!
NSA-kritikk
Før jul gikk amerikanske NSA ut og oppfordret alle virksomheter til å bytte fra C/C++ til minnesikre språk, og nevnte C#, Go, Java, Ruby og Swift som eksempler.
Det fikk skaperen av C++, Bjarne Stroustrup til å se rødt, og han svarte at han ikke så på disse språkene som bedre enn C++ "til de formålene han bryr seg om".
Ifølge NSA, som siterer estimater fra Microsoft og Google, har rundt 70 prosent av sårbarheter med minnesikkerhet å gjøre. Men selv om analyseverktøy kan oppdage mange problemer med feil minnehåndtering, anbefaler NSA heller å bruke et språk som er bygget minnesikkert i utgangspunktet.
Med minnesikkert mener NSA et språk som ikke baserer seg på at programmereren selv må legge til noe for å oppnå minnesikkerhet, men der dette håndteres automatisk som en del av språket gjennom sjekker både ved kompilering og under kjøring.
Norsk utvikler er ikke imponert
Stroustrup har imidlertid uttalt at det i den virkelige verden ikke er slik at alle prioriterer sikkerhet "over alt annet", og at verktøy for å analysere koden kan brukes for å forhindre sårbarhetene.
Den norske C++-utvikleren Patricia Aas virker imidlerid ikke spesielt imponert over denne tilnærmingen til å gjøre C++ sikrere:
The fact that Bjarne & co seem to think that you can fix “safety” in C++ with static analysis shows how completely out of touch they are with security research. https://t.co/HI3k6hxfun
— Patricia Aas 🐢🏳️🌈 (@pati_gallardo) January 22, 2023
C++ Direction Group skriver nå i sitt nye svar at de vil fortsette å foretrekke å gjøre mer av det å legge sikkerheten i "toolingen", men at de nå helt klart støtter sikkerhetsfunksjoner i selve språket og biblioketet, men gjennom å pakke funksjonalitet for dette inn i profiler.
Bakoverkompatibilitet vil imidlertid være viktig hvis denne typen endringer skal gjøres, mener Stroustrup & co.