Суштината на проблемот е во тоа што предните делови и заднините често обезбедуваат различни нивоа на поддршка за протоколот HTTP, но во исто време ги инкапсулираат барањата од различни корисници во заеднички канал. За да се поврзат барањата за примање на предниот дел и барањата за обработка на заднината, се воспоставува долготрајна TCP врска, преку која се пренесуваат барањата на корисниците, кои се пренесуваат по синџирот еден по друг, разделени со помош на протоколот HTTP. За да се одделат барањата, насловите „Содржина-должина“ (ја одредува вкупната големина на податоците во барањето) и „
Проблемот се јавува ако предниот дел поддржува само „Content-Length“, но го игнорира „Transfer-Encoding: chunked“ (на пример, Akamai CDN го направи ова) или обратно. Ако Transfer-Encoding: chunked е поддржан на двете страни, карактеристиките за имплементација на HTTP-парсерите за заглавија може да се користат за напад (на пример, кога предниот дел игнорира линии како „Transfer-Encoding: xchunked“, „Transfer-Encoding: chunked ”, „Transfer-Encoding“ :[tab]dunked“, „X: X[\n]Transfer-Encoding: chunked“, „Transfer-Encoding[\n]: фрагментиран“ или „Transfer-Encoding : chunked“ и backend-от успешно ги обработува).
Во овој случај, напаѓачот може да испрати барање што ги содржи и заглавијата „Content-Length“ и „Transfer-Encoding: chunked“, но големината во „Content-Length“ не одговара на големината на отсечениот синџир, кој е помала од вистинската вредност. Ако предниот дел го обработува и го препраќа барањето според „Должина на содржина“ и задниот дел чека блокот да се заврши врз основа на „Пренесување-енкодирање: разделено“, тогаш крајот на податоците засновани на „Пренесување-кодирање: разделено“ ќе да се утврди порано и преостанатата опашка од барањето напаѓачот ќе се појави на почетокот на следното барање, т.е. напаѓачот ќе може да прикачи произволни податоци на почетокот на туѓото барање пренесено следно.
За да го одредите проблемот во користената комбинација преден-заден дел, можете да испратите вакво барање преку предниот дел:
POST /за HTTP/1.1
Домаќин: example.com
Трансфер-енкодирање: распарчено
Должина на содржина: 4
1
Z
Q
Проблемот е присутен ако задниот дел веднаш не го обработи барањето и го чека пристигнувањето на конечниот нулта граничен блок од здробени податоци. За поцелосна проверка
Извршувањето вистински напад зависи од можностите на нападнатата локација, на пример, кога ја напаѓате веб апликацијата Trello, можете да го замените почетокот на барањето (заменете ги податоците како „PUT /1/members/1234... x=x&csrf =1234&username=testzzz&bio=cake“) и испратете порака со оригиналното барање на трет корисник и колачето за автентикација наведено во него. За напад на saas-app.com, се покажа дека е можно да се замени кодот JavaScript во одговорот со замена на еден од параметрите за барање. За нападот на redhat.com, се користеше внатрешен управувач за пренасочување на веб-страницата на напаѓачот (барање од формуларот „POST /search?dest=../assets/idx?redir=//[заштитена по е-пошта]/ HTTP/1.1").
Користењето на методот за мрежи за испорака на содржина овозможи едноставно да се замени бараната локација со замена на заглавието „Домаќин:“. Нападот може да се користи и за труење на содржината на системите за кеширање на содржина и извлекување на кеширани доверливи податоци. Врвот на методот беше организацијата на напад на PayPal, што овозможи да се пресретнат лозинките испратени од корисниците за време на автентикацијата (барањето iframe беше изменето за да се изврши JavaScript во контекст на страницата paypal.com/us/gifts, за која CSP (Политика за безбедност на содржината) не беше применета).
Интересно, во 2005 година имаше
Извор: opennet.ru