OpenBSD เชจเซ€ W^X เชธเซเชฐเช•เซเชทเชพ เชฎเชฟเช•เซ‡เชจเชฟเชเชฎเชจเซ‡ เชฎเชœเชฌเซ‚เชค เชฌเชจเชพเชตเชตเชพเชจเซ€ เชฏเซ‹เชœเชจเชพ

เชฅเชฟเชฏเซ‹ เชกเซ€ เชฐเชพเชกเชŸ เชตเชนเซ‡เช‚เชšเชพเชฏเซ‡เชฒเซเช‚ W^X (Write XOR Execute) เชฎเซ‡เชฎเชฐเซ€ เชชเซเชฐเซ‹เชŸเซ‡เช•เซเชถเชจ เชฎเชฟเช•เซ‡เชจเชฟเชเชฎเชจเซ‡ เชฎเชœเชฌเซ‚เชค เช•เชฐเชตเชพเชจเซ€ เชฏเซ‹เชœเชจเชพ เชงเชฐเชพเชตเซ‡ เช›เซ‡. เชฎเชฟเช•เซ‡เชจเชฟเชเชฎเชจเซ‹ เชธเชพเชฐ เช เช›เซ‡ เช•เซ‡ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชฎเซ‡เชฎเชฐเซ€ เชชเซƒเชทเซเช เซ‹ เชเช• เชธเชพเชฅเซ‡ เชฒเซ‡เช–เชจ เช…เชจเซ‡ เช…เชฎเชฒ เชฎเชพเชŸเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเซ€ เชถเช•เชพเชคเชพ เชจเชฅเซ€. เช†เชฎ, เชฒเช–เชพเชฃ เช…เช•เซเชทเชฎ เช•เชฐเซเชฏเชพ เชชเช›เซ€ เชœ เช•เซ‹เชก เชเช•เซเชเชฟเช•เซเชฏเซเชŸ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡, เช…เชจเซ‡ เชเช•เซเชเซ‡เช•เซเชฏเซเชถเชจ เชกเชฟเชธเซ‡เชฌเชฒ เช•เชฐเซเชฏเชพ เชชเช›เซ€ เชœ เชฎเซ‡เชฎเชฐเซ€ เชชเซ‡เชœ เชชเชฐ เชฒเช–เชตเชพเชจเซเช‚ เชถเช•เซเชฏ เช›เซ‡. W^X เชฎเชฟเช•เซ‡เชจเชฟเชเชฎ เชฏเซเชเชฐ-เชธเซเชชเซ‡เชธ เชเชชเซเชฒเซ€เช•เซ‡เชถเชจเชจเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชฌเชซเชฐ เช“เชตเชฐเชซเซเชฒเซ‹ เชนเซเชฎเชฒเชพเช“เชฅเซ€ เชธเซเชฐเช•เซเชทเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เชฎเชฆเชฆ เช•เชฐเซ‡ เช›เซ‡, เชœเซ‡เชฎเชพเช‚ เชธเซเชŸเซ‡เช• เช“เชตเชฐเชซเซเชฒเซ‹เชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡ เช…เชจเซ‡ OpenBSDเชฎเชพเช‚ เชธเช•เซเชฐเชฟเชฏ เช›เซ‡. เชฎเซ‚เชณเชญเซ‚เชค.

