Un salt de línia extra pot trencar TLS després de CONNECT
Inspeccioneu l'emmarcament de les capçaleres HTTP quan un connector de proxy escrit a mà obre un túnel i produeix immediatament un error de descodificació TLS.
Quan CONNECT retorna 200 i TLS falla immediatament en descodificar, inspeccioneu els bytes de frontera del connector abans de canviar certificats o xifratges.
Un valor d'autorització generat pot acabar ja amb un salt de línia. Afegir un altre final de línia pot acabar les capçaleres HTTP massa aviat i deixar un camp Host previst o altre text en clar darrere de la petició.
Una petició HTTP/1.1 CONNECT mínima fa servir CRLF entre línies i una línia buida al final:
b"CONNECT example.com:443 HTTP/1.1\r\nHost: example.com:443\r\n\r\n"Poseu qualsevol camp d'autorització abans d'aquesta línia buida final, sense cap salt de línia incrustat. A Python, "\n" representa un salt de línia; una cadena crua amb una barra inversa i la lletra n no. Comproveu quins bytes produeix un auxiliar de codificació abans d'intentar eliminar-los—els auxiliars antics podien afegir salts de línia.
Un cop CONNECT té èxit, aquests bytes restants pertanyen al protocol del túnel. Un text en clar extraviat pot arribar a un igual que espera TLS. L'estat d'èxit no pot reparar bytes ja encuats després d'una petició mal formada.
Inspeccioneu també la frontera de recepció. Llegiu la resposta completa del proxy abans de lliurar el socket a TLS, gestioneu lectures parcials i preserveu qualsevol cosa llegida més enllà de les capçaleres. Una lectura de socket no ha de contenir necessàriament un missatge sencer.
Si aquest analitzador és vostre, compareu una representació redactada dels bytes amb la gramàtica del fil; manteniu visibles longituds i fronteres de línia mentre amagueu la contrasenya. Per a una aplicació que només necessita una connexió de proxy, un connector mantingut evita haver de posseir aquest codi d'emmarcament.