C++:n luoja kritisoi turvallisten ohjelmointikielten määräämistä

C++-kielen luoja Bjarne Stroustrup on julkaissut vastalauseita NSA:n raportin päätelmistä, joissa suositeltiin, että organisaatiot siirtyisivät pois ohjelmointikielistä, kuten C ja C++, jotka jättävät muistinhallinnan kehittäjälle, ja suosivat kieliä. kuten C#, Go, Java, Ruby, Rust ja Swift, jotka tarjoavat automaattisen muistinhallinnan tai suorittavat käännösajan muistin turvallisuustarkistuksia.

Stroustrupin mukaan NSA:n raportissa mainitut suojatut kielet eivät itse asiassa ole C++:aa parempia sovelluksissa, jotka ovat hänen kannaltaan tärkeitä. Erityisesti viime vuosina kehitetyt perussuositukset C++:n (C++ Core Guidelines) käyttöön kattavat turvallisia ohjelmointimenetelmiä ja edellyttävät sellaisten työkalujen käyttöä, jotka takaavat turvallisen työskentelyn tyypeillä ja resursseilla. Tämä jättää kehittäjille, jotka eivät vaadi niin tiukkoja turvallisuustakuita, mahdollisuuden jatkaa vanhojen kehitysmenetelmien käyttöä.

Stroustrup uskoo, että hyvä staattinen analysaattori, joka noudattaa C++ Core Guidelines -ohjeita, voi tarjota tarvittavat takeet C++-koodin turvallisuudesta huomattavasti halvemmalla kuin siirtyminen uusiin suojattuihin ohjelmointikieliin. Esimerkiksi suurin osa ydinohjeista on jo toteutettu Microsoft Visual Studion staattisessa analysaattorissa ja muistin turvallisuusprofiilissa. Jotkut suositukset on otettu huomioon myös Clang tidy staattisessa analysaattorissa.

NSA:n raporttia kritisoitiin myös siitä, että se keskittyi vain muistiongelmiin jättäen pois monia muita ohjelmointikieliongelmia, jotka vaikuttavat turvallisuuteen ja luotettavuuteen. Stroustrup näkee turvallisuuden laajempana käsitteenä, jonka eri puolet voidaan saavuttaa yhdistämällä koodaustyyliä, kirjastoja ja staattisia analysaattoreita. Tyyppien ja resurssien kanssa työskentelyn turvallisuuden takaavien sääntöjen sisällyttämisen hallitsemiseksi ehdotetaan, että koodissa ja kääntäjävaihtoehdoissa käytetään huomautuksia.

Sovelluksissa, joissa suorituskyky on tärkeämpää kuin turvallisuus, tämä lähestymistapa mahdollistaa sellaisten ominaisuuksien valikoivan soveltamisen, jotka takaavat turvallisuuden vain siellä, missä sitä tarvitaan. Suojaustyökaluja voidaan soveltaa myös osittaisesti, esimerkiksi aloittamalla alueen tarkistuksella ja alustussäännöillä ja sitten mukauttamalla koodia asteittain tiukempien vaatimusten mukaisiksi.

Lähde: opennet.ru

Lisää kommentti