De maker van C++ had kritiek op het opleggen van veilige programmeertalen

Bjarne Stroustrup, de maker van de taal C++, heeft bezwaren gepubliceerd tegen de conclusies van het NSA-rapport, waarin wordt aanbevolen dat organisaties afstappen van programmeertalen als C en C++, die geheugenbeheer aan de ontwikkelaar overlaten, ten gunste van talen ​​zoals C#, Go, Java, Ruby, Rust en Swift, die automatisch geheugenbeheer bieden of geheugenveiligheidscontroles tijdens het compileren uitvoeren.

Volgens Stroustrup zijn de in het NSA-rapport genoemde beveiligde talen namelijk niet superieur aan C++ in de in zijn ogen belangrijke toepassingen. Met name de basisaanbevelingen voor het gebruik van C++ (C++ Core Guidelines), die de afgelopen jaren zijn ontwikkeld, hebben betrekking op veilige programmeermethoden en schrijven het gebruik voor van tools die veilig werken met typen en middelen garanderen. Ontwikkelaars die zulke strenge veiligheidsgaranties niet nodig hebben, hebben echter de mogelijkheid om oude ontwikkelmethoden te blijven gebruiken.

Stroustrup is van mening dat een goede statische analyser die de C++ Core Guidelines volgt, de nodige garanties kan bieden voor de veiligheid van C++-code tegen aanzienlijk lagere kosten dan het migreren naar nieuwe veilige programmeertalen. De meeste kernrichtlijnen zijn bijvoorbeeld al geΓ―mplementeerd in de statische analysator en het geheugenveiligheidsprofiel in Microsoft Visual Studio. Met sommige aanbevelingen wordt ook rekening gehouden in de Clang statische analysator.

Het NSA-rapport kreeg ook kritiek omdat het zich alleen op geheugenproblemen concentreerde, waarbij veel andere programmeertaalproblemen die de veiligheid en betrouwbaarheid aantasten, buiten beschouwing werden gelaten. Stroustrup beschouwt beveiliging als een breder concept, waarvan de verschillende facetten kunnen worden bereikt door een combinatie van codeerstijlen, bibliotheken en statische analysers. Om de opname van regels te controleren die de veiligheid van het werken met typen en bronnen garanderen, wordt voorgesteld om annotaties te gebruiken in de code- en compileropties.

In toepassingen waarbij prestatie belangrijker is dan beveiliging, maakt deze aanpak selectieve toepassing mogelijk van functies die de beveiliging alleen garanderen waar dat nodig is. Beveiligingstools kunnen ook stukje bij beetje worden toegepast, bijvoorbeeld door te beginnen met bereikcontrole en initialisatieregels, en vervolgens de code geleidelijk aan te passen aan strengere eisen.

Bron: opennet.ru

Voeg een reactie