OpenBSD рдХреЛ W^X рд╕реБрд░рдХреНрд╖рд╛ рд╕рдВрдпрдиреНрддреНрд░рд▓рд╛рдИ рд╕реБрджреГрдв рдмрдирд╛рдЙрдиреЗ рдпреЛрдЬрдирд╛рд╣рд░реВ

рдерд┐рдпреЛ рдбреЗ рд░рд╛рдб рд╕рд╛рдЭрд╛ рдЧрд░рд┐рдПрдХреЛ W^X (Write XOR Execute) рдореЗрдореЛрд░реА рд╕реБрд░рдХреНрд╖рд╛ рд╕рдВрдпрдиреНрддреНрд░рд▓рд╛рдИ рдмрд▓рд┐рдпреЛ рдмрдирд╛рдЙрдиреЗ рдпреЛрдЬрдирд╛ рдЫред рд╕рдВрдпрдиреНрддреНрд░рдХреЛ рд╕рд╛рд░ рднрдиреЗрдХреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдореЛрд░реА рдкреГрд╖реНрдард╣рд░реВ рд▓реЗрдЦрди рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рд▓рд╛рдЧрд┐ рдПрдХреИ рд╕рд╛рде рдкрд╣реБрдБрдЪ рдЧрд░реНрди рд╕рдХрд┐рдБрджреИрдиред рдпрд╕рд░реА, рдХреЛрдб рд▓реЗрдЦрди рдЕрд╕рдХреНрд╖рдо рднрдПрдкрдЫрд┐ рдорд╛рддреНрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рд░ рдореЗрдореЛрд░реА рдкреГрд╖реНрдардорд╛ рд▓реЗрдЦреНрдиреЗ рдХрд╛рд░реНрдп рдирд┐рд╖реНрдкрд╛рджрди рдЕрдХреНрд╖рдо рднрдПрдкрдЫрд┐ рдорд╛рддреНрд░ рд╕рдореНрднрд╡ рдЫред W^X рдореЗрдХрд╛рдирд┐рдЬрдорд▓реЗ рд╕реНрдЯреНрдпрд╛рдХ рдУрднрд░рдлреНрд▓реЛ рд▓рдЧрд╛рдпрддрдХрд╛ рд╕рд╛рдорд╛рдиреНрдп рдмрдлрд░ рдУрднрд░рдлреНрд▓реЛ рдЖрдХреНрд░рдордгрд╣рд░реВрдмрд╛рдЯ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛-рд╕реНрдкреЗрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрд▓рд╛рдИ рдЬреЛрдЧрд╛рдЙрди рдорджреНрджрдд рдЧрд░реНрдЫ рд░ OpenBSD рдорд╛ рд╕рдХреНрд░рд┐рдп рдЫред рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рджреНрд╡рд╛рд░рд╛.

W^X рдорд╛ рдХрд╛рдо рд╕реБрд░реБ рднрдПрджреЗрдЦрд┐, рдпреЛ рд╕реНрдкрд╖реНрдЯ рдерд┐рдпреЛ рдХрд┐ рдпреЛ рд▓рд╛рдореЛ рдмрд╛рдЯреЛ рдерд┐рдпреЛ, рдХрд┐рдирдХрд┐ рддреНрдпрд╣рд╛рдБ JIT рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдХреЛ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╕рдВрдЦреНрдпрд╛ рдерд┐рдпреЛред JIT рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирд▓рд╛рдИ рддреАрди рд╡рд░реНрдЧрдорд╛ рд╡рд┐рднрд╛рдЬрди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ:

  • W рд░ X рд░рд╛рдЬреНрдпрд╣рд░реВ рдмреАрдЪ рдореЗрдореЛрд░реА рд╕реНрд╡рд┐рдЪ рдЧрд░реНрджреИ, рдкреНрд░рдгрд╛рд▓реА рдХрд▓рдХреЛ "рд▓рд╛рдЧрдд" рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрджреИ mpprotect.
  • рдПрдЙрдЯреИ рдореЗрдореЛрд░реАрдХреЛ W рд░ X рдореНрдпрд╛рдкрд┐рдЩрд╣рд░реВ рдмреАрдЪ рдЙрдкрдирд╛рдорд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджреИред
  • рд╕рдмреИрднрдиреНрджрд╛ "рдлреЛрд╣реЛрд░" рд╡рд┐рдХрд▓реНрдкрд▓рд╛рдИ W|X рдореЗрдореЛрд░реА рдореЛрдбреЗрд▓ рдЪрд╛рд╣рд┐рдиреНрдЫ рдЬрд╕рд▓реЗ рдПрдХрд╕рд╛рде рд░реЗрдХрд░реНрдбрд┐рдЩ рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред

