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" рдлрд╛рдЗрд▓рд╕рд┐рд╕реНрдЯрдо рдорд╛рдЙрдВрдЯ рдкрд░реНрдпрд╛рдп рдЬреЛрдбрд▓рд╛ рдЧреЗрд▓рд╛, рдЬреНрдпрд╛рдореБрд│реЗ рдореЗрдорд░реА рд▓реЗрдЦрди рдЖрдгрд┐ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдпрд╛ рджреЛрдиреНрд╣реАрд╕рд╛рдареА рдПрдХрд╛рдЪ рд╡реЗрд│реА рд╡рд╛рдкрд░рд▓реА рдЬрд╛рдК рд╢рдХрддреЗ, рдЬрд░ рдПрдХреНрдЭрд┐рдХреНрдпреБрдЯреЗрдмрд▓ рдИ.рдПрд▓.рдПрдл. рдлрд╛рдЗрд▓рд▓рд╛ "wxneeded" рдорд╛рд░реНрдХрд░рдиреЗ рдЪрд┐рдиреНрд╣рд╛рдВрдХрд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗ, рдЖрдгрд┐ рдНрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрд╡рддрдГрдЪ рдпрдВрддреНрд░рдгрд╛ рд╡рд╛рдкрд░реВрди рд╕рдВрд░рдХреНрд╖рд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗрдд. рдкреНрд░рддрд┐рдЬреНрдЮрд╛ ╨╕ рдЕрдирд╛рд╡рд░рдг рд╡рд╛рдкрд░рд▓реЗрд▓реНрдпрд╛ рд╕рд┐рд╕реНрдЯреАрдо рдХреЙрд▓реНрд╕рдЪреА рдпрд╛рджреА рдЖрдгрд┐ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирд╕рд╛рдареА рдЙрдкрд▓рдмреНрдз рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдордЪреЗ рднрд╛рдЧ рдорд░реНрдпрд╛рджрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА.

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

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

OpenBSD-рд╡рд░реНрддрдорд╛рди рд╢рд╛рдЦреЗрдЪреНрдпрд╛ рдирд┐рдпрдорд┐рдд рд╕реНрдиреЕрдкрд╢реЙрдЯреНрд╕рдордзреНрдпреЗ рдмрджрд▓ рдЖрдзреАрдЪ рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗрдд, рд╕реНрд╡рд╛рд░рд╕реНрдп рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХрд╛рд▓рд╛ рдЪрд╛рдЪрдгреАрд╕рд╛рдареА рдЖрдордВрддреНрд░рд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗ.

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

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