Виявлено декілька вразливостей, які загрожують багатьом клієнтам Matrix

матричний протокол

Matrix - це відкритий протокол обміну миттєвими повідомленнями. Він призначений для того, щоб дозволити користувачам спілкуватися через онлайн-чат, голосовий зв’язок через IP та відеочат.

Нещодавно розробники децентралізованої комунікаційної платформи «Matrix» опублікували попередження про кілька критичних вразливостей , виявлених у бібліотеках matrix-js-sdk, matrix-ios-sdk та matrix-android-sdk2, що дозволяють адміністраторам серверів видавати себе за інших користувачів та читати повідомлення чату з наскрізним шифруванням (E2EE).

Зазначається, що для успішного завершення атаки потрібен доступ до домашнього сервера, контрольованого зловмисниками (домашній сервер: сервер, що використовується для зберігання історії та облікових записів клієнтів). Використання наскрізного шифрування на стороні клієнта запобігає втручанню адміністратора сервера в обмін повідомленнями, але виявлені вразливості дозволяють обійти цей захист.

Проблеми стосуються основного клієнта Element Matrix (раніше Riot) для веб-сайтів, настільних комп'ютерів, iOS та Android, а також сторонніх клієнтських додатків, таких як Cinny, Beeper, SchildiChat, Circuli та Synod.im.

Уразливості відсутні в бібліотеках matrix-rust-sdk, hydrogen-sdk, Matrix Dart SDK, mautrix-python, mautrix-go та matrix-nio, а також у Hydrogen, ElementX, Nheko, FluffyChat, Siphon, Timmy, Додатки Гомукс і Пантелеймон.

Зауважте, що критичні проблеми серйозності – це проблеми реалізації в matrix-js-sdk і похідних, а не проблеми протоколу в Matrix. Остання версія статті дослідників, яку ми бачили, неправильно описує Element як «еталонний матричний клієнт» і плутає помилки впровадження більшої серйозності з критикою протоколу меншої серйозності.

Існує три основні сценарії атаки:

  1. Адміністратор сервера Matrix може зламати перевірку на основі емодзі (SAS, короткі ланцюжки автентифікації), використовуючи перехресні підписи та видаючи себе за іншого користувача. Проблема спричинена вразливістю (CVE-2022-39250) у коді matrix-js-sdk, пов’язаною з поєднанням обробки ідентифікатора пристрою та ключів перехресного підпису.
  2. Зловмисник, який контролює сервер, може видати себе за надійного відправника та передати підроблений ключ для перехоплення повідомлень від інших користувачів. Проблема пов’язана з уразливістю в matrix-js-sdk (CVE-2022-39251), matrix-ios-sdk (CVE-2022-39255) і matrix-android-sdk2 (CVE-2022-39248), яка спричинила Клієнт неправильно приймає повідомлення, адресовані зашифрованим пристроям, які використовують протокол Megolm замість Olm, приписуючи повідомлення відправнику Megolm замість фактичного відправника.
  3. Використовуючи вразливості, згадані в попередньому абзаці, адміністратор сервера також може додати фіктивний запасний ключ до облікового запису користувача, щоб отримати ключі, які використовуються для шифрування повідомлень.

Дослідники, які виявили вразливість, також продемонстрували атаки, які додають стороннього користувача до чату або підключають сторонній пристрій до користувача. Ці атаки використовують той факт, що службові повідомлення, що використовуються для додавання користувачів до чату, не пов'язані з ключами автора чату та можуть бути згенеровані адміністратором сервера.

Розробники проєкту Matrix класифікували ці вразливості як незначні , оскільки такі маніпуляції не є специфічними для Matrix і впливають лише на клієнтів на основі протоколу, але це не означає, що вони не залишаться непоміченими: якщо користувача замінять, це буде показано у списку користувачів чату, а при додаванні пристрою буде відображено попередження та пристрій буде позначено як неперевірений (у цьому випадку одразу після додавання неавторизованого пристрою він почне отримувати відкриті ключі, необхідні для розшифрування повідомлень).

Ви помітите, що matrix-rust-sdk, hydrogen-sdk та інші SDK XNUMX-го та XNUMX-го поколінь не постраждали від помилок у першопричині критичних проблем тут. Саме тому ми працювали над заміною пакетів SDK першого покоління чистою, ретельно написаною реалізацією Rust у формі matrix-rust-sdk із постійним незалежним публічним аудитом.

Вразливості спричинені помилками в окремих реалізаціях протоколу Matrix і не є проблемами самого протоколу. Проект наразі випустив оновлення для уражених SDK та деяких клієнтських програм, побудованих на них.

Зрештою, якщо ви зацікавлені дізнатися більше про це , ви можете знайти подробиці за наступним посиланням.


Додати як пріоритетне джерело в Google