vak: (Default)
[personal profile] vak
При компиляции кода 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.

Date: 2024-11-17 16:52 (UTC)
archaicos: Шарж (Default)
From: [personal profile] archaicos
Годнота!

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

Date: 2024-11-17 22:02 (UTC)
spamsink: (Default)
From: [personal profile] spamsink
-fhardened GCC 14.0.0 Enable pre-determined set of hardening options in GCC

Date: 2024-11-17 22:41 (UTC)
henry_flower: A melancholy wolf (Default)
From: [personal profile] henry_flower
я бачив це на федорі 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

Date: 2024-11-18 00:18 (UTC)
spamsink: (Default)
From: [personal profile] spamsink
лайнаксних

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