STACKLEAK рдПрдХ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рд╕реБрд░рдХреНрд╖рд╛ рд╕реБрд╡рд┐рдзрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореВрд▓ рд░реВрдк рд╕реЗ Grsecurity / PaX рдХреЗ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореИрдВрдиреЗ STACKLEAK рдХреЛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдирд┐рд▓рд╛ рдХрд░реНрдиреЗрд▓ (рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдореЗрдирд▓рд╛рдЗрди) рдореЗрдВ рд▓рд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдпрд╣ рд▓реЗрдЦ рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛, рдЗрд╕ рд╕реБрд░рдХреНрд╖рд╛ рд╕рдорд╛рд░реЛрд╣ рдХреЗ рдЧреБрдгреЛрдВ рдФрд░ рдЗрд╕рдХреЗ рдореБрдЦреНрдп рдорд╛рд░реНрдЧ рдореЗрдВ рдмрд╣реБрдд рд▓рдВрдмреЗ рдкрде рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдЧрд╛ред

STACKLEAK рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЗ рдХрдИ рд╡рд░реНрдЧреЛрдВ рд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН:
- рд╣рдорд▓рд╛рд╡рд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдкрд░рдорд╛рдгреБ рд╕реНрдЯреИрдХ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдерд╛рди рдкрд░ рд▓реАрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ;
- рдХрд░реНрдиреЗрд▓ рд╕реНрдЯреИрдХ рдореЗрдВ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдЪрд░ рдкрд░ рдХреБрдЫ рд╣рдорд▓реЛрдВ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ;
- рдбрд╛рдпрдиреЗрдорд┐рдХ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлрд╝реНрд▓реЛ рдбрд┐рдЯреЗрдХреНрд╢рди рдЯреВрд▓ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рд╕реБрд░рдХреНрд╖рд╛ рд╕реБрд╡рд┐рдзрд╛ рдХрд░реНрдиреЗрд▓ рд╕реЗрд▓реНрдл рдкреНрд░реЛрдЯреЗрдХреНрд╢рди рдкреНрд░реЛрдЬреЗрдХреНрдЯ (KSPP) рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдлрд┐рдЯ рдмреИрдарддреА рд╣реИ: рд╕реБрд░рдХреНрд╖рд╛ рдХреЗрд╡рд▓ рдлрд┐рдХреНрд╕рд┐рдВрдЧ рдмрдЧ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХреЛрдб рдореЗрдВ рд╕рднреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдХреЛ рдХрдордЬреЛрд░ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХрд╛ рдлрд╛рдпрджрд╛ рдЙрдард╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред KSPP рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг
рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд┐рдХреА рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред
STACKLEAK рдЧреНрд░рд╛рдорд╕реБрд░рдХреНрд╖рд╛ / PaX рдкреИрдЪ рдореЗрдВ PAX_MEMORY_STACKLEAK рдХреЗ рд░реВрдк рдореЗрдВ рдореМрдЬреВрдж рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдкреНрд░реИрд▓ 2017 рд╕реЗ рдореБрдлреНрдд рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдмрдВрдж рд╣реЛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╡реЗрдирд┐рд▓рд╛ рдХрд░реНрдиреЗрд▓ рдореЗрдВ STACKLEAK рдХрд╛ рджрд┐рдЦрдирд╛ рд▓рд┐рдирдХреНрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдпрд╡рд╛рди рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рд╕реВрдЪрдирд╛ рд╕реБрд░рдХреНрд╖рд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВред
рдХрд╛рд░реНрдп рдХреНрд░рдо:
- рдЧреНрд░реЗрд╕реНрдХреЗрд▓рд┐рдЯреА / PaX рдкреИрдЪ рд╕реЗ STACKLEAK рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ,
- рдХреЛрдб рдХрд╛ рдзреНрдпрд╛рдирдкреВрд░реНрд╡рдХ рдЕрдзреНрдпрдпрди рдХрд░реЗрдВ рдФрд░ рдПрдХ рдкреИрдЪ рдмрдирд╛рдПрдВ,
- рдПрд▓рдХреЗрдПрдордПрд▓ рдХреЛ рднреЗрдЬреЗрдВ, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рд╕реБрдзрд╛рд░ рдХрд░реЗрдВ, рдореЗрдирд▓рд╛рдЗрди рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдлрд┐рд░ рд╕реЗ рджреЛрд╣рд░рд╛рдПрдВред
рд▓реЗрдЦрди рдХреЗ рд╕рдордп (25 рд╕рд┐рддрдВрдмрд░, 2018),
рдкреИрдЪ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг 15 рднреЗрдЬрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдореЗрдВ x86_64 рдФрд░ x86_32 рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд╛рд╕реНрддреБрд╢рд┐рд▓реНрдк рд░реВрдк рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рднрд╛рдЧ рдФрд░ рдХреЛрдб рд╣реИред Red64 рдХреЗ рд▓реМрд░рд╛ рдПрдмреЙрдЯ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд arm64 рдХреЗ рд▓рд┐рдП STACKLEAK рд╕рдорд░реНрдерди, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡реЗрдирд┐рд▓рд╛ рдХрд░реНрдиреЗрд▓ 4.19 рдореЗрдВ рд▓рд╛рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ рд╣реИред
STACKLEAK: рд╕реБрд░рдХреНрд╖рд╛ рд╕реБрд╡рд┐рдзрд╛рдПрдБ
рдХрд░реНрдиреЗрд▓ рд╕реНрдЯреИрдХ рдореЗрдВ рдЕрд╡рд╢рд┐рд╖реНрдЯ рдЬрд╛рдирдХрд╛рд░реА рд╕рдорд╛рд╢реЛрдзрди
рдпрд╣ рдЙрдкрд╛рдп рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдкрд░рдорд╛рдгреБ рд╕реНрдЯреИрдХ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдерд╛рди рддрдХ рдХреБрдЫ рд▓реАрдХ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдХрд░реНрдиреЗрд▓ рд╕реНрдЯреИрдХ рд╕реЗ рд╕реВрдЪрдирд╛ рд░рд┐рд╕рд╛рд╡ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЪрд┐рддреНрд░ 1 рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╕реНрдХреАрдо 1редрд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓реАрдХ рдмреЗрдХрд╛рд░ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдпрджрд┐, рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ, рдХрд░реНрдиреЗрд▓ рд╕реНрдЯреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдореВрд▓реНрдп (рдЪрд┐рддреНрд░рд╛ 2) рд╕реЗ рднрд░рд╛ рд╣реЛрддрд╛ рд╣реИред

