vak: (Default)
Serge Vakulenko ([personal profile] vak) wrote2024-11-16 06:34 pm

Рекомендации от экспертов по Си и Си++

При компиляции кода C или C++ на таких компиляторах, как GCC и clang, включите эти флаги для обнаружения уязвимостей во время компиляции и включения механизмов защиты во время выполнения:
-O2 -Wall -Wformat -Wformat=2 -Wconversion -Wimplicit-fallthrough \
-Werror=format-security \
-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 \
-D_GLIBCXX_ASSERTIONS \
-fstrict-flex-arrays=3 \
-fstack-clash-protection -fstack-protector-strong \
-Wl,-z,nodlopen -Wl,-z,noexecstack \
-Wl,-z,relro -Wl,-z,now \
-Wl,--as-needed -Wl,--no-copy-dt-needed-entries
Подробности в статье: "Compiler Options Hardening Guide for C and C++" by the Open Source Security Foundation (OpenSSF) Best Practices Working Group, 2024-10-31.
archaicos: Шарж (Default)

[personal profile] archaicos 2024-11-17 04:52 pm (UTC)(link)
Годнота!
henry_flower: A melancholy wolf (Default)

[personal profile] henry_flower 2024-11-17 09:56 pm (UTC)(link)
хотілося би звичайно мати якесь одне -hardening=level замість цього гуляшу, але нам так не буде
spamsink: (Default)

[personal profile] spamsink 2024-11-17 10:02 pm (UTC)(link)
-fhardened GCC 14.0.0 Enable pre-determined set of hardening options in GCC
henry_flower: A melancholy wolf (Default)

[personal profile] henry_flower 2024-11-17 10:41 pm (UTC)(link)
я бачив це на федорі 40; щоб було як у прикладі з посту, все одно вимагає додатковий ковгосп зі флагів і працює лише для лайнаксних цілей. ліпше аніж нічого, звичайно:

$ gcc --help=hardened
The following options are enabled by -fhardened:
  -D_FORTIFY_SOURCE=3 (or =2 for glibc < 2.35)
  -D_GLIBCXX_ASSERTIONS
  -ftrivial-auto-var-init=zero
  -fPIE  -pie
  -Wl,-z,now
  -Wl,-z,relro
  -fstack-protector-strong
  -fstack-clash-protection
  -fcf-protection=full

spamsink: (Default)

[personal profile] spamsink 2024-11-18 12:18 am (UTC)(link)
лайнаксних

Не надо так, линукс хороший.