рд╣рд╛рд▓, рддреЗрд╕реНрд░реЛ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рд░ рдкрд╣рд┐рд▓реЛ рд░ рджреЛрд╕реНрд░реЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдзреЗрд░реИ рдХрдо рдХрд╛рд░реНрдпрдХреНрд░рдорд╣рд░реВ рдЫрдиреНред рдпрджреНрдпрдкрд┐, W|X JIT (рдореБрдЦреНрдп рд░реВрдкрдорд╛ рдХреНрд░реЛрдорд┐рдпрдо рд░ рдЗрд░рд┐рдбрдо) рд╕рдБрдЧ рдкреНрд░реЛрдЧреНрд░рд╛рдорд╣рд░реВ рдЪрд▓рд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рднрдПрдХреЛрд▓реЗ, "wxallowed" рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реА рдорд╛рдЙрдиреНрдЯ рд╡рд┐рдХрд▓реНрдк рдердкрд┐рдпреЛ, рдЬрд╕рд▓реЗ рдореЗрдореЛрд░реАрд▓рд╛рдИ рд▓реЗрдЦрди рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджреБрд╡реИрдХрд╛ рд▓рд╛рдЧрд┐ рдПрдХреИрд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдпреЛ, рдпрджрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдпреЛрдЧреНрдп ELF рдлрд╛рдЗрд▓ "wxneeded" рдорд╛рд░реНрдХрд░рдХреЛ рд╕рд╛рде рдЪрд┐рдиреНрд╣ рд▓рдЧрд╛рдЗрдПрдХреЛ рдЫ, рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдЖрдлреИрдВрд▓рд╛рдИ рдердк рд░реВрдкрдорд╛ рд╕рдВрдпрдиреНрддреНрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред рдкреНрд░рддрд┐рдЬреНрдЮрд╛ ╨╕ рдЕрдирд╛рд╡рд░рдг рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рдкреНрд░рдгрд╛рд▓реА рдХрд▓рд╣рд░реВрдХреЛ рд╕реВрдЪреА рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдорд╛ рдЙрдкрд▓рдмреНрдз рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реАрдХрд╛ рднрд╛рдЧрд╣рд░реВ рдХреНрд░рдорд╢рдГ рд╕реАрдорд┐рдд рдЧрд░реНрдиред

рддреНрдпрд╕реНрддрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдорд╛ рдХрдордЬреЛрд░реАрд╣рд░реВрдХреЛ рд╢реЛрд╖рдгрд▓рд╛рдИ рдердк рдЬрдЯрд┐рд▓ рдмрдирд╛рдЙрди, рд╕рдВрдпрдиреНрддреНрд░рдорд╛ рдердк рдкреНрд░рд╕реНрддрд╛рд╡ рдЧрд░рд┐рдПрдХреЛ рдЫред MAP_STACCK, рдЬрд╕рд▓реЗ рдкреНрд░рдгрд╛рд▓реА рдХрд▓ рд▓реЗрдЦреНрди рдпреЛрдЧреНрдп рдореЗрдореЛрд░реА рдкреГрд╖реНрдардмрд╛рдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рднрдЗрд░рд╣реЗрдХреЛ рдЫ рдХрд┐ рдЫреИрди рднрдиреЗрд░ рдЬрд╛рдБрдЪ рдЧрд░реНрджрдЫред рдпрджрд┐ рдкреГрд╖реНрда рд▓реЗрдЦреНрди рдпреЛрдЧреНрдп рдЫ рднрдиреЗ, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдорд╛рдкреНрдд рдЧрд░реНрди рдмрд╛рдзреНрдп рдЫред рдпрд╕ рддрд░рд┐рдХрд╛рд▓реЗ, рдПрдХ рдЖрдХреНрд░рдордгрдХрд╛рд░реАрд▓реЗ рдкреНрд░рдгрд╛рд▓реА рдХрд▓рд╣рд░реВ рд╢реЛрд╖рдг рдЧрд░реНрди рд╕рдХреНрд╖рдо рд╣реБрдиреЗрдЫреИрди рд░ JIT рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдорд╛ рдЖрд╡рд╢реНрдпрдХ рдЧреНрдпрд╛рдЬреЗрдЯрд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрди рд╡рд╛ рд╕рд┐рдзреИ рднрд┐рддреНрд░ рдкреНрд░рдгрд╛рд▓реА рдХрд▓ рд╕реНрдЯрдмрд╣рд░реВ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рдЕрдЭ рдЧрд╛рд╣реНрд░реЛ рдХрд╛рдо рдЧрд░реНрди рдмрд╛рдзреНрдп рд╣реБрдиреЗрдЫред рд╕рдВрдпреЛрдЧрд╡рд╢ рд▓рд┐рдЩреНрдХ рдЧрд░рд┐рдПрдХреЛ libc.