рдпреЛрдЬрдирд╛ реиред
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, STACKLEAK рдХрд░реНрдиреЗрд▓ рд╕реНрдЯреИрдХ рдореЗрдВ рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдП рдЧрдП рдЪрд░ рдкрд░ рдХреБрдЫ рд╣рдорд▓реЛрдВ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИред рдРрд╕реА рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг: CVE-2017-17712, CVE-2010-2963ред рд╣рдо Kees рдХреБрдХ рдХреЗ
рдПрдХ рд▓реЗрдЦ рдореЗрдВ CVE-2010-2963 рднреЗрджреНрдпрддрд╛ рдХреЗ рд▓рд┐рдП рд╢реЛрд╖рдг рдкрджреНрдзрддрд┐ рдХрд╛ рд╡рд░реНрдгрди рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдХрд░реНрдиреЗрд▓ рд╕реНрдЯреИрдХ рдореЗрдВ рдПрдХ uninitialized рдЪрд░ рдкрд░ рд╣рдорд▓реЗ рдХрд╛ рд╕рд╛рд░ рдЪрд┐рддреНрд░ 3 рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╕реНрдХреАрдо 3редSTACKLEAK рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣рдорд▓реЛрдВ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ рдкрд░рдорд╛рдгреБ рд╕реНрдЯреИрдХ рдХреЛ рдкреЙрдкреНрдпреБрд▓реЗрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдорд╛рди рд╡рд░реНрдЪреБрдЕрд▓ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ (рдЪрд┐рддреНрд░ 4) рдореЗрдВ рдЕрдкреНрд░рдпреБрдХреНрдд рдХреНрд╖реЗрддреНрд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред
рд╕реНрдХреАрдо 4редрдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕реАрдорд╛ рдпрд╣ рд╣реИ рдХрд┐ STACKLEAK рдПрдХрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдореЗрдВ рдХрд┐рдП рдЧрдП рд╕рдорд╛рди рд╣рдорд▓реЛрдВ рд╕реЗ рд░рдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдЗрди-рдХрд░реНрдиреЗрд▓ рдХреЛрд░ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлрд╝реНрд▓реЛ рдбрд┐рдЯреЗрдХреНрд╢рди
рд╡реЗрдирд┐рд▓рд╛ рдХрд░реНрдиреЗрд▓ (рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдореЗрдирд▓рд╛рдЗрди) рдореЗрдВ STACKLEAK рдХреЗрд╡рд▓ CONFIG_THREAD_INFO_IN_TASK рдФрд░ CONFIG_VMAP_VACK рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░реНрдиреЗрд▓ рд╕реНрдЯреИрдХ рдЧрд╣рд░рд╛рдИ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рдХреЗ рдЦрд┐рд▓рд╛рдл рдкреНрд░рднрд╛рд╡реА рд╣реИред рдпреЗ рджреЛрдиреЛрдВ рдЙрдкрд╛рдп рдПрдВрдбреА рд▓реБрдЯреЛрдорд┐рд░рд╕реНрдХреА рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рд╣реИрдВред
рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рднреЗрджреНрдпрддрд╛ рдХрд╛ рдлрд╛рдпрджрд╛ рдЙрдард╛рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╕рдВрд╕реНрдХрд░рдг рдЪрд┐рддреНрд░ 5 рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╕реНрдХреАрдо 5редрдкрд░рдорд╛рдгреБ рд╕реНрдЯреИрдХ рдХреЗ рддрд▓ рдкрд░ рдереНрд░реЗрдб_рдЗрдирдлреЛ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдХреБрдЫ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬрдм CONFIG_THREAD_INFO_IN_TASK рд╡рд┐рдХрд▓реНрдк рд╕рдХреНрд╖рдо рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдкрд░рдорд╛рдгреБ рд╕реНрдЯреИрдХ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рднреЗрджреНрдпрддрд╛ рдХреЗ рджреЛрд╣рди рдХреА рд╡рд░реНрдгрд┐рдд рд╡рд┐рдзрд┐ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрддрд╛ рд╣реИред
рдЗрд╕ рд╣рдорд▓реЗ рдХрд╛ рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рдЙрдиреНрдирдд рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдЯреИрдХ рдмреЙрд░реНрдбрд░ рд╕реЗ рдмрд╛рд╣рд░ рдЬрд╛рдХрд░ рдкрдбрд╝реЛрд╕реА рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░рдирд╛ рд╣реИред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд░ рдЕрдзрд┐рдХ:
рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣рдорд▓рд╛ рдЪрд┐рддреНрд░ 6 рдореЗрдВ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рд╣реЛрддрд╛ рд╣реИред
рд╕реНрдХреАрдо 6редрдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдВрд░рдХреНрд╖рдг CONFIG_VMAP_STACK рд╣реИред рдЬрдм рдпрд╣ рд╡рд┐рдХрд▓реНрдк рд╕рдХреНрд╖рдо рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдореЗрдореЛрд░реА рдкреЗрдЬ (рдЧрд╛рд░реНрдб рдкреЗрдЬ) рдХреЛ рдкрд░рдорд╛рдгреБ рд╕реНрдЯреИрдХ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдЕрдкрд╡рд╛рдж (рдЪрд┐рддреНрд░рд╛ 7) рд╣реЛрддрд╛ рд╣реИред
рд╕реНрдХреАрдо 7редрдЕрдВрдд рдореЗрдВ, рд╕реНрдЯреИрдХ рдХреЛ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдУрд╡рд░рдлреНрд▓реЛ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рдХрд▓реНрдк рд╕реНрдЯреИрдХ рдХреНрд▓реИрд╢ рдЬреИрд╕рд╛ рд╣рдорд▓рд╛ рд╣реИред рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЛ 2005 рдореЗрдВ рдЧреЗрд▓ рдбреЗрд▓реНрд▓рд╛рдЙ рдиреЗ рд╡рд╛рдкрд╕
рд░рдЦрд╛ ред
2017 рдореЗрдВ, рдХрдВрдкрдиреА рдХреНрд╡рд╛рд▓рд┐рд╕ рдХреЗ рд╢реЛрдзрдХрд░реНрддрд╛рдУрдВ
рдиреЗ рдЗрд╕ рддрдХрдиреАрдХ рдХреЛ рд╕реНрдЯреИрдХ рдХреНрд▓реИрд╢
рдХрд╣рддреЗ рд╣реБрдП рдЗрд╕реЗ рдкреБрдирдГ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЧрд╛рд░реНрдб рдкреГрд╖реНрда рдкрд░ рдХреВрджрдиреЗ рдФрд░ рдкрдбрд╝реЛрд╕реА рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ (рдЪрд┐рддреНрд░рд╛ 8) рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред рдпрд╣ рдПрдХ рдЪрд░ рд▓рдВрдмрд╛рдИ рд╕рд░рдгреА (рд╡реАрдПрд▓рдП) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЖрдХрд╛рд░ рд╣рдорд▓рд╛рд╡рд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕реНрдХреАрдо 8редSTACKLEAK рдФрд░ рд╕реНрдЯреИрдХ рдХреНрд▓реИрд╢ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП,
gsecurity рдмреНрд▓реЙрдЧ рджреЗрдЦреЗрдВ ред
рдкрд░рдорд╛рдгреБ рд╕реНрдЯреИрдХ рдореЗрдВ рд╕реНрдЯреИрдХ рдХреНрд▓реИрд╢ рд╕реЗ рдХреИрд╕реЗ рдмрдЪрд╛ рдЬрд╛рдП? рдПрд▓реЛрдХрд╛ () рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓ рд╕реЗ рдкрд╣рд▓реЗ, рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдХреЗ рд▓рд┐рдП рдЧрд╣рд░рд╛рдИ рд╕реЗ рдПрдХ рдЪреЗрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдкреИрдЪ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг 14 рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреЛрдб рд╣реИ:
void __used stackleak_check_alloca(unsigned long size) { unsigned long sp = (unsigned long)&sp; struct stack_info stack_info = {0}; unsigned long visit_mask = 0; unsigned long stack_left; BUG_ON(get_stack_info(&sp, current, &stack_info, &visit_mask)); stack_left = sp - (unsigned long)stack_info.begin; if (size >= stack_left) { #if !defined(CONFIG_VMAP_STACK) && defined(CONFIG_SCHED_STACK_END_CHECK) panic("alloca() over the kernel stack boundary\n"); #else BUG(); #endif } }
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд╕рдВрд╕реНрдХрд░рдг 15 рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рд╕реБрд░рдХреНрд╖рд╛ рдкреИрдЪ рдореЗрдВ BUG_ON () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ
рдкрд░ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд▓рд┐рдиреБрд╕ рдЯреЛрд░рд╡рд╛рд▓реНрдбреНрд╕ рдХреЗ рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж
рдкреНрд░рддрд┐рдмрдВрдз рдХреЗ рдХрд╛рд░рдг рдпрд╣ рдерд╛ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреИрдЪ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ 9 рд╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдиреЗ рдПрдХ рдЪрд░реНрдЪрд╛ рдХрд╛ рдиреЗрддреГрддреНрд╡ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдореЗрдирд▓рд╛рдЗрди рдХрд░реНрдиреЗрд▓ рд╕реЗ рд╕рднреА рдЪрд░ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ред рд▓рдЧрднрдЧ 15 рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрд╕ рдХрд╛рдо рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдереЗ, рдФрд░ рдпрд╣ рдЬрд▓реНрдж рд╣реА
рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
STACKLEAK рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рднрд╛рд╡
рдореИрдВ x86_64 рдкрд░ рдкреНрд░рджрд░реНрд╢рди рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реВрдВред рдЙрдкрдХрд░рдг: рдЗрдВрдЯреЗрд▓ рдХреЛрд░ i7-4770, 16 рдЬреАрдмреА рд░реИрдоред
рдЯреЗрд╕реНрдЯ # 1, рдЖрдХрд░реНрд╖рдХ: рдПрдХ рд╕рд┐рдВрдЧрд▓ рдХреЛрд░ рдкрд░ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг
рдЯреЗрд╕реНрдЯ рдирдВрдмрд░ 2, рдЕрдирд╛рдХрд░реНрд╖рдХ:
рдЗрд╕рд▓рд┐рдП, рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рджрд░реНрд╢рди рдкрд░ STACKLEAK рдХрд╛ рдкреНрд░рднрд╛рд╡ рд▓реЛрдб рдХреЗ рдкреНрд░рдХрд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╢реЙрд░реНрдЯ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдУрд╡рд░рд╣реЗрдб рдмрдврд╝рд╛рддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЙрддреНрдкрд╛рджрди рд╕реЗ рдкрд╣рд▓реЗ рдирд┐рдпреЛрдЬрд┐рдд рднрд╛рд░ рдХреЗ рд▓рд┐рдП STACKLEAK рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЖрдВрддрд░рд┐рдХ рдЙрдкрдХрд░рдг STACKLEAK
STACKLEAK рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
- рдХреЛрдб рдЬреЛ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ рдХрд░реНрдиреЗрд▓ рд╕реНрдЯреИрдХ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рддрд╛ рд╣реИ (рдореВрд▓ рд░реВрдк рд╕реЗ рдХреЛрдбрд╛рдВрддрд░рдХ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ),
- рдХрд░реНрдиреЗрд▓ рдХреЛрдб рдХреЗ рдЗрдВрд╕реНрдЯреНрд░реБрдореЗрдВрдЯрд▓ рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП рдЬреАрд╕реАрд╕реА рдкреНрд▓рдЧрдЗрдиред
рдХрд░реНрдиреЗрд▓ рд╕реНрдЯреИрдХ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдирд╛ рд╕реНрдЯреИрдХрд▓реЗрдХ_рд░реЗрдЬрд╝ () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХреЗ рдмрд╛рдж рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдерд╛рди рдкрд░ рд▓реМрдЯрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред STACKLEAK_POISON (-0xBEEF) рдереНрд░реЗрдб рд╕реНрдЯреИрдХ рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рднрд╛рдЧ рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдХрдо_рд╕реНрдЯреИрдХ рдЪрд░, рдЬреЛ рд▓рдЧрд╛рддрд╛рд░ рд╕реНрдЯреИрдХрд▓реИрдХ_рдЯреНрд░реИрдХ_рд╕реНрдЯреИрдХ () рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрд▓реАрдирдЕрдк рд╕реНрдЯрд╛рд░реНрдЯ рдкреЙрдЗрдВрдЯ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддрд╛ рд╣реИред
9 рдФрд░ 10 рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╕реНрдЯреИрдХрд▓реИрдХ_рдПрд░реЗрдЬрд╝ () рдХреЗ рдЪрд░рдг рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред
рд╕реНрдХреАрдо 9ред
рд╕реНрдХреАрдо 10редрдЗрд╕ рдкреНрд░рдХрд╛рд░ stackleak_erase () рдкрд░рдорд╛рдгреБ рд╕реНрдЯреИрдХ рдХреЗ рдХреЗрд╡рд▓ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рд╕рд╛рдл рдХрд░рддрд╛ рд╣реИред рдпрд╣реА рд╡рдЬрд╣ рд╣реИ рдХрд┐ STACKLEAK рдЗрддрдирд╛ рддреЗрдЬ рд╣реИред рдФрд░ рдпрджрд┐ рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ x86_64 рдкрд░ рдХрд░реНрдиреЗрд▓ рд╕реНрдЯреИрдХ рдХреЗ рд╕рднреА 16 kB рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣реИрдХрдмреЗрдВрдЪ 40% рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдбреНрд░реЙрдк рджрд┐рдЦрд╛рддрд╛ рд╣реИред
рд╕рдВрдХрд▓рди рдЪрд░рдг рдореЗрдВ рдХрд░реНрдиреЗрд▓ рдХреЛрдб рдХрд╛ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди STACKLEAK GCC рдкреНрд▓рдЧрдЗрди рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
GCC рдкреНрд▓рдЧрдЗрдиреНрд╕ GCC рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдореЙрдбреНрдпреВрд▓ рд╣реИрдВред рд╡реЗ рдЬреАрд╕реАрд╕реА рдкрд╛рд╕ рдкреНрд░рдмрдВрдзрдХ рдХреЗ рд╕рд╛рде рдирдП рдкрд╛рд╕ рдкрдВрдЬреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВ, рдЗрди рдкрд╛рд╕реЛрдВ рдХреЗ рд▓рд┐рдП рдХреЙрд▓рдмреИрдХ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред
рдЗрд╕рд▓рд┐рдП, рдкреВрд░реНрдг STACKLEAK рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП, рд╕реНрдЯреИрдХрд▓рд┐рдВрдХ_рдЯреНрд░реИрдХ_рд╕реНрдЯреИрдХ () рдкрд░ рдХреЙрд▓ рдПрдХ рдмрдбрд╝реЗ рд╕реНрдЯреИрдХ рдлреНрд░реЗрдо рдХреЗ рд╕рд╛рде рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдХреЛрдб рдореЗрдВ рдбрд╛рд▓реА рдЬрд╛рддреА рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рддреНрдпреЗрдХ рдПрд▓рд╛рдХрд╛ () рд╕реЗ рдкрд╣рд▓реЗ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдП рдЧрдП рд╕реНрдЯреИрдХрд▓реИрдХ_рдХреИрдЪ_рд▓реЛрдХрд╛ () рдореЗрдВ рдХреЙрд▓ рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж, рд╕реНрдЯреИрдХрд▓реЗрдХ_рдЯреНрд░реИрдХ_рд╕реНрдЯреИрдХ () рдореЗрдВ рдХреЙрд▓ рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдкреИрдЪ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг 15 рдореЗрдВ, stackleak_check_alloca () рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЛ GCC рдкреНрд▓рдЧрдЗрди рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЧрдпрд╛ рдерд╛ред
рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдореЗрдирд▓рд╛рдЗрди рдореЗрдВ рдкрде
рдореЗрдирд▓рд╛рдЗрди рдореЗрдВ STACKLEAK рдкрде рдмрд╣реБрдд рд▓рдВрдмрд╛ рдФрд░ рдХрдард┐рди рд╣реИ (рдЪрд┐рддреНрд░ 11)ред
рд╕реНрдХреАрдо 11. рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдореЗрдирд▓рд╛рдЗрди рдореЗрдВ STACKLEAK рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдкреНрд░рдЧрддрд┐редрдЕрдкреНрд░реИрд▓ 2017 рдореЗрдВ, рд╡реНрдпрд╛рдХрд░рдг рдХреЗ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рдиреЗ рд╕рдореБрджрд╛рдп рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдкреИрдЪ рдмрдВрдж рдХрд░ рджрд┐рдП, рдЙрдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдЖрдзрд╛рд░ рдкрд░ рд╡рд┐рддрд░рд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред рдордИ 2017 рдореЗрдВ, рдореИрдВрдиреЗ STACKLEAK рдХреЛ рд╡реЗрдирд┐рд▓рд╛ рдХреЛрд░ рдореЗрдВ рдкреЗрд╢ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдПрдХ рд╡рд░реНрд╖ рд╕реЗ рдЕрдзрд┐рдХ рдХреА рдпрд╛рддреНрд░рд╛ рд╢реБрд░реВ рд╣реБрдИред рдХрдВрдкрдиреА рдкреЙрдЬрд┐рдЯрд┐рд╡ рдЯреЗрдХреНрдиреЛрд▓реЙрдЬреАрдЬ, рдЬрд┐рд╕рдореЗрдВ рдореИрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ, рдореБрдЭреЗ рдЕрдкрдиреЗ рдХреБрдЫ рдХрд╛рд░реНрдп рд╕рдордп рдХреЗ рд▓рд┐рдП рдЗрд╕ рдХрд╛рд░реНрдп рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореВрд▓ рд░реВрдк рд╕реЗ, рдореИрдВ рдЗрд╕ рдкрд░ "рдореБрдХреНрдд" рд╕рдордп рдмрд┐рддрд╛рддрд╛ рд╣реВрдВред
рдкрд┐рдЫрд▓реЗ рдордИ рд╕реЗ, рдореЗрд░реА рдкреИрдЪ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдХрдИ рд╕рдореАрдХреНрд╖рд╛рдУрдВ рд╕реЗ рдЧреБрдЬрд░рдирд╛ рдкрдбрд╝рд╛ рд╣реИ, рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрджрд▓рд╛рд╡ рдЖрдП рд╣реИрдВ, рд▓рд┐рдиреБрд╕ рдЯреЛрд░рд╡рд╛рд▓реНрдбреНрд╕ рджреНрд╡рд╛рд░рд╛ рджреЛ рдмрд╛рд░ рдЖрд▓реЛрдЪрдирд╛ рдХреА рдЧрдИ рд╣реИред рдореИрдВ рдЗрд╕ рдкреВрд░реА рдмрд╛рдд рдХреЛ рдХрдИ рдмрд╛рд░ рдЫреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдкрд░ рдЕрдВрдд рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рджреГрдврд╝ рдЗрдЪреНрдЫрд╛ рдереАред рд▓реЗрдЦрди рдХреЗ рд╕рдордп (25 рд╕рд┐рддрдВрдмрд░, 2018), рдкреИрдЪ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ 15 рд╡рд╛рдВ рд╕рдВрд╕реНрдХрд░рдг рд▓рд┐рдирдХреНрд╕-рдЕрдЧрд▓реА рд╢рд╛рдЦрд╛ рдореЗрдВ рд╣реИ, рд▓рд┐рдиреБрд╕ рдХреА рд╕рднреА рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ 4.20 / 5.0 рдХрд░реНрдиреЗрд▓ рдХреЗ рдорд░реНрдЬ-рд╡рд┐рдВрдбреЛ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред
рдПрдХ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рд▓рд┐рдирдХреНрд╕ рд╕рд┐рдХреНрдпреЛрд░рд┐рдЯреА рд╕рдорд┐рдЯ рдкрд░ рдЗрд╕ рдХрд╛рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдереАред рдореИрдВ
рд╕реНрд▓рд╛рдЗрдб рдФрд░
рд╡реАрдбрд┐рдпреЛ рдХреЗ рд▓рд┐рдВрдХ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реВрдВ:
рдирд┐рд╖реНрдХрд░реНрд╖
STACKLEAK рдПрдХ рдмрд╣реБрдд рд╣реА рдЙрдкрдпреЛрдЧреА рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рд╕реБрд░рдХреНрд╖рд╛ рд╕реБрд╡рд┐рдзрд╛ рд╣реИ рдЬреЛ рдПрдХ рд╕рд╛рде рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреА рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЗ рд╢реЛрд╖рдг рдХреЛ рд░реЛрдХрддреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, PaX рдЯреАрдо рдХрд╛ рдореВрд▓ рд▓реЗрдЦрдХ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдореЗрдВ рдЗрд╕реЗ рддреЗрдЬ рдФрд░ рд╕реБрдВрджрд░ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред рдЗрд╕рд▓рд┐рдП, рд╡реЗрдирд┐рд▓рд╛ рдХрд░реНрдиреЗрд▓ рдореЗрдВ STACKLEAK рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд▓рд┐рдирдХреНрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдпрд╡рд╛рди рд╣реЛрдЧреА, рдЬрд┐рд╕рдореЗрдВ рд╕реВрдЪрдирд╛ рд╕реБрд░рдХреНрд╖рд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реЛрдЧреАред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рдХрд╛рдо рд▓рд┐рдирдХреНрд╕ рдбреЗрд╡рд▓рдкрд░ рд╕рдореБрджрд╛рдп рдХрд╛ рдзреНрдпрд╛рди рдХрд░реНрдиреЗрд▓ рд╕реЗрд▓реНрдл-рдбрд┐рдлреЗрдВрд╕ рдЯреВрд▓ рдХреА рдУрд░ рдЦреАрдВрдЪрддрд╛ рд╣реИред
рдкреБрдирд╢реНрдЪ
STACKLEAK рдХреЛ рдЕрдВрддрддрдГ Linux 4.20 рдХрд░реНрдиреЗрд▓ рджреНрд╡рд╛рд░рд╛ рдЕрдкрдирд╛рдпрд╛ рдЧрдпрд╛:
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2d6bb6adb714b133db92ccd4bfc9c20f75f71f3fрд╕рдорд░реНрдерд┐рдд рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ x86_64, x86_32 рдФрд░ arm64 рд╣реИрдВред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдХреЛрдб рд╕реЗ рдЪрд░-рд▓рдВрдмрд╛рдИ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИред Gcc рд╕рдВрдХрд▓рдХ рдЪреЗрддрд╛рд╡рдиреА "-Wvla" рдХрд░реНрдиреЗрд▓ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ 4.20:
lkml.org/lkml/2018/10/28/189