Visi rezultāti

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

6.1

/ 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:

shell
1curl -sk -b "$JAR" "https://127.0.0.1:8443/upload" \2  -F "source=demo" -F "format=json" -F "field=name" \3  -F "startTime=2024-01-01T00:00:00.000Z" \4  -F "endTime=2030-01-01T00:00:00.000Z" \5  -F "file=@/tmp/p.txt;filename=<img src=x onerror=alert(1)>.txt"
1. fragmentsReproducēšana pirms labojuma: payload tiek saglabāts un izpildās, kad tiek attēlots profila augšupielāžu saraksts.

§ 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:

go
1reSafeFilename = regexp.MustCompile(`^[A-Za-z0-9 ._-]{1,200}$`)

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

  1. 2026-05-14OffSeq ziņo CERT.LV par saglabāto XSS un iesniedz labojumu pamatprojektā (PR #10)
  2. 2026-10-20Labojumu pārskata un iekļauj CERT.LV uzturētāji

Atsauces

Atzinība

Atklāja, ziņoja un novērsa Nils Putniņš (OffSeq Cybersecurity).

Kā mēs pārbaudītu jūsu vidi

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

Vai jūsu vidē pastāv līdzīgs risks?

support@offseq.com+371 2256 5353