W^X เชชเชฐ เช•เชพเชฎเชจเซ€ เชถเชฐเซ‚เช†เชคเชฅเซ€, เชคเซ‡ เชธเซเชชเชทเซเชŸ เชนเชคเซเช‚ เช•เซ‡ เช† เชเช• เชฒเชพเช‚เชฌเซ‹ เชฐเชธเซเชคเซ‹ เชนเชคเซ‹, เช•เชพเชฐเชฃ เช•เซ‡ JIT เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชธเช‚เช–เซเชฏเชพเชฎเชพเช‚ เช…เชฐเชœเซ€เช“ เช†เชตเซ€ เชนเชคเซ€. JIT เช…เชฎเชฒเซ€เช•เชฐเชฃเชจเซ‡ เชคเซเชฐเชฃ เช•เซ‡เชŸเซ‡เช—เชฐเซ€เชฎเชพเช‚ เชตเชฟเชญเชพเชœเชฟเชค เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡:

  • เชธเชฟเชธเซเชŸเชฎ เช•เซ‰เชฒเชจเซ€ "เช–เชฐเซเชš" เชธเซเชตเซ€เช•เชพเชฐเซ€เชจเซ‡, W เช…เชจเซ‡ X เชธเซเชŸเซ‡เชŸเซเชธ เชตเชšเซเชšเซ‡ เชฎเซ‡เชฎเชฐเซ€ เชธเซเชตเชฟเชš เช•เชฐเชตเซ€ mprotect.
  • เชธเชฎเชพเชจ เชฎเซ‡เชฎเชฐเซ€เชจเชพ เชกเชฌเชฒเซเชฏเซ เช…เชจเซ‡ เชเช•เซเชธ เชฎเซ‡เชชเชฟเช‚เช—เชจเซ€ เชœเซ‹เชกเซ€ เชตเชšเซเชšเซ‡ เช‰เชชเชจเชพเชฎเซ‹ เชฌเชจเชพเชตเชตเซเช‚.
  • เชธเซŒเชฅเซ€ เชตเชงเซ "เช—เช‚เชฆเชพ" เชตเชฟเช•เชฒเซเชชเชจเซ‡ W|X เชฎเซ‡เชฎเชฐเซ€ เชฎเซ‹เชกเชฒเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เชœเซ‡ เชเช•เชธเชพเชฅเซ‡ เชฐเซ‡เช•เซ‹เชฐเซเชกเชฟเช‚เช— เช…เชจเซ‡ เชเช•เซเชเซ‡เช•เซเชฏเซเชถเชจเชจเซ‡ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡.

เชนเชพเชฒเชฎเชพเช‚, เชคเซเชฐเซ€เชœเชพ เชตเชฟเช•เชฒเซเชชเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชฐเซ€เชคเซ‡ เช“เช›เชพ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเซเชธ เช›เซ‡ เช…เชจเซ‡ เชชเซเชฐเชฅเชฎ เช…เชจเซ‡ เชฌเซ€เชœเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชตเชงเซ. เชœเซ‹ เช•เซ‡, W|X JIT (เชฎเซเช–เซเชฏเชคเซเชตเซ‡ เช•เซเชฐเซ‹เชฎเชฟเชฏเชฎ เช…เชจเซ‡ เช‡เชฐเชฟเชกเชฎ) เชธเชพเชฅเซ‡ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเซเชธ เชšเชฒเชพเชตเชตเชพ เชœเชฐเซ‚เชฐเซ€ เชนเซ‹เชตเชพเชฅเซ€, "wxallowed" เชซเชพเช‡เชฒเชธเชฟเชธเซเชŸเชฎ เชฎเชพเช‰เชจเซเชŸ เชตเชฟเช•เชฒเซเชช เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹, เชœเซ‡ เชฎเซ‡เชฎเชฐเซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฒเซ‡เช–เชจ เช…เชจเซ‡ เชเช•เซเชเซ‡เช•เซเชฏเซเชถเชจ เชฌเช‚เชจเซ‡ เชฎเชพเชŸเซ‡ เชเช•เชธเชพเชฅเซ‡ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡, เชœเซ‹ เชเช•เซเชเชฟเช•เซเชฏเซเชŸเซ‡เชฌเชฒ ELF. เชซเชพเช‡เชฒเชจเซ‡ "wxneeded" เชฎเชพเชฐเซเช•เชฐ เชธเชพเชฅเซ‡ เชšเชฟเชนเซเชจเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เช…เชจเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซ‹ เชชเซ‹เชคเซ‡ เชœ เชฎเชฟเช•เซ‡เชจเชฟเชเชฎเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชธเซเชฐเช•เซเชทเชฟเชค เชนเชคเซ€. เชชเซเชฐเชคเชฟเชœเซเชžเชพ ะธ เช…เชจเชพเชตเชฐเชฃ เช…เชจเซเช•เซเชฐเชฎเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฎเชพเชŸเซ‡ เช‰เชชเชฒเชฌเซเชง เชธเชฟเชธเซเชŸเชฎ เช•เซ‰เชฒเซเชธเชจเซ€ เชธเซ‚เชšเชฟ เช…เชจเซ‡ เชซเชพเช‡เชฒ เชธเชฟเชธเซเชŸเชฎเชจเชพ เชญเชพเช—เซ‹เชจเซ‡ เชฎเชฐเซเชฏเชพเชฆเชฟเชค เช•เชฐเชตเชพ.

