Nakakita ng ilang mga kahinaan na nakakakompromiso sa maraming customer ng Matrix

protocol ng matrix

Ang Matrix ay isang bukas na protocol ng instant messaging. Ito ay dinisenyo upang payagan ang mga user na makipag-usap sa pamamagitan ng online chat, voice over IP, at video chat.

Kamakailan lamang, naglabas ng babala ang mga developer ng desentralisadong plataporma ng komunikasyon na "Matrix" tungkol sa ilang kritikal na kahinaan na natukoy sa mga library ng matrix-js-sdk, matrix-ios-sdk, at matrix-android-sdk2 na nagpapahintulot sa mga administrador ng server na magpanggap na ibang mga user at magbasa ng mga end-to-end encrypted (E2EE) na mensahe sa chat.

Nabanggit na upang matagumpay na makumpleto ang isang pag-atake, kinakailangan ang access sa isang home server na kontrolado ng mga umaatake (home server: isang server na ginagamit upang mag-imbak ng kasaysayan at mga account ng kliyente). Ang paggamit ng end-to-end encryption sa panig ng kliyente ay pumipigil sa administrator ng server na makialam sa pagmemensahe, ngunit ang mga natukoy na kahinaan ay nagpapahintulot na malampasan ang proteksyong ito.

Ang mga isyu ay nakakaapekto sa pangunahing kliyente ng Element Matrix (dating Riot) para sa Web, desktop, iOS at Android, pati na rin sa mga third-party client application tulad ng Cinny, Beeper, SchildiChat, Circuli at Synod.im.

Ang mga kahinaan ay hindi lumalabas sa mga aklatan na matrix-rust-sdk, hydrogen-sdk, Matrix Dart SDK, mautrix-python, mautrix-go, at matrix-nio, pati na rin sa Hydrogen, ElementX, Nheko, FluffyChat, Siphon, Timmy, Gomuks, at Pantalaimon application.

Tandaan na ang mga kritikal na isyu sa kalubhaan ay mga isyu sa pagpapatupad sa matrix-js-sdk at mga derivative, at hindi mga isyu sa protocol sa Matrix. Ang pinakabagong bersyon ng papel ng mga mananaliksik na nakita namin ay hindi wastong naglalarawan sa Element bilang "ang benchmark na kliyente ng Matrix" at nililito ang mga error sa pagpapatupad ng mas mataas na kalubhaan sa mas mababang pagpuna sa protocol.

May tatlong pangunahing senaryo ng pag-atake:

  1. Maaaring sirain ng administrator ng server ng Matrix ang pag-verify na nakabatay sa emoji (SAS, Short Authentication Chains) sa pamamagitan ng paggamit ng mga cross-signature at pagpapanggap bilang isa pang user. Ang isyu ay sanhi ng isang kahinaan (CVE-2022-39250) sa matrix-js-sdk code na nauugnay sa kumbinasyon ng paghawak ng device ID at mga cross-signing key.
  2. Ang isang attacker na kumokontrol sa server ay maaaring magpanggap bilang isang pinagkakatiwalaang nagpadala at magpasa ng isang pekeng key upang maharang ang mga mensahe mula sa ibang mga user. Ang isyu ay dahil sa isang kahinaan sa matrix-js-sdk (CVE-2022-39251), matrix-ios-sdk (CVE-2022-39255), at matrix-android-sdk2 (CVE-2022-39248), na naging sanhi ang Ang kliyente ay hindi wastong tumatanggap ng mga mensaheng naka-address sa mga naka-encrypt na device gamit ang Megolm protocol sa halip na Olm , na iniuugnay ang mga mensahe sa Megolm sender sa halip na ang aktwal na nagpadala.
  3. Sa pamamagitan ng pagsasamantala sa mga kahinaan na binanggit sa nakaraang talata, ang administrator ng server ay maaari ding magdagdag ng dummy ekstrang key sa user account upang kunin ang mga key na ginamit sa pag-encrypt ng mga mensahe.

Ang mga mananaliksik na nakatukoy sa kahinaan ay nagpakita rin ng mga pag-atake na nagdaragdag ng isang third-party user sa isang chat o nagkokonekta ng isang third-party device sa user. Sinasamantala ng mga pag-atakeng ito ang katotohanan na ang mga mensahe ng serbisyo na ginagamit upang magdagdag ng mga user sa chat ay hindi naka-link sa mga key ng tagalikha ng chat at maaaring mabuo ng administrator ng server.

Inuri ng mga developer ng proyektong Matrix ang mga kahinaang ito bilang maliliit , dahil ang mga ganitong manipulasyon ay hindi partikular sa Matrix at nakakaapekto lamang sa mga kliyente batay sa protocol, ngunit hindi ito nangangahulugan na hindi sila mapapansin: kung ang isang user ay papalitan, ipapakita ito sa listahan ng chat user, at kapag ang isang device ay idinagdag, isang babala ang ipapakita at ang device ay mamarkahan bilang hindi na-verify (sa kasong ito, kaagad pagkatapos idagdag ang hindi awtorisadong device, magsisimula itong makatanggap ng mga pampublikong susi na kinakailangan upang i-decrypt ang mga mensahe).

Mapapansin mo na ang matrix-rust-sdk, hydrogen-sdk, at iba pang XNUMXnd at XNUMXrd generation SDK ay hindi naapektuhan ng mga bug sa root cause ng mga kritikal na isyu dito. Ito ang eksaktong dahilan kung bakit kami nagsusumikap na palitan ang mga unang henerasyong SDK ng malinis, maingat na nakasulat na pagpapatupad ng Rust sa anyo ng matrix-rust-sdk, na kumpleto sa isang patuloy na independiyenteng pampublikong pag-audit.

Ang mga kahinaan ay sanhi ng mga error sa mga indibidwal na implementasyon ng Matrix protocol at hindi mga problema sa mismong protocol. Kasalukuyang naglabas ang proyekto ng mga update para sa mga apektadong SDK at ilan sa mga client application na binuo gamit ang mga ito.

Panghuli, kung interesado kang matuto nang higit pa tungkol dito , makikita mo ang mga detalye sa sumusunod na link.


Idagdag bilang ginustong mapagkukunan sa Google