உலாவியில் ஜாவாஸ்கிரிப்ட் செயல்படுத்துவதன் மூலம் ஸ்பெக்டர் பாதிப்புகளை சுரண்டுவதை கூகிள் நிரூபித்தது

முன்னர் சேர்க்கப்பட்ட பாதுகாப்பு முறைகளைத் தவிர்த்து, உலாவியில் ஜாவாஸ்கிரிப்ட் குறியீட்டை இயக்கும் போது, ​​ஸ்பெக்டர் கிளாஸ் பாதிப்புகளைப் பயன்படுத்துவதற்கான சாத்தியக்கூறுகளைக் காட்டும் பல சுரண்டல் முன்மாதிரிகளை Google வெளியிட்டுள்ளது. தற்போதைய தாவலில் உள்ள செயலாக்க வலை உள்ளடக்கத்தின் நினைவகத்திற்கான அணுகலைப் பெற சுரண்டல்கள் பயன்படுத்தப்படலாம். சுரண்டலின் செயல்பாட்டைச் சோதிக்க, leaky.page என்ற இணையதளம் தொடங்கப்பட்டது, மேலும் வேலையின் தர்க்கத்தை விவரிக்கும் குறியீடு GitHub இல் வெளியிடப்பட்டது.

முன்மொழியப்பட்ட முன்மாதிரியானது லினக்ஸ் மற்றும் குரோம் 7 உள்ள சூழலில் Intel Core i6500-88U செயலிகளைக் கொண்ட அமைப்புகளைத் தாக்கும் வகையில் வடிவமைக்கப்பட்டுள்ளது. மற்ற சூழல்களுக்குச் சுரண்டலைப் பயன்படுத்த, மாற்றங்கள் தேவை. சுரண்டல் முறையானது Intel செயலிகளுக்குக் குறிப்பிட்டதல்ல - பொருத்தமான தழுவலுக்குப் பிறகு, ARM கட்டமைப்பின் அடிப்படையில் Apple M1 உட்பட பிற உற்பத்தியாளர்களிடமிருந்து CPUகள் கொண்ட கணினிகளில் சுரண்டல் வேலை உறுதி செய்யப்பட்டது. சிறிய மாற்றங்களுக்குப் பிறகு, பிற இயக்க முறைமைகளிலும் Chromium இன்ஜின் அடிப்படையிலான பிற உலாவிகளிலும் சுரண்டல் செயல்படக்கூடியது.

நிலையான குரோம் 88 மற்றும் இன்டெல் ஸ்கைலேக் செயலிகளை அடிப்படையாகக் கொண்ட சூழலில், தற்போதைய குரோம் டேப்பில் (ரெண்டரர் செயல்முறை) வினாடிக்கு 1 கிலோபைட் வேகத்தில் வலை உள்ளடக்கத்தைச் செயலாக்குவதற்குப் பொறுப்பான செயல்முறையிலிருந்து தரவை கசியவிட முடியும். கூடுதலாக, மாற்று முன்மாதிரிகள் உருவாக்கப்பட்டுள்ளன, எடுத்துக்காட்டாக, 8 மைக்ரோ விநாடிகள் (5 மில்லி விநாடிகள்) துல்லியத்துடன் செயல்திறன்.now() டைமரைப் பயன்படுத்தும் போது, ​​கசிவு விகிதத்தை 0.005kB/s ஆக அதிகரிக்க, நிலைத்தன்மையைக் குறைக்கும் செலவில் அனுமதிக்கும் ஒரு சுரண்டல். ) ஒரு மில்லி விநாடியின் டைமர் துல்லியத்துடன் வேலை செய்யும் ஒரு பதிப்பும் தயாரிக்கப்பட்டது, இது ஒரு வினாடிக்கு சுமார் 60 பைட்டுகள் வேகத்தில் மற்றொரு செயல்முறையின் நினைவகத்திற்கான அணுகலை ஒழுங்கமைக்கப் பயன்படும்.

