Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΊΠΎΡ€Π·ΠΈΠ½ΡƒΠŸΠΎΠ·Π²ΠΎΠ½ΠΈΡ‚ΡŒ
Найти Π² Π”Π·Π΅Π½Π΅

πŸ” Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· компилятор: ΠΊΠ°ΠΊ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ прилоТСния Π½Π° C ΠΈ C++ ΠΎΡ‚ ΠΊΠΈΠ±Π΅Ρ€ΡƒΠ³Ρ€ΠΎΠ·?

Π’ эпоху постоянных ΠΊΠΈΠ±Π΅Ρ€Π°Ρ‚Π°ΠΊ ΠΈ ΡƒΡ‚Π΅Ρ‡Π΅ΠΊ Π΄Π°Π½Π½Ρ‹Ρ… бСзопасная Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΡƒΠΆΠ΅ Π½Π΅ просто рСкомСндация, Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ. ΠžΡΠΎΠ±Π΅Π½Π½ΡƒΡŽ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ это ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Π°Π΅Ρ‚ Π² ΠΌΠΈΡ€Π΅ C ΠΈ C++ β€” языков, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… строится Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ критичСски Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы, Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ устройств ΠΈ встроСнныС систСмы. НСдавний выпуск руководства ΠΏΠΎ настройкам бСзопасности компилятора ΠΎΡ‚ OpenSSF – отличная ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π³Ρ€Π°ΠΌΠΎΡ‚Π½ΠΎ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Π΅ ΠΎΠΏΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΡΠΈΠ»ΠΈΡ‚ΡŒ Π·Π°Ρ‰ΠΈΡ‚Ρƒ вашСго прилоТСния ΠΎΡ‚ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΡƒΠ³Ρ€ΠΎΠ·. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ часто ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π½Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½Π½ΡƒΡŽ самим языком программирования. Однако C ΠΈ C++ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ мноТСство нСбСзопасных дСйствий: ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±ΡƒΡ„Π΅Ρ€Π°, Π²Ρ‹Ρ…ΠΎΠ΄ Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ массива ΠΈΠ»ΠΈ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ памяти β€” всё это ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π΄Π²Π΅Ρ€ΠΈ для Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΡ…. Для Π±ΠΎΡ€ΡŒΠ±Ρ‹ с этими ΡƒΠ³Ρ€ΠΎΠ·Π°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Β«hardeningΒ» β€” процСсс уТСсточСния Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΡƒΡ‚Π΅ΠΌ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΡ†ΠΈΠΉ компилятора. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, GCC ΠΈ Clang) ΠΏ
ОглавлСниС

Π’ эпоху постоянных ΠΊΠΈΠ±Π΅Ρ€Π°Ρ‚Π°ΠΊ ΠΈ ΡƒΡ‚Π΅Ρ‡Π΅ΠΊ Π΄Π°Π½Π½Ρ‹Ρ… бСзопасная Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΡƒΠΆΠ΅ Π½Π΅ просто рСкомСндация, Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ. ΠžΡΠΎΠ±Π΅Π½Π½ΡƒΡŽ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ это ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Π°Π΅Ρ‚ Π² ΠΌΠΈΡ€Π΅ C ΠΈ C++ β€” языков, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… строится Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ критичСски Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы, Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ устройств ΠΈ встроСнныС систСмы. НСдавний выпуск руководства ΠΏΠΎ настройкам бСзопасности компилятора ΠΎΡ‚ OpenSSF – отличная ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π³Ρ€Π°ΠΌΠΎΡ‚Π½ΠΎ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Π΅ ΠΎΠΏΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΡΠΈΠ»ΠΈΡ‚ΡŒ Π·Π°Ρ‰ΠΈΡ‚Ρƒ вашСго прилоТСния ΠΎΡ‚ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΡƒΠ³Ρ€ΠΎΠ·.

πŸ›‘οΈ ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π²Π°ΠΆΠ½ΠΎ ΡƒΠΊΡ€Π΅ΠΏΠ»ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ?

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ часто ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π½Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½Π½ΡƒΡŽ самим языком программирования. Однако C ΠΈ C++ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ мноТСство нСбСзопасных дСйствий: ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±ΡƒΡ„Π΅Ρ€Π°, Π²Ρ‹Ρ…ΠΎΠ΄ Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ массива ΠΈΠ»ΠΈ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ памяти β€” всё это ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π΄Π²Π΅Ρ€ΠΈ для Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΡ…. Для Π±ΠΎΡ€ΡŒΠ±Ρ‹ с этими ΡƒΠ³Ρ€ΠΎΠ·Π°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Β«hardeningΒ» β€” процСсс уТСсточСния Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΡƒΡ‚Π΅ΠΌ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΡ†ΠΈΠΉ компилятора.

