Užbaikite CONNECT antraščių analizę prieš persiųsdami kliento srautą
Tarpinio serverio proxy, persiunčiantis tik po užklausos eilutės, gali nusiųsti savo Host antraštę į paskirties TLS prievadą.
Po CONNECT užklausos eilutės šie baitai vis dar priklauso proxy:
CONNECT service.example:443 HTTP/1.1\r\n
Host: service.example:443\r\n
User-Agent: example-client\r\n
\r\nPersiuntus Host arba User-Agent į 443 prievadą, paskirtis gauna paprasto teksto antraštes ten, kur tikisi TLS. Ši klaida gali įvykti dar prieš tai, kai šifro pasirinkimas tampa svarbus.
- Skaitykite ir analizuokite iki antraščių pabaigos su tuščia eilute, laikydamiesi nustatymo termino ir antraščių dydžio ribos.
- Taikykite proxy autentifikavimą ir paskirties politiką.
- Užmegzkite patvirtintą ryšį su tikslu.
- Nusiųskite sėkmingą CONNECT atsakymą ir pereikite į tunelio režimą.
Išsaugokite buferinius baitus po ribos tinkamai kitai būsenai. Neišmeskite jų ir nelaikykite proxy užklausos antraščių vėlesne svetainės užklausa.
Klientas turi atitinkamą pareigą atsakymo pusėje: baikite skaityti sėkmingą CONNECT atsakymą prieš pradėdami tunelinį protokolą. Abi pusės turi sutarti dėl ribos, kurioje srautas keičia vaidmenį.