Исследователь Soatok нашёл серьёзные криптографические проблемы в Rust-библиотеке Matrix — vodozemac (коммит a4807ce…).
Основные уязвимости:
Высокая: X25519 Diffie–Hellman может вернуть all‑zero (элемент тождества). В коде Vodozemac не проверяют was_contributory(), поэтому совместный секрет может быть нулём — это полностью ломает конфиденциальность.
Возможность даунгрейда V2→V1 (downgrade).
Другие проблемы: слабая проверка ECIES (CheckCode ~100 значений), исчезновение ключей сообщений после MAX_MESSAGE_BYTES, детерминированные IV в формате «pickle», обход проверки MAC/подписи при #[cfg(fuzzing)], строгая проверка Ed25519 по умолчанию отключена.
Таймлайн раскрытия: найдено 2026-02-11, автор уведомил Matrix, дал неделю на реакцию; публичное раскрытие — 2026-02-17.
Влияние: потенциальное раскрытие переписок/ключей при реальных условиях (особенно с ошибками RNG или в групповых чатах). Matrix поспешно утверждала «никакого практического воздействия», но автор предоставил PoC и патч.
Рекомендация автора: не использовать Matrix (по крайней мере — пока эти баги не исправлены); предложен простой патч — проверять was_contributory() для всех DH-результатов.
src: https://soatok.blog/2026/02/17/cryptographic-issues-in-matrixs-rust-library-vodozemac/
vodozemac — это реализация криптографических алгоритмов Olm и Мегольма на чистом Rust, предлагающая высокоуровневый API для простого создания защищенных каналов связи с использованием этих алгоритмов.
Разработанный как современная альтернатива криптографической библиотеке libolm, используемой для сквозного шифрования в Matrix, vodozemac предоставляет не только алгоритмы Ольма и Мегольма, но и дополнительные криптографические функции, полезные для разработки клиентов Matrix, такие как SAS и интегрированная схема шифрования, описанная в MSC4108.




