
С 9 сентября 2015 года мы наблюдаем странное поведение данных, отправляемых в наши системы из JavaScript.
Проблема проявляется, когда строка запроса отправляется на наши серверы. Некоторые значения содержащихся параметров в запросе get перетасовываются. Отображение полученных данных невозможно, так как параметры полностью деформируются.
Например, параметр 'foo=bar' получает 'foo=abr' или 'foo=rab'. Это означает, что данные все еще доступны, но символы больше не в правильном порядке. Это происходит только с параметрами, длина которых превышает 8 символов.
Мы вычисляем контрольную сумму на основе хэша jenkins для строки запроса. Эта контрольная сумма передается правильно, так как длина строки всего 6 символов. Запрос GET отправляется в наши системы сразу после вычисления контрольной суммы. Поэтому проблема не должна быть в javascript.
Анализ журналов доступа наших серверов показывает, что параметры уже перетасованы при получении.
К настоящему моменту мы могли наблюдать эту проблему только на пользовательских агентах Mozilla Firefox в сочетании с операционными системами Microsoft Windows. Пример ошибочных запросов от вчерашнего дня показывает следующие пользовательские агенты:
- 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
Маловероятно, что эти запросы являются какой-либо формой атаки, поскольку эти запросы поступают с широкого диапазона IP-адресов и имеют очень низкий коэффициент (менее 0,1 процента) от общего числа запросов. Поведение клиентов также кажется нормальным.
Есть пост на Reddit (https://redd.it/3lxg26) и пост на stackoverflow (https://stackoverflow.com/questions/32572264/что-может-быть-перетасовкой-параметров-строки-запроса-сконструированных-в-javascript) описывающий похожую проблему.
Есть ли у кого-нибудь предложения по этой проблеме? Или кто-нибудь сталкивался с подобными эффектами при использовании своего приложения?