Commit d770435
committed
Security: enforce SOCKS5 auth, validate proxyList.txt entries
Two issues surfaced in security review:
1. SOCKS5 auth downgrade (SocksPeerConnector.h): when credentials were
configured, the client advertised both NO AUTH and USER/PASS methods
in the greeting and also accepted a server choice of NO AUTH after
the fact. A rogue SOCKS5 peer could therefore accept traffic without
ever verifying the credentials the operator required. The greeting
now advertises only USER/PASS when credentials are present, and the
no-auth branch additionally refuses to proceed if hasAuth is true.
2. squid.conf injection from proxyList.txt (generate.php): socks-user
and socks-pass values were written verbatim with no escaping. A
tainted proxy list (e.g. one fetched from a remote URL via
public_proxy_cron.sh) could inject arbitrary squid.conf directives
via whitespace/newlines/quotes in credentials, or a hostile host/
port field. Each line is now validated: host must be hostname or
IP-literal charset, port must be 1-65535, credentials must not
contain whitespace/control chars/quotes/backslash/#, and credential
length is capped at 255 bytes per RFC 1929.1 parent 02e7f47 commit d770435
2 files changed
Lines changed: 48 additions & 15 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
22 | 28 | | |
23 | 29 | | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
24 | 33 | | |
25 | 34 | | |
26 | 35 | | |
27 | 36 | | |
28 | 37 | | |
29 | 38 | | |
30 | 39 | | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
31 | 65 | | |
32 | 66 | | |
33 | 67 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
127 | 127 | | |
128 | 128 | | |
129 | 129 | | |
130 | | - | |
131 | | - | |
132 | | - | |
133 | | - | |
134 | | - | |
135 | | - | |
136 | | - | |
137 | | - | |
138 | | - | |
139 | | - | |
140 | | - | |
141 | | - | |
142 | | - | |
143 | | - | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
144 | 139 | | |
145 | 140 | | |
146 | 141 | | |
| |||
182 | 177 | | |
183 | 178 | | |
184 | 179 | | |
185 | | - | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
186 | 185 | | |
187 | 186 | | |
188 | 187 | | |
| |||
0 commit comments