Abfragezeichenfolgenparameter werden neu gemischt

Abfragezeichenfolgenparameter werden neu gemischt

Wir beobachten seit dem 9.9.2015 ein merkwürdiges Verhalten der Daten, die von einem JavaScript an unsere Systeme gesendet werden.

Das Problem tritt auf, wenn die Abfragezeichenfolge an unsere Server gesendet wird. Einige Werte der enthaltenen Parameter in der Get-Anfrage werden durcheinandergebracht. Eine Zuordnung der empfangenen Daten ist nicht möglich, da die Parameter völlig deformiert werden.

Beispielsweise erhält der Parameter 'foo=bar' 'foo=abr' oder 'foo=rab'. Das bedeutet, dass die Daten zwar noch vorhanden sind, die Zeichen aber nicht mehr in der richtigen Reihenfolge sind. Dies passiert nur bei Parametern, die länger als 8 Zeichen sind.

Wir berechnen eine Prüfsumme basierend auf dem Jenkins-Hash für den Abfragestring. Diese Prüfsumme wird korrekt übermittelt, da der String nur 6 Zeichen lang ist. Die GET-Anfrage wird unmittelbar nach der Berechnung der Prüfsumme an unsere Systeme gesendet. Daher sollte das Problem nicht im Javascript liegen.

Die Analyse der Zugriffsprotokolle unserer Server zeigt, dass die Parameter bereits beim Empfang verändert werden.

Bisher konnten wir dieses Problem nur bei Mozilla Firefox-Benutzeragenten in Kombination mit Microsoft Windows-Betriebssystemen beobachten. Ein Beispiel fehlerhafter Anfragen von gestern zeigt die folgenden Benutzeragenten:

  • Mozilla/5.0 (Windows NT 10.0; rv:40.0) Gecko/20100101 Firefox/40.0
  • Mozilla/5.0 (Windows NT 10.0; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0
  • Mozilla/5.0 (Windows NT 10.0; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0
  • Mozilla/5.0 (Windows NT 5.1; rv:39.0) Gecko/20100101 Firefox/39.0
  • Mozilla/5.0 (Windows NT 5.1; rv:40.0) Gecko/20100101 Firefox/40.0
  • Mozilla/5.0 (Windows NT 6.0; rv:40.0) Gecko/20100101 Firefox/40.0
  • Mozilla/5.0 (Windows NT 6.0; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0
  • Mozilla/5.0 (Windows NT 6.1; rv:39.0) Gecko/20100101 Firefox/39.0
  • Mozilla/5.0 (Windows NT 6.1; rv:40.0) Gecko/20100101 Firefox/40.0
  • Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0
  • Mozilla/5.0 (Windows NT 6.1; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0
  • Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0
  • Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0
  • Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0
  • Mozilla/5.0 (Windows NT 6.1; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0
  • Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0
  • Mozilla/5.0 (Windows NT 6.2; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0
  • Mozilla/5.0 (Windows NT 6.3; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0
  • Mozilla/5.0 (Windows NT 6.3; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0

Es ist unwahrscheinlich, dass es sich bei diesen Anfragen um irgendeine Form eines Angriffs handelt, da diese Anfragen von einer Vielzahl von IP-Adressen stammen und einen sehr geringen Anteil (unter 0,1 Prozent) an den Gesamtanfragen haben. Das Verhalten der Clients scheint ebenfalls normal zu sein.

Es gibt einen Reddit-Beitrag (https://redd.it/3lxg26) und ein Beitrag auf stackoverflow (https://stackoverflow.com/questions/32572264/was-könnte-meine-Query-String-Parameter-in-Javascript-konstruieren) beschreibt ein ähnliches Problem.

Hat jemand Vorschläge zu diesem Problem? Oder erlebt jemand ähnliche Auswirkungen auf seine Anwendung?

verwandte Informationen