வெளியிடப்பட்ட டெமோ குறியீடு மூன்று பகுதிகளைக் கொண்டுள்ளது. முதல் பகுதியானது, CPU அறிவுறுத்தல்களின் ஊக செயல்பாட்டின் விளைவாக, செயலி தற்காலிக சேமிப்பில் எஞ்சியிருக்கும் தரவை மீட்டெடுக்க தேவையான செயல்பாடுகளின் செயலாக்க நேரத்தை மதிப்பிடுவதற்கு டைமரை அளவீடு செய்கிறது. ஜாவாஸ்கிரிப்ட் வரிசையை ஒதுக்கும்போது பயன்படுத்தப்படும் நினைவக அமைப்பை இரண்டாம் பகுதி தீர்மானிக்கிறது.

மூன்றாம் பகுதியானது, சில செயல்பாடுகளின் ஊகச் செயல்பாட்டிற்கான நிலைமைகளை உருவாக்குவதன் விளைவாக, தற்போதைய செயல்பாட்டின் நினைவக உள்ளடக்கங்களைத் தீர்மானிக்க ஸ்பெக்டர் பாதிப்பை நேரடியாகப் பயன்படுத்துகிறது, இதன் விளைவாக தோல்வியுற்ற கணிப்பைத் தீர்மானித்த பிறகு செயலி நிராகரிக்கப்படுகிறது, ஆனால் தடயங்கள் செயல்படுத்தல் பொது தற்காலிக சேமிப்பில் டெபாசிட் செய்யப்படுகிறது மற்றும் தற்காலிக சேமிப்பின் உள்ளடக்கங்களை தீர்மானிப்பதற்கான முறைகளைப் பயன்படுத்தி மூன்றாம் தரப்பு சேனல்கள் மூலம் மீட்டமைக்க முடியும், அவை தற்காலிக சேமிப்பு மற்றும் சேமிக்கப்படாத தரவுக்கான அணுகல் நேரத்தில் மாற்றங்களை பகுப்பாய்வு செய்கின்றன.

முன்மொழியப்பட்ட சுரண்டல் நுட்பமானது, செயல்திறன்.now() API மூலம் கிடைக்கக்கூடிய உயர்-துல்லியமான டைமர்கள் இல்லாமலும், பகிரப்பட்ட நினைவகத்தில் அணிவரிசைகளை உருவாக்க அனுமதிக்கும் SharedArrayBuffer வகைக்கான ஆதரவின்றியும் செய்வதை சாத்தியமாக்குகிறது. சுரண்டலில் ஸ்பெக்டர் கேஜெட் அடங்கும், இது குறியீட்டின் கட்டுப்படுத்தப்பட்ட ஊக செயலாக்கத்தை ஏற்படுத்துகிறது மற்றும் ஒரு பக்க-சேனல் கசிவு பகுப்பாய்வி, இது ஊக செயல்பாட்டின் போது பெறப்பட்ட தற்காலிக சேமிப்பு தரவைக் கண்டறியும்.

கேஜெட் ஜாவாஸ்கிரிப்ட் வரிசையைப் பயன்படுத்தி செயல்படுத்தப்படுகிறது, இதில் இடையக எல்லைகளுக்கு வெளியே ஒரு பகுதியை அணுக முயற்சி செய்யப்படுகிறது, இது கம்பைலரால் சேர்க்கப்பட்ட இடையக அளவு சரிபார்ப்பு இருப்பதால் கிளை முன்கணிப்பு தொகுதியின் நிலையை பாதிக்கிறது (செயலி ஊகப்படி செய்கிறது அணுகல், முன்னோக்கிப் பார்க்கிறது, ஆனால் சரிபார்த்த பிறகு மாநிலத்தைத் திரும்பப் பெறுகிறது). போதுமான டைமர் துல்லியம் இல்லாத சூழ்நிலையில் தற்காலிக சேமிப்பின் உள்ளடக்கங்களை பகுப்பாய்வு செய்ய, செயலிகளில் பயன்படுத்தப்படும் Tree-PLRU கேச் வெளியேற்ற உத்தியை ஏமாற்றும் ஒரு முறை முன்மொழியப்பட்டது மற்றும் சுழற்சிகளின் எண்ணிக்கையை அதிகரிப்பதன் மூலம், திரும்பும் போது நேர வித்தியாசத்தை கணிசமாக அதிகரிக்க அனுமதிக்கிறது. தற்காலிக சேமிப்பிலிருந்து ஒரு மதிப்பு மற்றும் தற்காலிக சேமிப்பில் மதிப்பு இல்லாத போது.

