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. Збірка теж зайняла деякий час і через все це сталася затримка. Федір Індутний відразу ж зробив виправлення, Бен Нурдуїс, Тревор Норріс, Жюльєн Джиллі, Род Вагг, Майкл Доусон і Ієремія Сенкпаїл старанно працювали над оновленням.
[Джерело]
UPD: Спасибі arelay за виправлення.
