рдУрдкрдирдмреАрдПрд╕рдбреА рдХреЗ рдбрдмреНрд▓реНрдпреВ^рдПрдХреНрд╕ рд╕реБрд░рдХреНрд╖рд╛ рддрдВрддреНрд░ рдХреЛ рдордЬрдмреВрдд рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛

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

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

  • рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХреА "рд▓рд╛рдЧрдд" рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реБрдП, W рдФрд░ X рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рдореЗрдореЛрд░реА рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ mрдкреНрд░реЛрдЯреЗрдХреНрдЯ.
  • рдПрдХ рд╣реА рдореЗрдореЛрд░реА рдХреА W рдФрд░ X рдореИрдкрд┐рдВрдЧ рдХреА рдЬреЛрдбрд╝реА рдХреЗ рдмреАрдЪ рдЙрдкрдирд╛рдо рдмрдирд╛рдирд╛ред
  • рд╕рдмрд╕реЗ "рдЧрдВрджрд╛" рд╡рд┐рдХрд▓реНрдк рд╡реЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рд▓рд┐рдП W|X рдореЗрдореЛрд░реА рдореЙрдбрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдПрдХ рд╕рд╛рде рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

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

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

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

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

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

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