[Из песочницы] Критическое обновление безопасности для node.js и io.js
Вчера, 4 июля, вышло обновление безопасности с исправлением критической уязвимости для node.js и io.js. Суть уязвимости в том, что при конвертации буфера в UTF8 строку приложение может «упасть».
Привожу мой свободный перевод текста официального сообщения:
Во-первых, очевидно, что решение проблемы не идеально, но оно поможет нам сэкономить время на разработку лучшего решения. В США сейчас вечер и сейчас выходные, связанные с 4 июля (День независимости США).
Мы призываем обновится, потому что детали об уязвимости и потенциале использования ненароком оказались на публичном форуме. Итак, мы предпочти дать компаниям и пользователям инструмент для защиты своих проектов и смягчения DoS атак, если таковые случатся. Потому что лучше встретиться с реальностью, нежели сидеть скрестив пальцы. Время поджимает, особенно для США, где сейчас праздники, что делает это все кошмаром для людей, развертывающих больший проекты. Но этот призыв мы делаем с полезной информацией.
Короткая история:
Крис Ривз и Тревор Норрис обнаружили ошибку в V8 в методе, который декодирует UTF строки. Суть ошибки в том, что при конвертации буфера в UTF8 строку процесс может «упасть». Проблема безопасности возникает из-за того, что большое количество информации, поступающее в приложение, использует данный механизм; это означает, что пользователи могут посылать специально сгенерированные строки, чтобы «убить» приложение. Мы знаем, что уязвимо большинство сетевых операций и операций файловой системы, равно как и вызовы функции конвертации буфера в UTF8 строку. Мы знаем, что разбор HTTP (S) заголовков не уязвим, т. к. Node не конвертирует эти данные в UTF8. Это маленькое утешение, которое ограничивает пути эксплуатации уязвимости через HTTP (S), однако очевидно, их предостаточно. Так же у нас еще нет информации о том, как уязвимость воздействует на TLS ограничители (terminators) и прокси сервера (forward-proxy).
Выпуск патча был запланирован на полдень по тихоокеанскому времени. Конечно же, патч не был готов вовремя. В течение дня был проведен обширный тест и верификация дляV8, io.js и Node.js. Сборка тоже заняла некоторое время и из-за всего этого произошла задержка. Федор Индутный сразу же сделал исправление, Бен Нурдуис, Тревор Норрис, Жюльен Джилли, Род Вагг, Майкл Доусон и Иеремия Сенкпаил очень тяжело работали чтоб доставить это обновление.
[ Источник ]