เช†เชตเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธเชฎเชพเช‚ เชจเชฌเชณเชพเชˆเช“เชจเชพ เชถเซ‹เชทเชฃเชจเซ‡ เชตเชงเซ เชœเชŸเชฟเชฒ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡, เชฎเชฟเช•เซ‡เชจเชฟเชเชฎเชฎเชพเช‚ เชตเชงเชพเชฐเชพเชจเซ€ เชฆเชฐเช–เชพเชธเซเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡. MAP_STACK, เชœเซ‡ เชคเชชเชพเชธเซ‡ เช›เซ‡ เช•เซ‡ เชถเซเช‚ เชธเชฟเชธเซเชŸเชฎ เช•เซ‰เชฒ เชฒเช–เซ€ เชถเช•เชพเชฏ เชคเซ‡เชตเชพ เชฎเซ‡เชฎเชฐเซ€ เชชเซ‡เชœ เชชเชฐเชฅเซ€ เชเช•เซเชเชฟเช•เซเชฏเซเชŸ เชฅเชˆ เชฐเชนเซเชฏเซ‹ เช›เซ‡. เชœเซ‹ เชชเซƒเชทเซเช  เชฒเช–เซ€ เชถเช•เชพเชฏ เชคเซ‡เชตเซเช‚ เช›เซ‡, เชคเซ‹ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชธเชฎเชพเชชเซเชค เช•เชฐเชตเชพเชจเซ€ เชซเชฐเชœ เชชเชพเชกเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช† เชฐเซ€เชคเซ‡, เชนเซเชฎเชฒเชพเช–เซ‹เชฐ เชธเชฟเชธเซเชŸเชฎ เช•เซ‰เชฒเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เชถเซ‡ เชจเชนเซ€เช‚ เช…เชจเซ‡ JIT เช…เชฎเชฒเซ€เช•เชฐเชฃเชฎเชพเช‚ เชœเชฐเซ‚เชฐเซ€ เช—เซ‡เชœเซ‡เชŸเซเชธ เชถเซ‹เชงเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเชตเชพ เช…เชฅเชตเชพ เชธเชฟเชธเซเชŸเชฎ เช•เซ‰เชฒ เชธเซเชŸเชฌเซเชธเชจเซ‡ เชธเซ€เชงเซ€ เช…เช‚เชฆเชฐ เชถเซ‹เชงเชตเชพเชจเซเช‚ เชตเชงเซ เชฎเซเชถเซเช•เซ‡เชฒ เช•เชพเชฐเซเชฏ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชซเชฐเชœ เชชเชพเชกเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡. เช†เช•เชธเซเชฎเชฟเช• เชฐเซ€เชคเซ‡ เชฒเชฟเช‚เช• เชฅเชฏเซ‡เชฒ libc.

เช•เซเชฐเซ‹เชฎ/เช‡เชฐเซ€เชกเชฟเชฏเชฎ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชชเซเชฐเชคเชฟเชœเซเชžเชพ เช…เชจเซ‡ เช…เชจเชพเชตเชฐเชฃเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชคเชฆเซเชฆเชจ เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชฐเซ€เชคเซ‡ เชธเซเชฐเช•เซเชทเชฟเชค เช›เซ‡, เชชเชฐเช‚เชคเซ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพเชจเซ‡ เชฆเซ‚เชฐ เช•เชฐเชตเชพเชฅเซ€, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชฒเช–เชตเชพ(2) เชธเชฟเชธเซเชŸเชฎ เช•เซ‰เชฒเชจเซ‹ เชฆเซ‡เช–เซ€เชคเซ€ เชฐเซ€เชคเซ‡ เชฅเซ‹เชกเซ‹ เชซเชพเชฏเชฆเซ‹ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡ เชนเซเชฎเชฒเชพเช–เซ‹เชฐ เชฎเชพเชŸเซ‡ เชตเชงเชพเชฐเชพเชจเซ€ เชฎเซเชถเซเช•เซ‡เชฒเซ€เช“ เชŠเชญเซ€ เช•เชฐเซ‡ เช›เซ‡. เชœเซ‹ เช•เซ‡, เชœเซ‹ JIT เช…เชฎเชฒเซ€เช•เชฐเชฃ W|X เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚เชฅเซ€ เชฎเซ‚เชณ เชธเชฟเชธเซเชŸเชฎ เช•เซ‰เชฒเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เชคเซ‹ เชฎเซเชถเซเช•เซ‡เชฒเซ€เช“ เชชเชฃ เชŠเชญเซ€ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡. เชœเซ‹ เช•เซ‡, เช†เชถเชพ เชฐเชพเช–เชตเชพเชจเซเช‚ เช•เชพเชฐเชฃ เช›เซ‡ เช•เซ‡ เช†เชตเซเช‚ เชฅเชถเซ‡ เชจเชนเซ€เช‚, เช•เชพเชฐเชฃ เช•เซ‡ ABI เช˜เชฃเซ€ เชตเช–เชค เชฌเชฆเชฒเชพเชˆ เช—เชฏเซเช‚ เช›เซ‡, เชชเชฐเช‚เชคเซ เช•เซ‹เชˆเช เช•เซเชฏเชพเชฐเซ‡เชฏ เชธเชฎเชธเซเชฏเชพเชจเซ€ เชœเชพเชฃ เช•เชฐเซ€ เชจเชฅเซ€.

