RabbitMQ pārvaldības saskarnē bija galapunkts GET /api/auth, kas jebkuram nepieteiktam pieprasītājam atdeva servera OAuth 2 klienta noslēpumu. Ar to noslēpumu uzbrucējs no organizācijas identitātes nodrošinātāja izprasa administratora marķieri, uzrāda to brokerim un iegūst pilnu kontroli pār ziņām, rindām, lietotājiem un iestatījumiem. Kļūda kodā bija kopš 2024. gada sākuma, kad iznāca versija 3.13.0. To apzīmē CVE-2026-57219, un tās CVSS vērtējums ir 8.7.
Kļūdu atrada drošības firmas Miggo automātiskā izpētes sistēma VulnHunter. Tā salīdzina lietotnes galapunktus savā starpā un meklē vietas, kur viens galapunkts autorizē pieprasījumus citādi nekā tā kaimiņi. Tieši tāds /api/auth arī bija: tā autorizācijas pārbaude bija cieti iekodēta uz “vienmēr atļaut”, kamēr visi pārējie jutīgie pārvaldības galapunkti prasa pieteikšanos. Šāda nekonsekvence starp diviem blakus esošiem galapunktiem cilvēka acij paslīd garām, jo katrs no tiem atsevišķi izskatās pareizs.
Kā uzbrukums notiek
Ķēde ir īsa un neprasa nevienu paroli. Uzbrucējs atrod pieejamu RabbitMQ pārvaldības saskarni uz porta 15672 un nosūta uz to nepieteiktu GET /api/auth pieprasījumu. Atbildē serveris atklāj savu OAuth 2 konfigurāciju, tostarp klienta noslēpumu. To noslēpumu uzbrucējs nomaina pret piekļuves marķieri pie identitātes nodrošinātāja, uzrāda marķieri RabbitMQ, un brokeris viņu ielaiž kā administratoru.
No šī brīža uzbrucējam pieder viss, kas iet caur brokeri. Viņš lasa un dzēš ziņas, veido un noņem rindas, maina lietotājus un pārkonfigurē pašu serveri. RabbitMQ stāv daudzu sistēmu vidū kā ziņu pārsūtītājs starp servisiem, tāpēc viena brokera pārņemšana atver ceļu uz datiem, kas tam iet cauri — pasūtījumiem, maksājumu notikumiem, iekšējām komandām. Klienta noslēpums parasti tiek glabāts kā viens no jutīgākajiem konfigurācijas datiem, un šeit serveris to izsniedza pats, bez jebkādas pārbaudes.
Pati OAuth 2 shēma šeit strādā tā, kā iecerēts — klienta noslēpums ir tas, ar ko brokeris pierāda identitātes nodrošinātājam, ka pieprasījums nāk tiešām no brokera. Uzbrucējs, kam šis noslēpums ir rokā, identitātes nodrošinātājam izskatās kā pats brokeris. Tāpēc marķieris, ko viņš saņem, ir īsts administratora marķieris, un neviena papildu pārbaude to neaptur. Problēma nav pašā OAuth, bet vietā, kur RabbitMQ noslēpumu izlaida ārpus servera.
Abas kļūdas, ko sistēma uzgāja, ir “nekonsekvences” tipa — tāda veida, ko atrod plaša, sistemātiska lietotnes virsmas apskate blakus, nevis dziļa ieniršana vienā failā, raksta Miggo.
Kāpēc galapunkts vispār tur bija
Pēc RabbitMQ drošības apraksta /api/auth bija novecojis galapunkts, kas pārvaldības tīmekļa saskarnē nokļuva netīši. Tas atklāj OAuth 2 konfigurāciju tikai tām instalācijām, kur OAuth 2 iestatīts ar konfigurācijas atslēgu management.oauth_client_secret un ieslēgts pārvaldības spraudnis. Serveri, kas OAuth 2 neizmanto vai kam klienta noslēpums nav iestatīts, kā arī tie, kam pārvaldības spraudņa nav vispār, šī kļūda neskar.
Labojums vienkārši izņem galapunktu. RabbitMQ to aizvēra izlaidumos 4.3.0, 4.2.6, 4.1.11, 4.0.20 un 3.13.15. Kam atjaunināt uzreiz nesanāk, izstrādātāji piedāvā trīs apiešanas ceļus: izslēgt OAuth 2 spraudni, pāriet uz piešķires veidu bez klienta noslēpuma vai nogriezt piekļuvi pārvaldības saskarnei uz porta 15672. Katrs no tiem noņem vai nu pašu noslēpumu, vai ceļu līdz tam.
Otrā kļūda skar daudznomnieku serverus
Kopā ar galveno kļūdu tika izlabota arī CVE-2026-57221 ar CVSS 5.3. Tā ļauj jebkuram pieteiktam lietotājam uzskaitīt rindas un apmaiņas punktus un lasīt to statistiku pāri virtuālo saimnieku robežām, kurām vajadzēja lietotāju norobežot. RabbitMQ virtuālie saimnieki (vhosts) ir tieši tas mehānisms, ar ko vienā brokerī nošķir dažādu komandu vai klientu datus. No caurspīdīgās statistikas var izzīmēt organizācijas iekšējo uzbūvi un secināt, kuras sistēmas ir aktīvas un cik noslogotas — noderīgs materiāls nākamajam uzbrukumam. Labojums ir tajās pašās versijās.
Cik plaša ir problēma
RabbitMQ tiek lejupielādēts vairāk nekā 15 miljonus reižu gadā, un Miggo apgalvo, ka 8% no visiem konteineriem, kas darbojas uz planētas, pastāv, lai darbinātu RabbitMQ. Skartas ir 3.13.0 un jaunākas versijas, tātad viss, kas iznācis kopš 2024. gada sākuma. Aktīvu izmantošanu savvaļā līdz šim neviens nav dokumentējis, tāpēc laika atjaunināties ir. Taču galapunkts, kas atdod noslēpumu bez paroles, ir triviāli pārbaudāms — ikviens var nosūtīt vienu pieprasījumu un redzēt, vai serveris atbild, tāpēc atklātie serveri kļūst par mērķi ātri.
Praktiskais solis administratoram ir īss. Pārbaudi, vai brokeris izmanto OAuth 2 ar klienta noslēpumu un vai pārvaldības spraudnis ir ieslēgts. Ja jā — atjaunini uz kādu no labotajām versijām vai vismaz nogriez portu 15672 no ārpasaules, līdz to izdari. SecurityWeek norāda, ka kļūda kodā nostāvēja vairāk nekā divus gadus, pirms to kāds pamanīja — un pamanīja to nevis cilvēks, bet automātisks skeneris, kas salīdzināja galapunktus citu ar citu.
Komentāri
Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.