Estamos observando um comportamento estranho dos dados enviados aos nossos sistemas a partir de um javascript desde 9/9/2015.
O problema aparece quando a string de consulta é enviada para nossos servidores. Alguns valores dos parâmetros contidos na solicitação get são embaralhados. Um mapeamento dos dados recebidos não é possível, pois os parâmetros ficam totalmente deformados.
Por exemplo, o parâmetro 'foo = bar' recebe 'foo = abr' ou 'foo = rab'. O que implica que os dados ainda estão disponíveis, mas os caracteres não estão mais na ordem correta. Isso só acontece em parâmetros com mais de 8 caracteres.
Calculamos uma soma de verificação com base no hash jenkins para a string de consulta. Essa soma de verificação é transmitida corretamente, pois a string tem apenas 6 caracteres. A solicitação GET é enviada aos nossos sistemas imediatamente após o cálculo da soma de verificação. É por isso que o problema não deve estar no javascript.
A análise dos registros de acesso de nossos servidores mostra que os parâmetros já foram embaralhados quando são recebidos.
Até agora, só podíamos observar esse problema nos agentes do usuário do Mozilla Firefox em combinação com os sistemas operacionais Microsoft Windows. Uma amostra de solicitações incorretas de ontem mostra os seguintes agentes do usuário:
É improvável que essas solicitações representem qualquer tipo de ataque, já que essas solicitações vêm de uma grande variedade de endereços IP e têm uma proporção muito baixa (abaixo de 0,1%) do total de solicitações. O comportamento dos clientes parece ser normal também.
Há uma postagem no reddit ( link ) e uma postagem no stackoverflow ( link ) descrevendo um problema semelhante.
Existe alguém que tenha alguma sugestão sobre esse problema? Ou experimentando alguns efeitos semelhantes em sua aplicação?
Tags windows firefox nginx javascript linux