Platná adresa proxy neurobí ručne napísanú správu SOCKS platnou. Odoslanie štruktúry C alebo C++ môže odoslať výplň alebo celé čísla v poradí hostiteľa, ktoré protokol nikdy nevyžadoval.

Pre požiadavku SOCKS5 CONNECT s názvom domény serializujte túto postupnosť explicitne po vyjednaní metódy a prípadnej zvolenej autentizácie:

  1. Verzia, príkaz, rezervovaný bajt a typ adresy
  2. Dĺžka domény a bajty domény
  3. Dvojbajtový cieľový port v sieťovom poradí bajtov

Dĺžky adries závisia od verzie SOCKS a typu adresy. Číselné polia pevnej šírky potrebujú svoje určené zobrazenie; reťazce domén majú vlastné kódovanie dĺžky. Ukončovací znak reťazca C nie je všeobecný pokyn pridať k sieťovej správe nulu.

Skratka v implementáciiProblém na overenie
Priradenie 32-bitovej hodnoty cez 8-bitový ukazovateľNevypíše všetky štyri bajty
Pretypovanie buffera na ukazovateľ na väčšie celé čísloZarovnanie a poradie bajtov treba stále riešiť
Predpoklad, že jedno čítanie alebo zápis je jedna správaTCP môže preniesť len časť postupnosti protokolu

Porovnajte každé pole so zamýšľaným cieľom a ošetrite čiastočný I/O. Prijatie dvoch bajtov nedokazuje, že dorazila celá odpoveď. Skúmanie týchto hraníc môže odlíšiť poškodenú požiadavku od servera, ktorý odmieta správne opísané spojenie.

Súvisiace články