SurrealDB 20. jūlijā publicēja divus drošības brīdinājumus par savu datubāzi. Bīstamākais no tiem, CVE-2026-63763, ļauj lietotājam ar parastu redaktora lomu iegūt root līmeņa piekļuvi un pilnībā pārņemt serveri. Kļūdai piešķirts CVSS novērtējums 8,8 no 10. Abas kļūdas atklātas vienā dienā. Abas atrodas datubāzes vaicājumu apstrādē. Otrā kļūda apgāž serveri, taču prasa atsevišķi ieslēgtu iespēju.
SurrealDB ir Rust valodā rakstīta daudzmodeļu datubāze. Tā apvieno dokumentu, grafa un relāciju pieejas zem vienas vaicājumu valodas SurrealQL. Abas jaunās kļūdas atrodas tieši šajā vaicājumu slānī. Labojumi jau ir pieejami laidienos 2.5.0, 2.6.1 un 3.0.0-beta.3.
SurrealDB pirmo stabilo versiju 1.0 izlaida 2023. gadā. To bieži izmanto reāllaika lietotnēm, kur klienti raksta tieši datubāzē. Tieši šādā uzstādījumā parastam lietotājam var būt tiesības rediģēt datus.
Kā parasts lietotājs kļūst par root
SurrealDB atļauj datu laukos glabāt dinamiskas izteiksmes. Tās var būt futures, funkcijas vai closures. Šādu lauku var uzrakstīt tā, ka tas neko neglabā fiksētu, bet aprēķina vērtību brīdī, kad kāds nolasa vai raksta ierakstu. Tāpēc datubāzē tiek turēts kods, ne tikai dati.
Lauks ar future izskatās kā parasts datu lauks, taču satur izteiksmi figūriekavās. Tas var izsaukt funkciju, kas vaicā citu tabulu vai izveido jaunu ierakstu. Tā kā izteiksme izpildās lasītāja tiesībās, redaktora ieliktā funkcija iegūst piekļuvi datiem un darbībām, kuras pašam redaktoram ir liegtas.
SurrealDB tiesības ir sakārtotas līmeņos. Sistēmas lietotājiem ir lomas OWNER, EDITOR un VIEWER root, nosaukumtelpas vai datubāzes līmenī. Redaktors drīkst lasīt un rakstīt datus, taču nedrīkst pārvaldīt citus lietotājus. Tieši šo robežu kļūda apiet.
Problēma slēpjas izpildes kontekstā. Šīs izteiksmes darbojas tā lietotāja tiesībās, kas ierakstu vaicā. Tās neizmanto sava autora tiesības. Tas paver skaidru uzbrukuma ceļu. Uzbrucējs ar datubāzes redaktora lomu izveido lauku, kurā ieliek ļaunu loģiku. Kad augstāka līmeņa lietotājs vēlāk atver šo ierakstu, kods nostrādā viņa tiesībās. Šādā veidā var izveidot jaunu root īpašnieku un pārņemt visu instalāciju.
Drošības pasaulē šo shēmu sauc par apjukušo vietnieku (confused deputy). Programma ar plašām tiesībām veic darbību mazāk tiesīga uzbrucēja labā. NVD kļūdu klasificē kā CWE-639, kas apzīmē autorizācijas apiešanu caur lietotāja kontrolētu atslēgu.
Uzbrucējs neuzlauž paroli un neapiet pieteikšanos. Viņš liek pašai sistēmai izpildīt savu kodu ar svešām, augstākām tiesībām.
Uzbrukums prasa, lai upuris ar plašākām tiesībām pieskartos bojātajam ierakstam. Datubāzē ar administratoriem, kuri regulāri lasa un rediģē lietotāju datus, tas ir reāls scenārijs, ne tikai teorija.
Otrā kļūda apgāž serveri ar vienu virkni
Otrā ievainojamība, CVE-2026-63762, ir vieglāka pēc smaguma ar CVSS 6,5. Tā skar iebūvēto JavaScript dzinēju, kuru ieslēdz ar karogu --allow-scripting. Pēc noklusējuma šī iespēja ir izslēgta, tāpēc lielāko daļu instalāciju kļūda neskar.
Ja skriptēšana ir ieslēgta, lietotājs var uzbūvēt ļoti garu teksta virkni un padot to JavaScript izpildlaikam kompilēšanai. QuickJS-NG dzinī tas izraisa null pointer dereferenci. Serveris apstājas uzreiz, bez korektas izslēgšanas. Rezultāts ir pilnīga pakalpojuma nepieejamība. To var izsaukt jebkurš lietotājs ar tiesībām palaist skriptus.
Labojums nomaina bibliotēku rquickjs no versijas 0.9.0 uz 0.11.0. Kļūdas cēlonis tātad ir SurrealDB izmantotā skriptēšanas atkarība. Tieši tāpēc DoS labojums parādās versijā 2.6.1, kamēr tiesību eskalāciju aizver jau 2.5.0.
SurrealDB atkārtoti klupst uz vaicājumu slāņa
Šī nav pirmā reize, kad SurrealDB drošības problēmas rodas tieši vaicājumu apstrādē. 2025. gadā tika labota SurrealQL injekcija caur eksporta funkciju versijās līdz 2.2.2 (CVE-2025-71392). Vēl agrāk, versijās līdz 1.5.5, RPC API ļāva ievadīt svešu vaicājumu (CVE-2024-58362). Jaunie brīdinājumi turpina to pašu tēmu. SurrealQL dod lietotājiem plašas iespējas ietekmēt datu apstrādi. Katra jauna iespēja glabāt izpildāmu kodu datubāzē paplašina uzbrukuma virsmu.
Šis ir kompromiss, kas jāapzinās katram, kas SurrealDB izmanto ražošanā. Iespēja rakstīt loģiku tieši laukos padara datu modeli spēcīgu. Tā pati iespēja prasa stingru tiesību pārbaudi ap katru izpildāmo izteiksmi. CVE-2026-63763 rāda, kas notiek, kad šī pārbaude izpildās nepareizā kontekstā.
Kas jādara tagad
SurrealDB iesaka atjaunināt uz 2.5.0, 2.6.1 vai 3.0.0-beta.3. Privilēģiju eskalācija ir aizvērta no versijas 2.5.0, DoS kļūda no 2.6.1. Instalēto versiju var pārbaudīt ar komandu surreal version. Kas atrodas zem 2.6.1, skar vismaz viena no abām kļūdām.
Ja atjaunināšana kavējas, risku var samazināt ar diviem soļiem. Pirmkārt, ierobežo redaktora lomas lietotājiem tiesības veidot funkcijas un closures. Otrkārt, turi karogu --allow-scripting izslēgtu, ja skriptēšana nav vajadzīga. Publiskas ekspluatācijas pazīmes līdz šim nav ziņotas, taču abu kļūdu tehniskais apraksts jau ir atklāts CVE reģistrā.
Komentāri
Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.