ஸ்பெக்டர் கிளாஸ் பாதிப்புகளைப் பயன்படுத்தி தாக்குதல்களின் சாத்தியக்கூறுகளைக் காண்பிப்பதற்காகவும், அத்தகைய தாக்குதல்களின் அபாயங்களைக் குறைக்கும் நுட்பங்களைப் பயன்படுத்த வலை உருவாக்குநர்களை ஊக்குவிப்பதற்காகவும் கூகுள் சுரண்டலின் முன்மாதிரியை வெளியிட்டது குறிப்பிடத்தக்கது. அதே நேரத்தில், முன்மொழியப்பட்ட முன்மாதிரியின் குறிப்பிடத்தக்க மறுவேலை இல்லாமல், உலகளாவிய சுரண்டல்களை உருவாக்குவது சாத்தியமில்லை என்று கூகிள் நம்புகிறது, அவை ஆர்ப்பாட்டத்திற்கு மட்டுமல்ல, பரவலான பயன்பாட்டிற்கும் தயாராக உள்ளன.

ஆபத்தைக் குறைக்க, தள உரிமையாளர்கள் சமீபத்தில் செயல்படுத்தப்பட்ட கிராஸ்-ஆரிஜின் ஓப்பனர் பாலிசி (COOP), கிராஸ்-ஆரிஜின் எம்பெடர் பாலிசி (COEP), கிராஸ்-ஆரிஜின் ரிசோர்ஸ் பாலிசி (COP), மெட்டாடேட்டா கோரிக்கையைப் பெறுதல், எக்ஸ்-ஃபிரேம்- ஆகிய தலைப்புகளைப் பயன்படுத்த ஊக்குவிக்கப்படுகிறார்கள். விருப்பங்கள், X -உள்ளடக்கம்-வகை-விருப்பங்கள் மற்றும் SameSite குக்கீ. இந்த வழிமுறைகள் தாக்குதல்களுக்கு எதிராக நேரடியாகப் பாதுகாப்பதில்லை, ஆனால் அவை தளத் தரவை கசிவிலிருந்து தனிமைப்படுத்த உங்களை அனுமதிக்கின்றன, அதில் தாக்குபவரின் ஜாவாஸ்கிரிப்ட் குறியீடு செயல்படுத்தப்படும் (தற்போதைய செயல்முறையின் நினைவகத்திலிருந்து கசிவு ஏற்படுகிறது, இது தாக்குபவரின் குறியீட்டைத் தவிர. , அதே தாவலில் திறக்கப்பட்ட மற்றொரு தளத்திலிருந்து தரவையும் செயலாக்க முடியும்). நம்பத்தகாத மூலங்களிலிருந்து பெறப்பட்ட மூன்றாம் தரப்புக் குறியீட்டிலிருந்து வெவ்வேறு செயல்முறைகளில் தளக் குறியீட்டை செயல்படுத்துவதைப் பிரிப்பதே முக்கிய யோசனை, எடுத்துக்காட்டாக, ஒரு iframe மூலம் சேர்க்கப்பட்டுள்ளது.



ஆதாரம்: opennet.ru

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