OpenBSD හි W^X ආරක්ෂක යාන්ත්‍රණය ශක්තිමත් කිරීමට සැලසුම් කරයි

තියෝ ඩි රාඩ්ට් බෙදාගෙන ඇත W^X (Write XOR Execute) මතක ආරක්ෂණ යාන්ත්‍රණය ශක්තිමත් කිරීමට සැලසුම් කරයි. යාන්ත්‍රණයේ සාරය නම් ක්‍රියාවලි මතක පිටු ලිවීම සහ ක්‍රියාත්මක කිරීම සඳහා එකවර ප්‍රවේශ විය නොහැකි බවයි. මේ අනුව, කේතය ක්‍රියාත්මක කළ හැක්කේ ලිවීම අක්‍රිය කිරීමෙන් පසුව පමණක් වන අතර මතක පිටුවකට ලිවීම කළ හැක්කේ ක්‍රියාත්මක කිරීම අක්‍රිය කිරීමෙන් පසුව පමණි. W^X යාන්ත්‍රණය අට්ටි පිටාර ගැලීම් ඇතුළුව පොදු බෆර පිටාර ගැලීම් ප්‍රහාර වලින් පරිශීලක-අවකාශ යෙදුම් ආරක්ෂා කිරීමට උපකාරී වන අතර OpenBSD හි ක්‍රියාකාරී වේ. පෙරනිමියෙන්.

W^X හි වැඩ ආරම්භයේ සිටම, JIT භාවිතා කරන යෙදුම් සැලකිය යුතු ප්‍රමාණයක් තිබූ බැවින් මෙය දිගු මාර්ගයක් බව පැහැදිලි විය. JIT ක්‍රියාත්මක කිරීම් කාණ්ඩ තුනකට බෙදිය හැකිය:

  • W සහ X ප්රාන්ත අතර මතකය මාරු කිරීම, පද්ධති ඇමතුමේ "පිරිවැය" පිළිගැනීම ආරක්ෂා කරනවා.
  • එකම මතකයේ W සහ X සිතියම්ගත කිරීම් යුගලයක් අතර අන්වර්ථ නිර්මාණය කිරීම.
  • වඩාත්ම "අපිරිසිදු" විකල්පය සඳහා එකවර පටිගත කිරීම සහ ක්රියාත්මක කිරීම සඳහා ඉඩ ලබා දෙන W|X මතක ආකෘතියක් අවශ්ය වේ.

දැනට, තුන්වන විකල්පය භාවිතා කරන වැඩසටහන් සැලකිය යුතු ලෙස අඩු වන අතර පළමු සහ දෙවන විකල්පය භාවිතා කරයි. කෙසේ වෙතත්, W|X JIT (ප්‍රධාන වශයෙන් Chromium සහ Iridum) සමඟ වැඩසටහන් ක්‍රියාත්මක කිරීමට අවශ්‍ය වූ බැවින්, "wxallowed" ගොනු පද්ධති සවිකිරීමේ විකල්පයක් එක් කරන ලදී, එය ක්‍රියාත්මක කළ හැකි ELF නම්, ලිඛිතව සහ ක්‍රියාත්මක කිරීම යන දෙකටම එකවර මතකය භාවිතා කිරීමට ඉඩ සලසයි. ගොනුව "wxneeded" සලකුණෙන් සලකුණු කර ඇති අතර, යෙදුම් යාන්ත්‍රණ භාවිතයෙන් අතිරේකව ආරක්ෂා කර ඇත. පොරොන්දුවයි и ව්යවස්ථානුකූලව භාවිතා කරන ලද පද්ධති ඇමතුම් ලැයිස්තුව සහ ගොනු පද්ධතියේ කොටස් පිළිවෙලින් යෙදුමට සීමා කිරීමට.