рдХреНрд░реЛрдо/рдЗрд░рд┐рдбрд┐рдпрдо рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рдкрд╣рд┐рд▓реЗ рдиреИ рдкреНрд░рддрд┐рдЬреНрдЮрд╛ рд░ рдЕрдирд╛рд╡рд░рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдзреЗрд░реИ рднрд░рдкрд░реНрджреЛ рд░реВрдкрдорд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рдЫрдиреН, рддрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ рд╣рдЯрд╛рдЙрдБрджрд╛, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рд▓реЗрдЦрди(реи) рдкреНрд░рдгрд╛рд▓реА рдХрд▓рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рдХреЗрд╣реА рдлрд╛рдЗрджрд╛ рдЫ, рдХрд┐рдирдХрд┐ рдпрд╕рд▓реЗ рдЖрдХреНрд░рдордгрдХрд╛рд░реАрдХрд╛ рд▓рд╛рдЧрд┐ рдердк рдХрдард┐рдирд╛рдЗрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрдЫред рдпрджреНрдпрдкрд┐, JIT рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирд▓реЗ W|X рдореЗрдореЛрд░реАрдмрд╛рдЯ рдиреЗрдЯрд┐рдн рдкреНрд░рдгрд╛рд▓реА рдХрд▓рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрдорд╛ рдкрдирд┐ рдХрдард┐рдирд╛рдЗрд╣рд░реВ рдЙрддреНрдкрдиреНрди рд╣реБрди рд╕рдХреНрдЫрдиреНред рдЬреЗ рд╣реЛрд╕реН, рддреНрдпрд╣рд╛рдБ рдЖрд╢рд╛ рдЧрд░реНрдиреЗ рдХрд╛рд░рдг рдЫ рдХрд┐ рдпреЛ рдХреЗрд╕ рд╣реБрдиреЗрдЫреИрди, рдХрд┐рдирдХрд┐ ABI рдзреЗрд░реИ рдкрдЯрдХ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░рд┐рдПрдХреЛ рдЫ, рддрд░ рдХрд╕реИрд▓реЗ рдкрдирд┐ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рд░рд┐рдкреЛрд░реНрдЯ рдЧрд░реЗрдХреЛ рдЫреИрдиред

рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ OpenBSD-рд╡рд░реНрддрдорд╛рди рд╢рд╛рдЦрд╛рдХреЛ рдирд┐рдпрдорд┐рдд рд╕реНрдиреНрдпрд╛рдкрд╕рдЯрд╣рд░реВрдорд╛ рдкрд╣рд┐рд▓реЗ рдиреИ рдЙрдкрд▓рдмреНрдз рдЫрдиреН, рдЗрдЪреНрдЫреБрдХ рд╕рдмреИрд▓рд╛рдИ рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрди рдЖрдордиреНрддреНрд░рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫред

рдХреНрд░реЛрдо/рдЗрд░рд┐рдбрд┐рдпрдордорд╛ рдореЛрдбрдХреЛ рдЙрдкрд╕реНрдерд┐рддрд┐рдХреЛ рдмрд╛рд░реЗрдорд╛ рд╕рдореНрдмрдиреНрдзрд┐рдд рд╕рдорд╛рдЪрд╛рд░рд╣рд░реВ рдерд┐рдпреЛрдмрд╛рдЯ рдЫреБрдЯреНрдЯреИ рдЯрд┐рдкреНрдкрдгреАрдХреЛ рдпреЛрдЧреНрдп рдЫрдиреН JITlessред рдЙрдирдХреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдгрдмрд╛рдЯ, рдпреЛ рдХреЗрд╣рд┐ рдЙрдкрдпреЛрдЧ рдореЛрдбреЗрд▓рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдЫ, рддрд░ рд╕рдореНрднрд╡рддрдГ рд╕рдмреИрдХреЛ рд▓рд╛рдЧрд┐ рд╣реЛрдЗрди, рдХрд┐рдирдХрд┐ рдпреЛ рдореЛрдбрд▓реЗ рдкреНрд░реЛрд╕реЗрд╕рд░рдорд╛ рднрд╛рд░ рдмрдврд╛рдЙрдиреЗрдЫред рд╣рд╛рд▓, рдХреНрд░реЛрдорд▓реЗ рдкреНрд░рд╛рдп: рдХрд╛рдо рдЧрд░реНрдиреЗрдЫ рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ /usr/local рдХреЛ рд▓рд╛рдЧрд┐ "wxallowed" рдЕрд╕рдХреНрд╖рдо рдЧрд░реНрдиреБрднрдпреЛ рднрдиреЗ, рдпрджреНрдпрдкрд┐ рддреНрдпрд╣рд╛рдБ рдХреЗрд╣реА рд╡рд┐рд╕реНрддрд╛рд░рд╣рд░реВрдорд╛ рд╕рдорд╕реНрдпрд╛ рд╣реБрди рд╕рдХреНрдЫ (ghostery рдПрдЙрдЯрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реЛ)ред рдПрдХ рддрд░рд┐рдХрд╛ рд╡рд╛ рдЕрд░реНрдХреЛ, рдерд┐рдпреЛ рдЖрд╢рд╛ рдЧрд░реНрджрдЫ рдХрд┐ JITless рдореЛрдб рдорд╛ рдкреВрд░реНрдг рдХрд╛рдо рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдорд╛ рдПрдХ рдкреВрд░реНрдг рдкрд░рд┐рдЪрд╛рд▓рди рд░рд╛рдЬреНрдп рдорд╛ рд▓реНрдпрд╛рдЗрдиреЗрдЫред

рд╕реНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди