Aaron Ballman, kryetari i mbështetjes së kompilatorit Clang dhe anëtar i grupeve të zhvillimit të standardeve WG21 (C++) dhe WG14 (C), filloi një diskutim për shtimin e një mode sigurie në kompilatorin Clang. Ky mod do të lejojë aktivizimin e një grupi opsionesh për forcimin e mbrojtjes, në përputhje me flamurin "-fhardened" të shtuar në GCC 14, që aktivizon opsionet "-D_FORTIFY_SOURCE=3 -D_GLIBCXX_ASSERTIONS -ftrivial-auto-var-init=zero -fPIE -pie -Wl,-z,relro,-z,now -fstack-protector-strong -fstack-clash-protection -fcf-protection=full".
Shënohet se aktualisht po punohet për shtimin e mundësive për forcimin e sigurisë në standardet C dhe C++, por ky proces nuk është i shpejtë, duke pasur parasysh se në Clang janë tashmë të disponueshme opsione të veçanta me implementim të mekanizmave të tjerë të mbrojtjes. Metodat e implementuara të mbrojtjes shpesh çojnë në një shkallë të veçantë të papajtueshmërisë me kodin ekzistues ose shkelje të ABI-së, që e bën të pamundur aktivizimin e tyre si parazgjedhje. Për më tepër, opsionet e tilla janë të ndara (flamuj për menaxhimin e kompajtimit, flamuj për gjenerimin e instruksioneve makinerike që lidhen me arkitekturën harduerike, paralajmërime, regjime diagnostikimi, makros), të dokumentuara keq dhe shpesh iu shpëtojnë vëmendjes së shumë zhvilluesve.
NjĂ« konfigurim i vetĂ«m unifikon aktivizimin e opsioneve qĂ« lidhen me sigurinĂ« dhe e lehtĂ«son pĂ«rdorimin e tyre. Po shqyrtohen disa mundĂ«si pĂ«r aktivizimin e modit tĂ« forcimit tĂ« sigurisĂ«, pĂ«r shembull, po diskutohet aktivizimi pĂ«rmes flamurit "-fhardened", njĂ« grup konfigurimesh "âconfig=hardened", njĂ« drejtues i veçantĂ« (clang âdriver-mode) ose opsione tĂ« ndara "-fhardened, -mhardened dhe -Whardened", tĂ« lidhura me kompaktimin, gjenerimin e kodit dhe raportimin e paralajmĂ«rimeve. ReĆŸimi mund tĂ« pĂ«rfshijĂ«:
- Mundësitë e kompilatorit: -ftrivial-auto-var-init, -fPIE, -fcf-protection etj.
- Mundësitë që lidhen me gjenerimin e kodit për platformat target: -mspeculative-load-hardening, -mlvi-hardening etj.
- Paralajmërime: -Wall, -Wextra, -Werror=return-type etj.
- ReĆŸim tĂ« forcimit tĂ« sigurisĂ« nĂ« bibliotekĂ«n standarde tĂ« funksioneve.
- Makros: _FORTIFY_SOURCE, _GLIBCXX_ASSERTIONS etj.
- Kërkesa për zgjedhjen e qartë të standardit të gjuhës së përdorur.
- Refuzimi për të kompajluar kodin që përdor standardet e vjetra C89 dhe C++98.
- Shkëmbimi i flamujve të tjerë për lidhësin, për shembull, për të aktivizuar rastësimin e adresave.
Burimi: opennet.ru
