Windows 10 - A segmentação TCP causa uma resposta parcial de HTML

1

EDIT 2: Como comentário, atualizou a questão da fragmentação para a segmentação.

EDIT: Eu estreitei esse problema para o Windows 10 sozinho - parece que o endurecimento do IE foi o problema em 2012 R2, o que me levou a acreditar que o 8.1 também é afetado. O conteúdo da pergunta original é o seguinte:

Estou recebendo resposta HTTP segmentada do servidor da Web.

Primeiro pacote (709 na primeira imagem) tem esta aparência: 2 - como você pode ver, ele contém cabeçalhos e depois conteúdo. O segundo pacote (710 na primeira imagem) tem esta aparência: 3 . Restos de pacotes são irrelevantes para esta questão, mas contêm resto de conteúdo HTML.

A verificação dos dados reagrupados no Wireshark mostra a resposta HTTP adequada: 4 , no entanto QUALQUER usuário (browser ou não do navegador) aplicação receberá este: 5 . Como você pode ver, parece que o conteúdo HTML que é APÓS os cabeçalhos no primeiro pacote está ausente, em vez disso, os dados seguem do segundo ao último pacote. Para que tudo fique ainda mais engraçado, isso acontece somente se o aplicativo enviar solicitação HTTP / 1.1 ou HTTP / 1.0 - enviar HTTP / 1.2, HTTP / 0.9, HTTP / 2.0 ou até mesmo qualquer dado arbitrário como "GET / AAA" resultará em servidor web respondendo com HTTP / 1.1 e aplicativo recebendo dados apropriados: 6 . Por que vale a pena parece que algo na pilha de rede está tentando algum tipo de otimização para solicitações HTTP, mas não consegui encontrar nenhuma informação sobre isso. O problema aparece apenas no Windows 8+ (ou 8.1+, não tem nenhuma máquina a testar), incluindo as edições do servidor. Não há problemas com o Windows 7 ou mais antigo ou qualquer outro sistema baseado em * nix. Este é o mesmo problema que pode ser visto em fóruns TP-Link ( link ), mas eu tenho certeza que este é um problema com a implementação do Windows falhando neste caso específico (mesmo supondo que o webserver esteja fazendo algo incorretamente, isso funciona em sistemas Windows e * nix mais antigos).

Estou aberto a qualquer sugestão, francamente, neste ponto, acho que estou enlouquecendo.

    
por eider96 31.10.2017 / 22:17

2 respostas

0

Esta é provavelmente uma combinação de dois erros: o servidor enviando uma resposta inválida e o AV tratando essa resposta errada corrompendo-a. O servidor envia uma resposta com o código 401, mas nenhum cabeçalho WWW-Authenticate . Isso é inválido de acordo com o padrão HTTP :

The response MUST include a WWW-Authenticate header field (section 14.47) containing a challenge applicable to the requested resource.

Esse cabeçalho WWW-Authenticate contendo uma região é necessário para que o navegador possa solicitar ao usuário que forneça as credenciais para essa região ou use credenciais armazenadas em cache. Não enviar WWW-Authenticate , mas, em vez disso, enviar uma página HTML que até contém script é definitivamente um comportamento errado do servidor.

Observe que o código de resposta 401 só deve ser usado se o diálogo de criação de navegadores no navegador deve ser usado e, em seguida, um domínio precisa ser fornecido. Se alguém constrói seu próprio sistema de autenticação fora do HTTP (ou seja, os logins típicos dentro do HTML, como parece ser neste caso), então o código de resposta 200 deve ser usado.

    
por 01.11.2017 / 06:55
0

Assim, para quem procura uma resposta - acontece que David Schwartz estava certo, o problema era com o software de segurança, mas parece que pode ser classificado como um bug com o Bitdefender - mesmo depois de desativá-lo completamente, não houve mudanças - apenas desinstalá-lo deu um resultado adequado. Parece que o seu driver de firewall WFP (bdfwfpf.sys) está sempre funcionando, independentemente das configurações e do pacote que você instalou (o que eu tenho não possui funcionalidade de firewall). Isso parece muito agressivo para mim e, portanto, minha solução foi igualmente agressiva - remova o arquivo de driver do firewall da WFP e bloqueie as permissões para as chaves de registro relevantes.

    
por 01.11.2017 / 00:08