Il-proġett LLVM jiżviluppa l-immaniġġjar sikur tal-buffer f'C++

L-iżviluppaturi tal-proġett LLVM ipproponew numru ta 'bidliet immirati biex isaħħu s-sigurtà ta' proġetti C++ kritiċi għall-missjoni u jipprovdu mezz biex jiġu eliminati l-iżbalji ikkawżati minn buffer overruns. Ix-xogħol huwa ffokat fuq żewġ oqsma: li jipprovdi mudell ta 'żvilupp li jippermettilek taħdem b'mod sikur ma' buffers, u taħdem fuq it-twebbis tas-sigurtà tal-librerija standard tal-funzjonijiet libc++.

Il-mudell ta' programmar sikur propost għal C++ huwa li tuża l-klassijiet ipprovduti mil-librerija standard meta taħdem ma 'buffers minflok timmanipula indikaturi vojta. Per eżempju, huwa propost li jintużaw il-klassijiet std::array, std::vector u std::span, li se jiġu miżjuda ma 'kontroll ta' run-time għal memorja allokata barra l-limiti.

Biex jiġu miġġielda prattiki ta' programmazzjoni perikolużi f'clang, huwa propost li jinħarġu twissijiet tal-kompilaturi għall-operazzjonijiet aritmetiċi kollha tal-pointer, simili għat-twissijiet linter ta' clang-tidy meta tuża l-bandiera "cppcoreguidelines-pro-bounds-pointer-arithmetic", li l-appoġġ għaliha se jidher f' ir-rilaxx LLVM 16. Biex tippermetti tali twissijiet, se tiżdied bandiera separata ma' clang, li mhix attiva b'mod awtomatiku.

Huwa ppjanat li timplimenta modalità ta 'protezzjoni mwebbsa fakultattiva f'libc++, li, meta tkun attivata, jaqbad xi sitwazzjonijiet li jwasslu għal imġieba mhux definita fil-ħin tar-run. Pereżempju, fil-klassijiet std::span u std::vector, se jiġi mmonitorjat aċċess barra mill-limiti, f'liema każ il-programm se jikkraxxja. L-iżviluppaturi jemmnu li ż-żieda ta’ bidliet bħal dawn se żżomm libc++ konformi mal-istandards C++, peress li l-għażla ta’ kif jiġu ttrattati każijiet ta’ mġiba mhux definita hija tal-iżviluppaturi tal-librerija, li jistgħu, fost affarijiet oħra, jinterpretaw imġieba mhux definita bħala ħabta li teħtieġ il- programm biex joħroġ.

Il-kontrolli tar-runtime fil-libc++ huma ppjanati li jinqasmu f'kategoriji li jistgħu jiġu inklużi individwalment. Xi wħud mill-kontrolli ssuġġeriti li ma jirriżultawx f'operazzjonijiet aktar kumplessi jew bidliet ABI huma diġà implimentati fil-mod sikur ta' libc++.

Barra minn hekk, huwa ppjanat li tipprepara sett ta' għodod għall-korrezzjoni tal-kodiċi, li jippermettilek tissostitwixxi varjabbli b'indikazzjonijiet vojta fuq il-kontenituri u tapplika handlers alternattivi f'sitwazzjonijiet fejn il-kontenitur ma jistax jissostitwixxi direttament il-pointer (per eżempju, il-"jekk (array_pointer)" kostruzzjoni tista 'tiġi kkonvertita għal "jekk (span.data ()"). Aġġustamenti jistgħu jiġu applikati mhux biss għal varjabbli lokali, iżda wkoll għal parametri tat-tip b'indikazzjonijiet.

Sors: opennet.ru

Żid kumment