Обхід гарантій компілятора rustc у Deflate::compress_uninit
Головною причиною термінового випуску zlib-rs 0.6.7 стала вразливість класу Use-After-Free, виявлена в кодовій базі під час виклику функції Deflate::compress_uninit. Відповідний тикет у репозиторії проєкту зафіксував випадок, коли звернення до вже звільненої ділянки пам'яті відбувалося без застосування ключового слова unsafe, що формально порушує інваріанти гарантій безпеки мови Rust.
Автор Proof-of-Concept довів, що внутрішня логіка управління буферами неініціалізованої пам'яті дозволяла згенерованому коду звертатися до вивільненого вказівника. Інженери Trifecta Tech Foundation переробили механізм роботи з неініціалізованими слайсами, виключивши можливість передчасного деалокування буфера під час стиснення даних.
Прискорення SIMD для LoongArch64 та оптимізація Inflate
Окрім виправлення багу пам'яті, реліз 0.6.7 приніс вагомий апгрейд продуктивності для китайських процесорів Loongson на базі архітектури LoongArch64. Команда впровадила підтримку векторних розширень Loongson SIMD eXtension (LSX) безпосередньо у критичні гарячі цикли бібліотеки:
- Реалізовано підсистему
LSX compare256, яка дала приріст швидкості стиснення на 4% у базі синтетичних бенчмарків. - Оптимізовано алгоритм
inflateшляхом переходу на ширші векторні інструкції завантаження та збереження даних (wide loads/stores), що забезпечило стрибок продуктивності до 10%. - Усунуто дрібні регресії в обробці байтових свайпів для невирівняних адрес у пам'яті.
Чому витік Use-After-Free у Safe Rust змінює підхід до розробки zlib-rs
Виявлення UAF у безпечному контексті Safe Rust показало, що навіть без прямого вжитку розширень unsafe складна логіка обгортання неініціалізованих буферів через абстракції стандартної бібліотеки може приховувати логічні дірки. Для проєкту zlib-rs, який позиціонується як 100% пам'яткобезпечна та високопродуктивна альтернатива класичним C-бібліотекам zlib та zlib-ng, цей кейс став поштовхом до посилення фаззингу та статичного аналізу. Системним програмістам рекомендується оновити залежності crate zlib-rs у виробничих сервісах, аби уникнути можливих збоїв під час інтенсивної роботи з декомпресією потоків.