Kees Cook, Π±ΠΈΠ²Ρ CIO Π½Π° kernel.org ΠΈ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΠΈΡΠ΅Π» Π½Π° Π΅ΠΊΠΈΠΏΠ° ΠΏΠΎ ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ° Π½Π° Ubuntu, ΡΠ΅Π³Π° ΡΠ°Π±ΠΎΡΠΈ Π·Π° Google Π·Π° Π·Π°ΡΠΈΡΠ° Π½Π° Android ΠΈ ChromeOS, ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π΅Π½ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Ρ ΠΏΠ°ΡΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΠ΄ΡΠΎ ββΠ·Π° Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° x86_64 Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ° Clang ΠΈ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° Π·Π°ΡΠΈΡΠ½ΠΈΡ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΡΠΌ CFI (Control Flow Integrity). CFI ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΠΎΡΠΊΡΠΈΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π½ΡΠΊΠΎΠΈ ΡΠΎΡΠΌΠΈ Π½Π° Π½Π΅Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π½Π°ΡΡΡΠ°Π²Π°Π½Π΅ Π½Π° Π½ΠΎΡΠΌΠ°Π»Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Π½ ΠΏΠΎΡΠΎΠΊ (ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Π½ ΠΏΠΎΡΠΎΠΊ) Π² ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π΅ΠΊΡΠΏΠ»ΠΎΠΉΡΠΈ.
ΠΡΠΈΠΏΠΎΠΌΠ½Π΅ΡΠ΅ ΡΠΈ, ΡΠ΅ Π² LLVM 9 ΠΠΊΠ»ΡΡΠ΅Π½ΠΈ ΡΠ° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Clang Π·Π° x86_64 ΡΠΈΡΡΠ΅ΠΌΠΈ. ΠΠ΅ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈ Π·Π° Android ΠΈ ChromeOS ΠΏΡΠΈΠ»Π°Π³Π° Clang Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΠ΄ΡΠΎ, Π° Google ΡΠ΅ΡΡΠ²Π° Clang ΠΊΠ°ΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΠ΄ΡΠ° Π·Π° ΡΠ²ΠΎΠΈΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΈ Linux ΡΠΈΡΡΠ΅ΠΌΠΈ. ΠΠ°ΡΠΈΠ°Π½ΡΠΈΡΠ΅ Π½Π° ΡΠ΄ΡΠΎΡΠΎ, ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½ΠΈ Ρ Clang, ΡΡΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈ ΠΠΈΠ½Π°ΡΠΎ ΠΈ ΠΠ ΠΠ‘.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru