Bjarne Stroustrup, C++ keele looja, avaldas vastuvÀiteid NSA aruande jÀreldustele, kus soovitati organisatsioonidel loobuda programmeerimiskeeltest nagu C ja C++, mis delegeerivad mÀluhaldust arendaja kanda, eelistades keeli nagu C#, Go, Java, Ruby, Rust ja Swift, mis pakuvad automaatset mÀluhaldust vÔi teevad mÀlutöötluse turvalisuse kontrolli kompileerimise ajal.
Stroustrupi arvates ei ĂŒleta NSA aruandes mainitud turvalised keeled reaalsuses C++-d olulistes rakendustes, mis tema arvates on tĂ€htsad. EelkĂ”ige katab viimasel ajal vĂ€lja töötatud C++ pĂ”hijuhised (C++ Core Guidelines) turvalise programmeerimise meetodid ning ettekirjutused vahendite kasutamiseks, mis tagavad tĂŒĂŒpide ja ressursside turvalise töötlemise. Samas jĂ€etakse arendajatele, kellele sellised ranged turvalisusgarantiid ei ole vajalikud, vĂ”imalus jĂ€tkata vanade arendamismeetodite kasutamist.
Stroustrup usub, et hea staatiline analĂŒsaator, mis vastab C++ pĂ”hijuhiste soovitustele, suudab tagada C++ koodi vajalikud turvalisusgarantiid, nĂ”udes samal ajal mĂ€rgatavalt vĂ€hem kulutusi kui ĂŒleminek uutele turvalistele programmeerimiskeeltele. NĂ€iteks on enamik pĂ”hijuhiste soovitusi juba rakendatud Microsoft Visual Studio staatilises analĂŒĂŒsijates ja mĂ€lutöötluse turvalise töö profiilis. Osa soovitusi on samuti arvesse vĂ”etud Clang tidy staatilises analĂŒsaatoris.
Kriitika objektiks on ka NSA aruande rĂ”huasetus ainult mĂ€lutöötluse probleemidele, jĂ€ttes tĂ€helepanuta paljud muud programmeerimiskeelte probleemid, mis mĂ”jutavad turvalisust ja usaldusvÀÀrsust. Stroustrup kĂ€sitleb turvalisust laiemana mĂ”istena, mille erinevaid aspekte saab saavutada koodistiili, raamatukogude ja staatiliste analĂŒsaatorite kombinatsiooni abil. TĂŒĂŒpide ja ressursside turvalise töötlemise eeskirjade rakendamiseks soovitatakse koodis kasutada annotatsioone ja kompilaatori valikuid.
Rakendustes, kus jÔudlus on olulisem kui turvalisus, annab selline lÀhenemine vÔimaluse rakendada turvameetmeid valikuliselt, tagades selle ainult seal, kus see on vajalik. Turvameetmeid saab samuti osaliselt rakendada, nÀiteks alguses piirduda vahemiku kontrollimise ja initsialiseerimise reeglitega ning seejÀrel jÀrk-jÀrgult kohandada koodi rangemate nÔuete jÀrgi.
Allikas: opennet.ru