เช“เชชเชจเชฌเซ€เชเชธเชกเซ€-เชตเชฐเซเชคเชฎเชพเชจ เชถเชพเช–เชพเชจเชพ เชจเชฟเชฏเชฎเชฟเชค เชธเซเชจเซ‡เชชเชถเซ‹เชŸเชฎเชพเช‚ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เช‰เชชเชฒเชฌเซเชง เช›เซ‡, เชฐเชธ เชงเชฐเชพเชตเชคเชพ เชฆเชฐเซ‡เช•เชจเซ‡ เชชเชฐเซ€เช•เซเชทเชฃ เชฎเชพเชŸเซ‡ เช†เชฎเช‚เชคเซเชฐเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

Chrome/Iridium เชฎเชพเช‚ เชฎเซ‹เชกเชจเชพ เชฆเซ‡เช–เชพเชต เชตเชฟเชถเซ‡ เชธเช‚เชฌเช‚เชงเชฟเชค เชธเชฎเชพเชšเชพเชฐ เชฅเชฟเชฏเซ‹ เชคเชฐเชซเชฅเซ€ เช…เชฒเช— เชŸเชฟเชชเซเชชเชฃเซ€เชจเซ‡ เชชเชพเชคเซเชฐ เช›เซ‡ JITless. เชคเซ‡เชฎเชจเชพ เชฆเซƒเชทเซเชŸเชฟเช•เซ‹เชฃเชฅเซ€, เช† เช•เซ‡เชŸเชฒเชพเช• เช‰เชชเชฏเซ‹เช— เชฎเซ‹เชกเซ‡เชฒเซ‹ เชฎเชพเชŸเซ‡ เชธเซเชตเซ€เช•เชพเชฐเซเชฏ เช›เซ‡, เชชเชฐเช‚เชคเซ เช•เชฆเชพเชš เชฌเชงเชพ เชฎเชพเชŸเซ‡ เชจเชนเซ€เช‚, เช•เชพเชฐเชฃ เช•เซ‡ เช† เชฎเซ‹เชก เชฆเซ‡เช–เซ€เชคเซ€ เชฐเซ€เชคเซ‡ เชชเซเชฐเซ‹เชธเซ‡เชธเชฐ เชชเชฐเชจเซ‹ เชญเชพเชฐ เชตเชงเชพเชฐเชถเซ‡. เชนเชพเชฒเชฎเชพเช‚, เชœเซ‹ เชคเชฎเซ‡ /usr/local เชฎเชพเชŸเซ‡ "wxallowed" เชจเซ‡ เช…เช•เซเชทเชฎ เช•เชฐเซ‹ เชคเซ‹ เช•เซเชฐเซ‹เชฎ เชฎเซ‹เชŸเซ‡ เชญเชพเช—เซ‡ เช•เชพเชฎ เช•เชฐเชถเซ‡, เชœเซ‹ เช•เซ‡ เช•เซ‡เชŸเชฒเชพเช• เชเช•เซเชธเซเชŸเซ‡เชจเซเชถเชจเซเชธเชฎเชพเช‚ เชธเชฎเชธเซเชฏเชพ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡ (เชญเซ‚เชคเชฟเชฏเชพ เชเช• เช‰เชฆเชพเชนเชฐเชฃ เช›เซ‡). เชเช• เชฐเซ€เชคเซ‡ เช…เชฅเชตเชพ เชฌเซ€เชœเซ€ เชฐเซ€เชคเซ‡, เชฅเชฟเชฏเซ‹เชจเซ‡ เช†เชถเชพ เช›เซ‡ เช•เซ‡ เชจเชœเซ€เช•เชจเชพ เชญเชตเชฟเชทเซเชฏเชฎเชพเช‚ JITless เชฎเซ‹เชกเชฎเชพเช‚ เชชเซ‚เชฐเซเชฃ เช•เชพเชฐเซเชฏ เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เช•เชพเชฐเซเชฏเชฐเชค เชธเซเชฅเชฟเชคเชฟเชฎเชพเช‚ เชฒเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.

เชธเซ‹เชฐเซเชธ: opennet.ru

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