එවැනි යෙදුම්වල දුර්වලතා සූරාකෑම තවදුරටත් සංකීර්ණ කිරීම සඳහා, යාන්ත්‍රණයට එකතු කිරීමක් යෝජනා කෙරේ. MAP_STACK, පද්ධති ඇමතුම ලිවිය හැකි මතක පිටුවකින් ක්‍රියාත්මක වේද යන්න පරීක්ෂා කරයි. පිටුව ලිවිය හැකි නම්, ක්රියාවලිය අවසන් කිරීමට බල කෙරෙයි. මේ ආකාරයෙන්, ප්‍රහාරකයෙකුට පද්ධති ඇමතුම් ගසාකෑමට නොහැකි වන අතර JIT ක්‍රියාත්මක කිරීමේදී අවශ්‍ය උපකරණ සෙවීමට උත්සාහ කිරීමට හෝ පද්ධති ඇමතුම් අංකුර කෙලින්ම ඇතුළත හඳුනා ගැනීමේ වඩාත් දුෂ්කර කාර්යය කිරීමට පවා බල කෙරෙනු ඇත. අහම්බෙන් සම්බන්ධ වූ libc.

ක්‍රෝම්/ඉරිඩියම් ක්‍රියාවලි දැනටමත් ප්‍රතිඥාව සහ එළිදරව් කිරීම භාවිතයෙන් ඉතා විශ්වාසදායක ලෙස ආරක්‍ෂා කර ඇත, නමුත් භාවිතා කිරීමේ හැකියාව ඉවත් කිරීම, උදාහරණයක් ලෙස, ලිවීම(2) පද්ධති ඇමතුමට පැහැදිලිවම යම් වාසියක් ඇත, මන්ද එය ප්‍රහාරකයාට අමතර දුෂ්කරතා ඇති කරයි. කෙසේ වෙතත්, JIT ක්‍රියාත්මක කිරීම W|X මතකයෙන් ස්වදේශීය පද්ධති ඇමතුම් භාවිතා කරන්නේ නම් දුෂ්කරතා ද ඇතිවිය හැක. කෙසේ වෙතත්, ABI කිහිප වතාවක් වෙනස් කර ඇති නමුත්, කිසිවකු ගැටළු වාර්තා කර නොමැති බැවින්, මෙය එසේ නොවනු ඇතැයි බලාපොරොත්තු වීමට හේතුවක් තිබේ.

වෙනස්කම් දැනටමත් OpenBSD-Current ශාඛාවේ සාමාන්‍ය ස්නැප්ෂොට් වල ඇත, උනන්දුවක් දක්වන සැමට පරීක්ෂා කිරීමට ආරාධනා කෙරේ.

Chrome/Iridium හි මාදිලියේ පෙනුම පිළිබඳ අදාළ පුවත් Theo වෙතින් වෙනම අදහස් දැක්වීමක් ලැබිය යුතුය JIT නැති. ඔහුගේ දෘෂ්ටි කෝණයෙන්, මෙය සමහර භාවිත ආකෘති සඳහා පිළිගත හැකි නමුත්, බොහෝ විට සියල්ල සඳහා නොවේ, මෙම මාදිලිය පැහැදිලිවම ප්රොසෙසරයේ බර වැඩි කරනු ඇත. දැනට, ඔබ /usr/local සඳහා "wxallowed" අක්‍රිය කළහොත් Chrome බොහෝ දුරට ක්‍රියා කරයි, නමුත් සමහර දිගු වල ගැටළු තිබිය හැක (ghostery උදාහරණයක් වේ). එක් ආකාරයකින් හෝ වෙනත් ආකාරයකින්, නුදුරු අනාගතයේ දී JITless මාදිලියේ පූර්ණ-පරිපූර්ණ වැඩ සම්පූර්ණයෙන්ම ක්‍රියාත්මක වන තත්වයට ගෙන එනු ඇතැයි තියෝ බලාපොරොත්තු වේ.

මූලාශ්රය: opennet.ru

අදහස් එක් කරන්න