Обновление закрытой беты UmbrellaX
Во время проверки безопасности мы нашли серьёзные проблемы в нескольких открытых библиотеках, от которых зависит шифрование и защищённая связь. Локальные исправления уже подготовлены, но нам нужно завершить повторную проверку и независимый аудит. Я не буду выпускать бету, пока не буду уверен, что эти риски закрыты.
Ниже полный список простыми словами. Откройте раздел, чтобы увидеть возможную проблему, понятный пример и номер исправления.
Расшифрованные секреты групп могли оставлять лишние копии в памяти или диагностике. Повреждённые зашифрованные сообщения, приглашения Welcome, предложения, пути обновления, отсутствующие локальные ключи, сбои генератора случайных чисел, необычное системное время и предел эпохи могли закрыть приложение вместо безопасной ошибки. Некоторые проверки целостности дерева и длины пути также выполнялись не во всех сборках.
Например, сломанное обновление группы из сети должно быть отклонено без закрытия мессенджера, пропуска проверки целостности или появления текста сообщения в отчёте о сбое.
Локальное исправление подготовлено, проверка продолжается.
Технические данные: openmls 0.8.1 | UMB-117, UMB-118, UMB-120, UMB-121, UMB-125, UMB-128, UMB-129, UMB-130, UMB-131, UMB-132, UMB-133, UMB-134, UMB-135, UMB-136, UMB-137, UMB-138, UMB-139
Удалённые или заменённые записи MLS могли оставлять в памяти сериализованные копии или скрытые тела предложений. Снимки групп требовали атомарной замены только выбранной группы, диагностический доступ требовал скрытия данных, а один режим сохранения записывал читаемый кодированный текст вместо защищённого хранилища.
Например, при удалении группы должны исчезнуть и её скрытые ожидающие предложения, а режим хранения не должен называться зашифрованным, если данные лишь преобразованы в читаемый текст.
Локальное исправление подготовлено, проверка продолжается.
Технические данные: openmls_memory_storage 0.5.0 | UMB-119, UMB-212, UMB-213, UMB-214
Даже неиспользуемый дополнительный модуль добавлял уязвимый пакет в список зависимостей выпуска. Закрытые данные HPKE также требовали надёжного скрытия в диагностике и очистки памяти.
Например, модуль, которым мы не пользуемся, не должен приносить в выпуск известный уязвимый пакет, а сообщение об ошибке не должно содержать закрытый ключ HPKE.
Локальное исправление подготовлено, проверка продолжается.
Технические данные: hpke-rs 0.6.1 | RUSTSEC-2026-0124
Генератор случайных чисел и временные значения HPKE очищались недостаточно надёжно. После неудачной проверки подлинности в памяти также мог оставаться частично изменённый буфер открытого текста.
Например, если сообщение не прошло проверку подлинности, частично обработанный открытый текст нужно сразу стереть.
Локальное исправление подготовлено, проверка продолжается.
Технические данные: hpke-rs-rust-crypto 0.6.1 | UMB-122
Состояние генератора случайных чисел, промежуточные ключи, байты закрытых ключей и буферы неудачного шифрования требовали очистки. Неверная длина nonce и запрос неподдерживаемого обмена ключами могли завершить процесс.
Например, неверный nonce должен вернуть обычную ошибку, а не закрыть мессенджер.
Локальное исправление подготовлено, проверка продолжается.
Технические данные: openmls_rust_crypto 0.5.1 | UMB-122, UMB-123, UMB-124
Nonce для подписи, доли подписи, временные числа и читаемая строка с секретом требовали очистки как при успехе, так и при ошибке. Неиспользуемая возможность также добавляла неподдерживаемую цепочку зависимостей.
Например, временные значения для групповой подписи не должны оставаться читаемыми в памяти после завершения или ошибки подписи.
Локальное исправление подготовлено, проверка продолжается.
Технические данные: frost-core 3.0.0 | local audited patch
Отброшенный псевдослучайный ключ и промежуточные блоки расширения могли оставаться в памяти после получения итогового ключа.
Например, когда ключ сеанса уже готов, временные данные, из которых он был получен, нужно стереть.
Локальное исправление подготовлено, проверка продолжается.
Технические данные: hkdf 0.12.4 | local compatibility backport
Производные блоки ключа, хеш слишком длинного ключа и внутренние результаты старой совместимой ветки HMAC могли оставаться в обычной памяти.
Например, проверка подлинности сообщения не должна оставлять после себя повторно используемые байты, связанные с ключом.
Локальное исправление подготовлено, проверка продолжается.
Технические данные: hmac 0.12.1 | local compatibility backport
Доступная возможность очистки была выключена по умолчанию и покрывала только часть временных и сохранённых данных, производных от ключа.
Например, после проверки подлинности нужно очистить и временные, и сохранённые блоки, связанные с ключом.
Локальное исправление подготовлено, проверка продолжается.
Технические данные: hmac 0.13.0 | local audited patch
Рабочее состояние SHA-256 и SHA-512 и счётчики блоков требовали очистки при уничтожении совместимой версии библиотеки.
Например, хеширование секрета при выработке ключа не должно оставлять рабочее состояние хеш-функции в повторно используемой памяти.
Локальное исправление подготовлено, проверка продолжается.
Технические данные: sha2 0.10.9 | local compatibility backport
Повреждённые данные могли запросить огромное выделение памяти, прочитать байты за границей своего поля, зациклить декодер или вызвать переполнение и аварийное завершение. Диагностика секретных массивов и частично прочитанные данные после ошибки также требовали очистки.
Например, крошечное сообщение, которое ложно заявляет огромное поле, не должно занять гигантский объём памяти или запереть приложение в бесконечном цикле.
Локальное исправление подготовлено, проверка продолжается.
Технические данные: tls_codec 0.4.2 | local audited patch
Ключ проверки целостности STUN мог попасть в диагностический вывод и не стирался явно вместе с временным текстом учётных данных.
Например, журнал ошибки соединения не должен показывать секрет, которым подтверждается запрос к ретранслятору.
Локальное исправление подготовлено, проверка продолжается.
Технические данные: stun 0.17.1 | audit patch 6e5cbb42
Долговечный пароль TURN хранился как обычная строка и требовал явного стирания при уничтожении клиента.
Например, после завершения звонка пароль ретранслятора не должен оставаться в памяти старого объекта клиента.
Локальное исправление подготовлено, проверка продолжается.
Технические данные: turn 0.17.1 | audit patch 6e5cbb42
Имена пользователей и пароли TURN хранились как обычные строки и автоматически печатались в отладочном выводе ICE.
Например, отчёт о соединении звонка может указать, что учётные данные есть, но не должен печатать имя пользователя и пароль.
Локальное исправление подготовлено, проверка продолжается.
Технические данные: webrtc-ice 0.17.1 | audit patch 6e5cbb42
Входы выработки ключей, производные ключи, сохранённые соли SRTP/SRTCP и рабочее состояние шифра требовали надёжной очистки.
Например, после завершения зашифрованного звонка временные медиаключи и соли не должны оставаться в обычных буферах.
Локальное исправление подготовлено, проверка продолжается.
Технические данные: webrtc-srtp 0.17.1 | audit patch 6e5cbb42
Чтобы следить за заметками о бете и доступом, подпишитесь на мой личный аккаунт X.