🧰 КакиС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ компилятор?

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, GCC ΠΈ Clang) ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ Π½Π°Π±ΠΎΡ€ настроСк для прСдотвращСния распространСнных Π°Ρ‚Π°ΠΊ. Рассмотрим основныС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹, Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ OpenSSF, ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²Π°ΠΆΠ½ΠΎ ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ:

  • πŸ“Œ Рандомизация размСщСния адрСсного пространства (ASLR - Address Space Layout Randomization)
    Π­Ρ‚Π° опция затрудняСт ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ адрСсов памяти для Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠ°, случайным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ пСрСмСщая Π²Π°ΠΆΠ½Ρ‹Π΅ структуры Π΄Π°Π½Π½Ρ‹Ρ… Π² памяти.
  • 🧩 Π—Π°Ρ‰ΠΈΡ‚Π° стСка (Stack Protection)
    ΠžΠΏΡ†ΠΈΠΈ компилятора (-fstack-protector ΠΈΠ»ΠΈ -fstack-protector-strong) Π²ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π·Π°Ρ‰ΠΈΡ‚Π½Ρ‹Π΅ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Ρ‹ Π½Π° стСк. ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π±ΡƒΡ„Π΅Ρ€Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ, Ρ‚Π΅ΠΌ самым прСдотвращая ΡΠΊΡΠΏΠ»ΡƒΠ°Ρ‚Π°Ρ†ΠΈΡŽ уязвимости.
  • πŸ”Ž Π¦Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊΠ° управлСния (Control Flow Integrity - CFI)
    ΠœΠΎΡ‰Π½Π°Ρ опция -fsanitize=cfi ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π°Ρ‚Π°ΠΊΠΈ, связанныС с Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ° исполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Однако Π΅Ρ‘ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΊΠΎΠ΄Π° ΠΈ влияния Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, поэтому Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π΅Ρ‘ Π»ΡƒΡ‡ΡˆΠ΅ осознанно ΠΈ постСпСнно.
  • 🚨 БрСдства выявлСния ошибок (Sanitizers)
    ИспользованиС санитайзСров (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, AddressSanitizer, UndefinedBehaviorSanitizer) Π½Π° этапС тСстирования позволяСт Π½Π°ΠΉΡ‚ΠΈ ΠΈ ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ скрытыС ошибки Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠΏΠ°Π΄Π΅Ρ‚ Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½.
  • πŸ”— FORTIFY_SOURCE
    Π­Ρ‚Π° встроСнная Π² компилятор ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π·Π°Ρ‰ΠΈΡ‰Π°Π΅Ρ‚ ΠΎΡ‚ стандартных ошибок пСрСполнСния Π±ΡƒΡ„Π΅Ρ€Π° Π² часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… функциях (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, memcpy, strcpy).

βš™οΈ ВСхничСскиС Π½ΡŽΠ°Π½ΡΡ‹ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

Π₯отя Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π·Π°Ρ‰ΠΈΡ‚Π½Ρ‹Ρ… ΠΎΠΏΡ†ΠΈΠΉ сущСствСнно ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ, Π²Π°ΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… влияниС Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. НапримСр, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ -fsanitize=address Π½Π° постоянной основС ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎ Π΄Π²ΡƒΡ… Ρ€Π°Π·. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ инструмСнты Π½Π° этапС тСстирования ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, Π° для ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π° Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ Π½Π°Π±ΠΎΡ€ Π·Π°Ρ‰ΠΈΡ‚.

ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ стоит ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ: Π½Π΅ всС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…. НапримСр, ASLR ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ поддСрТиваСтся Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм, Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ Π²Ρ€ΠΎΠ΄Π΅ CFI Π»ΡƒΡ‡ΡˆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° компиляторах сСмСйства Clang ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… инструмСнтов, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ LLVM LTO.

πŸ€” Π›ΠΈΡ‡Π½Ρ‹ΠΉ взгляд: насколько это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ?

На ΠΌΠΎΠΉ взгляд, ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ настройки бСзопасности ΠΏΡ€ΠΈ компиляции C/C++ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ β€” это ΠΏΠΎΠ΄Π²Π΅Ρ€Π³Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π΅ΠΎΠΏΡ€Π°Π²Π΄Π°Π½Π½ΠΎΠΌΡƒ риску. Однако Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ ΡƒΡΠΈΠ»Π΅Π½ΠΈΡŽ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ осознанно:

  • βš–οΈ ΠžΡ†Π΅Π½ΠΈΠ²Π°ΠΉΡ‚Π΅ компромисс ΠΌΠ΅ΠΆΠ΄Ρƒ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ.
  • πŸ”¨ РСгулярно тСстируйтС прилоТСния с Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ санитайзСрами.
  • πŸš€ ΠŸΠΎΡΡ‚Π΅ΠΏΠ΅Π½Π½ΠΎ внСдряйтС Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ рСсурсоСмкиС ΠΎΠΏΡ†ΠΈΠΈ.

Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ β€” Π½Π΅ Сдиничная Π·Π°Π΄Π°Ρ‡Π°, Π° постоянный процСсс, ΠΈ инструмСнты компилятора ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²Π°ΠΆΠ½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ этого процСсса.

πŸ”— Бсылка Π½Π° Π½ΠΎΠ²ΠΎΡΡ‚ΡŒ: Compiler Options Hardening Guide for C and C++ | OpenSSF