V Clang se plánuje přidání režimu zvýšené bezpečnosti

Aaron Ballman, hlavní správce kompilátoru Clang a účastník vývojových týmů standardů WG21 (C++) a WG14 (C), zahájil diskusi o přidání režimu zvýšení bezpečnosti do kompilátoru Clang. Nový režim umožní jednorázově aktivovat soubor možností pro zvýšení ochrany podobně jako byla přidána v GCC 14 vlajka „-fhardened“, při které se aktivují možnosti „-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“.

Upozorňuje se, že v současné době probíhá práce na přidání možností pro zvýšení bezpečnosti do standardů C a C++, ale tento proces není rychlý, přičemž v Clang již jsou k dispozici jednotlivé možnosti s realizací dodatečných ochranných mechanismů. Implementované metody ochrany často vedou k různým nekompatibilitám se stávajícím kódem nebo porušování ABI, což neumožňuje jejich aktivaci ve výchozím nastavení. Kromě toho jsou podobné možnosti roztroušené (vlajky pro řízení kompilace, vlajky generování strojových instrukcí vázané na hardwarové architektury, varování, diagnostické režimy, makra), špatně zdokumentované a vypadávají z hledáčku mnoha vývojářů.

Jednotné nastavení zjednoduší aktivaci souvisejících s bezpečností možností a usnadní jejich použití. Zvažuje se několik variant aktivace režimu zvýšené bezpečnosti, například se diskutuje o aktivaci prostřednictvím vlajky „-fhardened“, souboru nastavení „—config=hardened“, samostatného ovladače (clang —driver-mode) nebo jednotlivých možností „-fhardened, -mhardened a -Whardened“, vázaných na kompilaci, generování kódu a výstup varování. Režim může zahrnovat:

  • Možnosti kompilátoru: -ftrivial-auto-var-init, -fPIE, -fcf-protection atd.
  • Možnosti vázané na generování kódu pro cílové platformy: -mspeculative-load-hardening, -mlvi-hardening atd.
  • Varování: -Wall, -Wextra, -Werror=return-type atd.
  • Režimy zvýšení bezpečnosti ve standardní knihovně funkcí.
  • Makra: _FORTIFY_SOURCE, _GLIBCXX_ASSERTIONS atd.
  • Požadavek na explicitní výběr použitého standardu jazyka.
  • Zákaz kompilace kódu s použitím zastaralých standardů C89 a C++98.
  • Předání dalších vlajek linkeru, například pro aktivaci randomizace adres.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster