workerd виправив type confusion і use-after-free у буферах, потоках та EventSource
Свіжий реліз edge runtime усуває помилки життєвого циклу пам’яті, коригує stream pumps і зберігає hibernatable WebSockets під час активної передачі.

Cloudflare workerd у релізі v1.20260829.1 отримав серію виправлень керування пам’яттю: команда прибрала type confusion, кілька сценаріїв use-after-free для буферів, потоків і EventSource, а також скоригувала життєвий цикл hibernatable WebSockets. Розробники не позначили реліз окремим CVE або security advisory, тому перебільшувати ризик не варто. Але для середовища, яке виконує недовірений код і тримає багато паралельних з’єднань, такі дефекти є вагомою причиною для швидкого контрольованого оновлення.

Type confusion замінили безпечнішою перевіркою типу
Одна зі змін переводить проблемну ділянку на dynamic_cast, щоб уникнути помилкового трактування об’єкта як іншого типу. У C++ така помилка здатна порушити інваріанти пам’яті: код читає поля або викликає методи, які не відповідають фактичному об’єкту. Runtime із великою кількістю JavaScript/C++ меж особливо залежить від коректного перетворення типів.
Release notes не описують шлях експлуатації, вплив на конкретні конфігурації чи доказ віддаленої атаки. Тому коректний операційний висновок — оновити й перевірити, але не оголошувати інцидент без додаткового advisory. Командам зі своєю збіркою workerd варто простежити, що потрібний commit справді потрапив у binary.
Use-after-free у буферах та EventSource
Інші виправлення стосуються in-flight buffers, внутрішніх stream pumps та EventSource. Use-after-free виникає, коли один компонент звільняє ресурс, а інша асинхронна операція все ще має на нього посилання. Під невеликим навантаженням проблема може не проявлятися; гонка стає видимою під час скасування, розриву мережі або одночасного завершення кількох callback.
Реліз тепер скасовує внутрішні перекачування потоку до звільнення джерела. Це важлива послідовність: спочатку потрібно припинити всіх споживачів, дочекатися контрольованого завершення, і лише потім руйнувати backing object. Окремо виправлено EventSource, де довгоживуче SSE-з’єднання збільшує шанс зустріти рідкісну помилку життєвого циклу.
Практичний висновок: звичайний health check не перевіряє ці виправлення. Потрібні тести з раннім cancel, network reset, повільним consumer і конкурентним завершенням stream.
Hibernatable WebSockets під час активного pump
workerd також навчився зберігати hibernatable WebSockets, доки активне перекачування даних ще триває. Механізм hibernation потрібен для економії ресурсів, але не повинен закривати або втрачати сокет, який фактично обслуговує повідомлення. Після оновлення слід перевірити пробудження, чергу повідомлень, backpressure і поведінку при розриві клієнта.
Що робити операторам
- Оновити workerd у staging до v1.20260829.1 та перевірити точний commit збірки.
- Запустити навантажувальні сценарії для Streams, EventSource і WebSockets із частими disconnect/cancel.
- Порівняти memory usage, crash rate та sanitizer-логи до й після оновлення.
- Для власних C++ розширень переглянути місця з downcast і правила володіння асинхронними буферами.
- Розгортати canary, бо зміни торкаються базового життєвого циклу мережевих ресурсів.
До релізу також увійшли оновлення залежностей, нові dynamic Hyperdrive types, тестова підтримка resource name і зміни інструментів browser run. Вони корисні, але головна редакційна цінність версії — концентрований набір memory-safety виправлень у компонентах, де помилки важко стабільно відтворити.
Обмеження інформації
Офіційні release notes перелічують pull request, але не дають оцінки severity, affected versions або exploitability. Цей матеріал пояснює технічний клас дефектів і не стверджує, що всі розгортання були вразливими. Якщо Cloudflare опублікує окремий advisory, саме він має бути джерелом для остаточної оцінки ризику.
Джерело та права
Матеріал є самостійним українським перекладом-переказом release notes workerd v1.20260829.1, опублікованих 29 серпня 2026 року командою Cloudflare. Код, документація та release notes офіційного репозиторію поширюються за Apache License 2.0. Перекладено, адаптовано й доповнено редакцією «Бібліотеки програміста». Обкладинка створена редакцією за допомогою AI і не входить до першоджерела.
Матеріал перекладено, переказано та доповнено редакцією українською мовою.
Читайте далі — ми вже розбираємо наступну важливу тему.


