Socks 4a
# Socks 4a

Socks 4a è una semplice estensione del protocollo SOCKS 4, che permette ad un client di specificare il nome di dominio dell'host destinatario in caso non riesca a risolverlo.

Il client deve impostare i primi tre byte di DSTIP a NULL e l'ultimo byte ad un valore diverso da zero (che corrisponde all'indirizzo IP 0.0.0.x, dove x è diverso da zero, un indirizzo quindi impossibile che non sarebbe stato specificato se il client fosse riuscito a risolvere il nome dominio). Dopo al byte NULL che termina l'USERID, il client deve inviare il nome dominio e terminarlo con un ulteriore NULL byte. Questo metodo è usato sia per richieste CONNECT che per richieste BIND.

| | VN | CD | DSTPORT | DSTIP 0.0.0.x | USERID | NULL | HOSTNAME | NULL |
| - | - | - | - | - | - | - | - | - |
| # di btye | 1 | 1 | 2 | 4 | variabile | 1 | variabile | 1 |

Un server che fa uso del protocollo 4A deve controllare il DSTIP nel pacchetto di richiesta. Se questo rappresenta l'indirizzo 0.0.0.x (dove x è diverso da zero), il server deve leggere il domain name spedito dal client nel pacchetto. Deve poi risolvere il domain name e stabilire una connessione con l'host se possibile.

Era possibile exploitare server remoti SOCKS4A mandando una richiesta con un hostname troppo lungo. Un cracker potrebbe usufruire di questa vulnerabilità per mandare continuamente in crash il server SOCKS o per eseguire codice arbitrario sul sistema.

