Voydevich
Node.js

Що нового в Node.js 26.12

Реліз приніс нові функції для маскування WebSocket, утиліти dump для потоків, стабілізацію конфігураційного файлу та оновлення безпеки 26.12.1.

Реліз від 14 жовтня 2026 · оновлено 9 листопада 2026

Головне

  • Додано функції websocketMask() та websocketUnmask() у модуль http
  • Викидання помилки за відсутності підтримки WebAssembly або RX
  • Конфігураційний файл позначено як стабільний
  • Додано dump() та dumpSync() для stream/iter
  • Безпековий реліз 26.12.1 із виправленнями в TLS, DNS, Brotli, Crypto та Permission Model

Коротко

Лінійка Node.js 26.12 включає випуск 26.12.0 та безпекове оновлення 26.12.1. До середовища додано нові вбудовані утиліти для обробки WebSocket-масок, розширено поведінку потоків за допомогою функцій dump() та dumpSync(), а також переведено конфігураційний файл у стабільний статус. Окремий реліз 26.12.1 зосереджений на усуненні низки вразливостей у підсистемах TLS, DNS, Brotli та моделі дозволів.

Нові можливості

Мережа та HTTP

  • Маскування WebSocket: у модуль http додано функції websocketMask() та websocketUnmask().
  • Підтримка VFS: у підсистему vfs додано ComposableProvider для роботи з багатошаровими монтуваннями (layered mounts).
  • Прапорець моделі дозволів: до переліку доступних прапорців дозволів включено --allow-fs-vfs.

Системні перевірки та середовище виконання

  • Вимоги до WebAssembly та RX: тепер викидається виключення за відсутності підтримки WebAssembly або RX у середовищі.
  • Стабільний конфігураційний файл: роботу з конфігураційним файлом позначено як стабільну (mark config file as stable). Прапорці дозволів із конфігураційного файлу тепер транслюються на дочірні процеси в child_process.
  • Статус process.finalization: API process.finalization отримало статус кандидата в реліз (release candidate).

Робота з потоками (stream)

  • Утиліти скидання потоку: додано функції dump() та dumpSync() для протоколів stream/iter.
  • Параметри завершення pipeToSync(): додано опцію failOnIncompleteClose для методу pipeToSync().

Тестування (test_runner)

  • Твердження для моків: у t.assert додано перевірки викликів моків (mock call assertions).

Виправлення та покращення

Безпека (оновлення 26.12.1)

  • TLS та IP-адреси: відхилення неканонічних IP-адрес (CVE-2026-106069, CVE-2026-106072), виправлення регресії нормалізації IP (CVE-2026-105483) та відхилення ланцюжків сертифікатів, що містять заблоковані публічні ключі.
  • DNS: валідація вхідних даних resolve на наявність нульових байтів (CVE-2026-105482).
  • Brotli: експортовано константу BROTLI_DECODER_ERROR_FORMAT_BLOCK_SWITCH (CVE-2026-111497).
  • HTTP: гарантовано роботу захисту даних агента без виконання I/O (CVE-2026-105481).
  • Crypto: скидання кешу випадкових значень під час створення снепшотів (CVE-2026-106074), посилення перетворення та форматування X.509, оновлення кореневих сертифікатів до версії NSS 3.131.1.
  • Модель дозволів (Permission Model): перевірка моделі дозволів у realpathSync (CVE-2026-106073) та виправлення вузла дерева дозволів файлової системи для шаблонів з підстановочними знаками (CVE-2026-106071).
  • Zlib: усунено кешування некоректних локальних заголовків ZIP (CVE-2026-106070).
  • Модулі: скасовано зміну module: synchronously load most ES modules.

Потоки та файлова система

  • У fs забезпечено блокування FileHandle під час першого читання в pull() та pullSync(), а також серіалізовано асинхронні операції запису для FileHandle writer().
  • Виправлено повідомлення про помилки асинхронного вводу в fromSync(), а закриті записи у fromWritable() тепер відхиляються з помилкою TypeError.
  • У shareSync() встановлено захист від повторних читань джерела (re-entrant reads) та відхилення протитиску за стратегією drop-newest.
  • Виправлено обробку скидання буфера в Utf8Stream.

SQLite

  • Додано валідацію назви та параметрів для методу aggregate().
  • Стан захисного режиму enableDefensive() тепер зберігається після повторного відкриття бази даних.
  • Замість аварійного завершення (abort) викидається помилка у разі спроби передачі рядків надмірного розміру.

Криптографія

  • Знято блокування експорту ключів і метаданих, блокування під час налаштування верифікації, а також блокування ключів для операцій KEM та RSA-OAEP.
  • Пропущено виділення мютекса для секретних ключів.
  • Збереження сховища кореневих сертифікатів організовано індивідуально для кожного Environment.

Продуктивність та оптимізації

  • Зменшено виділення пам’яті для вихідних назв заголовків у http та пришвидшено виконання getHeaders для відповідей у http2.
  • Усунено витік пам’яті у вкладених композитних сигналах AbortSignal.any().
  • У querystring виправлено декодування значень, розташованих після закодованих ключів.
  • Оновлено залежності: SQLite до 3.54.0, simdjson до 5.0.3, acorn до 8.19.0, c-ares до 1.34.9, undici до 8.12.2.

Огляд підготовлено автоматично за офіційними release notes за допомогою ШІ та перевірено на відповідність джерелу. Точні формулювання дивіться в оригіналі. Як ми працюємо