Ievainojamības atklāšana
Saglabātā starpvietņu skriptošana CERT.LV rīkā Graphoscope caur augšupielādes failu nosaukumiem
Graphoscope (v2.6.1) – CERT.LV
OffSeq atklāja saglabātās starpvietņu skriptošanas (XSS) ievainojamību Graphoscope – CERT.LV publicētajā atvērtā koda platformā, kas ļauj no vienas saskarnes veikt vaicājumus daudzos neatkarīgos datu avotos un attēlot to sakarības grafā. Augšupielādētā faila nosaukums tika saglabāts nemainīts un attēlots ar innerHTML, tādēļ indikatoru fails ar īpaši veidotu nosaukumu izpildīja skriptu tā analītiķa sesijā, kurš to augšupielādēja. OffSeq ziņoja par ievainojamību CERT.LV un iesniedza labojumu, ko CERT.LV iekļāva projektā.
OffSeq
2 min lasīšanai
Kritiskums: VidējsCVSS 6.1cert-lv/graphoscope#10
Galvenie fakti
- Klase
- Saglabātā starpvietņu skriptošana (CWE-79)
- Kritiskums
- Vidējs
- CVSS
- 6.1
- Mērķis
- Graphoscope
- Ražotājs
- CERT.LV
- Skartā daļa
- v2.6.1 (a2a794e) – /upload faila nosaukuma apstrāde
- Novērsts
- cert-lv/graphoscope PR #10 (sapludināts, commit 65bd04a)
- Statuss
- Novērsts sākotnējā projektā
- Loma
- Ziņotājs un labojuma autors
CVSS bāzes vērtējums
/ 10Vidējs
Katrs vērtējums veidojas no astoņiem vienkāršiem jautājumiem par to, kā uzbrukums darbojas un ko tas jums izmaksā.
Cik grūti to izmantot
Ko uzbrucējs var paveikt
Izvēlieties metriku, lai redzētu, ko tā nozīmē
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
§ 01. Pārskats
Graphoscope ir CERT.LV atvērtā koda analīzes platforma. Analītiķi no vienas tīmekļa saskarnes veic vaicājumus daudzos neatkarīgos datu avotos – pasīvajā DNS, klientu datubāzēs, nopludinātu piekļuves datu kopās un citos – un redz rezultātus kā saistītu entītiju grafu. Papildus interaktīvai meklēšanai lietotāji var augšupielādēt indikatoru sarakstu pakešapstrādei: serveris veic vaicājumus visos pieslēgtajos avotos un atgriež apstrādātu pārskatu.
OffSeq konstatēja, ka augšupielādētā faila nosaukums no augšupielādes pieprasījuma atgriezās lapā bez validācijas vai kodēšanas, tādēļ īpaši veidots faila nosaukums kļuva par saglabātu skriptu augšupielādētāja Graphoscope sesijā.
§ 02. Cēlonis
/upload apstrādātājs ņēma header.Filename – multipart galvenes Content-Disposition vērtību filename=, ko pilnībā kontrolē klients – un saglabāja to MongoDB (users.uploads.in). Pēc tam tā pati virkne caur WebSocket tika nosūtīta atpakaļ paša augšupielādētāja sesijām ziņojumos uploaded, upload-processed un upload-lists, un serveris to iekļāva arī paziņojumu tekstā.
Klienta pusē assets/js/notifications.js un assets/js/user-actions.js šīs vērtības ierakstīja lapā ar innerHTML. Tādēļ jebkurš marķējums faila nosaukumā tika apstrādāts kā HTML:
§ 03. Ietekme
Faila nosaukums tiek atgriezts tikai kontam, kas to augšupielādēja, tāpēc uzbrucējs failu neaugšupielādē pats – viņš panāk, ka to izdara analītiķis. Tā ir platformas ierastā darba plūsma: analītiķi augšupielādē indikatoru sarakstus, ko kopīgojuši partneri un citas komandas. Saraksts ar īpaši veidotu nosaukumu izpilda skriptu analītiķa sesijā, tiklīdz viņš to augšupielādē, un atkal ikreiz, kad tiek attēlots viņa profila augšupielāžu saraksts. Uzbrucējam nav vajadzīgs Graphoscope konts; Linux un macOS pieļauj <, > un pēdiņas failu nosaukumos, tāpēc nosaukums piegādes laikā saglabājas.
Platformā, kas apkopo organizācijas izlūkošanas avotus, skripts analītiķa sesijā var nolasīt vaicājumu rezultātus, indikatoru sarakstus un visu pārējo, ko saskarne šim lietotājam rāda, kā arī rīkoties saskarnē viņa vārdā. Sesijas sīkdatnes ir HttpOnly un SameSite=Strict, tāpēc skripts nevar nolasīt sesijas sīkdatni, un neviena cita vietne nevar izraisīt augšupielādi.
§ 04. Labojums
OffSeq iesniedza labojumu, kas problēmu novērš jau servera pusē, failā upload.go. Apstrādātājs tagad iesniegtajam nosaukumam piemēro filepath.Base() un pieņem to tikai tad, ja tas atbilst stingram atļauto simbolu sarakstam:
Neatbilstošs nosaukums tiek noraidīts, pirms jebkas tiek ierakstīts augšupielādes rindā vai MongoDB, izmantojot to pašu atbildes ceļu kā pārējās apstrādātāja kļūdas. Parasti nosaukumi, piemēram, indicators.txt vai IOCs - 2026-05.csv, tiek augšupielādēti kā līdz šim.
Tā kā saglabātajā vērtībā nekas bīstams vairs nenonāk, uzbrukuma vektora novēršanai saskarnes izmaiņas nebija vajadzīgas. Tā pati pārbaude bloķē arī ceļa daļas un NUL vai vadības simbolus nosaukumos. Atlikušo innerHTML izsaukumu aizstāšana ar textContent tika ieteikta kā atsevišķs papildu aizsardzības darbs. CERT.LV izmaiņas iekļāva kā izmaiņu pieprasījumu #10.
§ 05. Atklāšanas hronoloģija
- 2026-05-14OffSeq ziņo CERT.LV par saglabāto XSS un iesniedz labojumu pamatprojektā (PR #10)
- 2026-10-20Labojumu pārskata un iekļauj CERT.LV uzturētāji
Atsauces
- Labojums sākotnējā projektā: cert-lv/graphoscope commit 65bd04a (atveras jaunā cilnē) (https://github.com/cert-lv/graphoscope/commit/65bd04af79d56b0643d6c31f970e90a16885f80d)
- Izmaiņu pieprasījums: cert-lv/graphoscope #10 (atveras jaunā cilnē) (https://github.com/cert-lv/graphoscope/pull/10)
- Graphoscope pirmkoda repozitorijs (CERT.LV) (atveras jaunā cilnē) (https://github.com/cert-lv/graphoscope)
- CWE-79: Starpvietņu skriptošana (atveras jaunā cilnē) (https://cwe.mitre.org/data/definitions/79.html)
- OWASP – XSS novēršanas rokasgrāmata (atveras jaunā cilnē) (https://cheatsheetseries.owasp.org/cheatsheets/Cross_Site_Scripting_Prevention_Cheat_Sheet.html)
Atzinība
Atklāja, ziņoja un novērsa Nils Putniņš (OffSeq Cybersecurity).
Citi rezultāti
Piekļuve citu lietotāju pārskatiem CERT.LV rīkā Graphoscope
OffSeq atklāja horizontālu autorizācijas apiešanu Graphoscope – CERT.LV publicētajā atvērtā koda platformā, kas ļauj no vienas saskarnes veikt vaicājumus daudzos neatkarīgos datu avotos un attēlot to sakarības grafā. Pārskatu lejupielādes galapunkts pārbaudīja, vai lietotājs ir pieteicies, bet ne to, vai pieprasītais pārskats pieder viņam, tādēļ jebkurš analītiķis varēja nolasīt cita analītiķa augšupielādētos indikatorus un vaicājumu rezultātus. OffSeq ziņoja par ievainojamību CERT.LV un iesniedza labojumu, ko CERT.LV iekļāva projektā.
Ievainojamības atklāšana20262 min lasīšanai
Servera avārija CERT.LV rīkā Graphoscope, ja lietotājs atvienojas augšupielādes laikā
OffSeq atklāja pakalpojuma atteices ievainojamību Graphoscope – CERT.LV publicētajā atvērtā koda platformā, kas ļauj no vienas saskarnes veikt vaicājumus daudzos neatkarīgos datu avotos un attēlot to sakarības grafā. Ja lietotājs augšupielādēja indikatoru sarakstu un aizvēra savienojumu pirms apstrādes beigām, serveris dereferencēja nil WebSocket un avarēja, izrakstot visus lietotājus. To droši varēja izraisīt jebkurš pašreģistrēts konts. OffSeq ziņoja par ievainojamību CERT.LV un iesniedza labojumu, ko CERT.LV iekļāva projektā.
Ievainojamības atklāšana20262 min lasīšanai
Attālināta koda izpilde OZOLS ERP sistēmā caur pamestu atjaunināšanas domēnu
CVE-2026-22306 ir kritiska attālinātas koda izpildes ievainojamība, ko OffSeq atklāja OZOLS ERP sistēmā. Tās automātiskās atjaunināšanas kanāls ieguva un palaida programmkodu no its2.lv (domēna, ko ražotājs bija ļāvis izbeigties, bet kas joprojām bija iekodēts katrā piegādātajā klientā), pa atklātu HTTP bez paraksta, jaucējsummas vai sertifikāta pārbaudes. whois pieprasījums rādīja, ka domēns ir brīvi reģistrējams, tādēļ ikviens, kas to reģistrēja, varēja izpildīt kodu SQL Server servisa konta kontekstā uz klientu datubāzēm un, izmantojot paša OZOLS atjauninājumu izplatīšanas tabulu, uz katras darbstacijas. OffSeq aizsardzības nolūkā reģistrēja pamesto domēnu, lai novērstu ļaunprātīgu pārņemšanu.
Ievainojamības atklāšana20266 min lasīšanai
