В Clang се планира добавяне на режим с повишена сигурност.

Аарон Баллман (Aaron Ballman), главен съпроводител на компилатора Clang и участник в разработката на стандартите WG21 (C++) и WG14 (C), стартира дискусия за добавяне на режим за засилване на сигурността в компилатора Clang. Новият режим ще позволи едновременно активиране на набор от опции, които ще укрепят защитата, подобно на флага «-fhardened», добавен в GCC 14, при който се активират опции «-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».

Отбелязва се, че в момента се работи по добавянето на възможности за засилване на сигурността в стандартите C и C++, но този процес не е бърз, като в Clang вече са налични отделни опции за реализация на допълнителни защити. Реализираните методи за защита често водят до отделни несъвместимости с съществуващия код или нарушаване на ABI, което не позволява те да се активират по подразбиране. Освен това, подобни опции са разпокъсани (флагове за управление на компилаторите, флагове за генериране на машинни инструкции, свързани с хардуерните архитектури, предупреждения, режими на диагностика, макроси), трудно се документират и изпадат от полезрението на много разработчици.

Единна настройка унифицира включването на свързани с безопасността опции и опрощава тяхното приложение. Разглеждат се няколко варианта за активиране на режима за засилена сигурност, например, обсъждат се активирания чрез флаг «-fhardened», набор от настройки «—config=hardened», отделен драйвър (clang —driver-mode) или отделни опции «-fhardened, -mhardened и -Whardened», свързани с компилацията, генерирането на код и изхода на предупреждения. Режимът може да обхваща:

  • Възможности на компилатора: -ftrivial-auto-var-init, -fPIE, -fcf-protection и т.н.
  • Възможности, свързани с генерирането на код за целеви платформи: -mspeculative-load-hardening, -mlvi-hardening и т.н.
  • Предупреждения: -Wall, -Wextra, -Werror=return-type и т.н.
  • Режими за усилване на сигурността в стандартната библиотека с функции.
  • Макроси: _FORTIFY_SOURCE, _GLIBCXX_ASSERTIONS и т.н.
  • Изискване за изрично избиране на използвания стандарт на езика.
  • Отказ за компилиране на код с използване на остарели стандарти C89 и C++98.
  • Предаване на допълнителни флагове на свързвача, например, за включване на адресна рандомизация.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster