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 நினைவகத்திலிருந்து நேட்டிவ் சிஸ்டம் கால்களைப் பயன்படுத்தினால் சிரமங்களும் ஏற்படலாம். எவ்வாறாயினும், ஏபிஐ பல முறை மாற்றப்பட்டிருப்பதால், இது அவ்வாறு இருக்காது என்று நம்புவதற்கு காரணம் உள்ளது, ஆனால் யாரும் சிக்கல்களைப் புகாரளிக்கவில்லை.

OpenBSD-தற்போதைய கிளையின் வழக்கமான ஸ்னாப்ஷாட்களில் ஏற்கனவே மாற்றங்கள் உள்ளன, ஆர்வமுள்ள அனைவரும் சோதனைக்கு அழைக்கப்படுகிறார்கள்.

Chrome/Iridium இல் பயன்முறையின் தோற்றம் பற்றிய தொடர்புடைய செய்திகள் தியோவிடமிருந்து ஒரு தனி கருத்துக்கு தகுதியானவை JITless. அவரது பார்வையில், இது சில பயன்பாட்டு மாதிரிகளுக்கு ஏற்றுக்கொள்ளத்தக்கது, ஆனால் அநேகமாக அனைவருக்கும் இல்லை, ஏனெனில் இந்த பயன்முறை செயலியின் சுமையை வெளிப்படையாக அதிகரிக்கும். தற்போது, ​​நீங்கள் /usr/local க்கான "wxallowed" ஐ முடக்கினால் Chrome பெரும்பாலும் வேலை செய்யும், இருப்பினும் சில நீட்டிப்புகளில் சிக்கல்கள் இருக்கலாம் (கோஸ்டரி ஒரு எடுத்துக்காட்டு). ஒரு வழி அல்லது வேறு, தியோ JITless பயன்முறையில் முழு அளவிலான வேலை எதிர்காலத்தில் முழு செயல்பாட்டு நிலைக்கு கொண்டு வரப்படும் என்று நம்புகிறார்.

ஆதாரம்: opennet.ru

கருத்தைச் சேர்