Pull to refresh

Внутри HTTP-сервера, встроенного в Node, обнаружена уязвимость

Reading time2 min
Views1.4K
Мэтью Дэйли (Matthew Daley) выяснил, что в коде HTTP-сервера, встроенного в движок Node, есть такая ошибка (или даже просто опечатка: используется «size» вместо «size_»), из-за которой специально сформированным запросом к серверу можно добиться того, что сервер существенно переоценит реальный размер запроса и включит в него содержимое соседних чужих HTTP-запросов (например, частью переданной на сервер переменной станут чьи-нибудь чужие cookies; и если это будет переменная из числа тех, которые тотчас же выводятся на экран, то крякерская атака легко может оказаться успешною).

Всем пользователям Node версий 0.5.x и 0.6.x следует без промедления обновить Node до версии 0.6.17, а обладателям экспериментальных версий из ветки 0.7 следует обновить их до 0.7.8. (Версии 0.4.x не содержат этой ошибки, однако на вашем месте я бы их всё равно обновил, ибо они старьё.)

Об этом опубликовано оповещение во блоге Node.

Рекомендую заодно на этом примере поразмыслить вообще о том, что слишком близкие имена переменных часто являются источником неприятных, труднообнаружимых опечаток. Если у вас в коде есть переменная «time» и надобно создать ещё вторую, то постарайтеся назвать её не «time1», не «_time», не «dtime», а с учётом её смысла — в дýхе «finishedTime», или «deliveryTime», или «nextTime» — даже если имя получится несколько подлиннее и понеудобнее, чем получилося бы отличающееся одним символом.

Также на этом примере вполне явствует, что если код проекта открыт и разработка ведётся открыто, то по виду коммита (такого, как вон тот для версий 0.6 или вон тот для 0.7) вдумчивому читателю бывает нетрудно догадаться о подлинной силе и значимости исправленной ошибки. Стало быть, скрывать её нет смысла, а надо как можно скорее и как можно шире распространить среди пользователей достаточно побудительный рассказ о необходимости обновления.

Блогозаписью на Хабрахабре я надеюсь внести в это распространение свою лепту.
Tags:
Hubs:
Total votes 47: ↑38 and ↓9+29
Comments30

Articles