All results

Vulnerability disclosure

Cross-user report access in CERT.LV’s Graphoscope

Graphoscope (v2.6.1) – CERT.LV

OffSeq found a horizontal authorisation bypass in Graphoscope, the open-source platform CERT.LV publishes for querying many independent data sources from one interface and showing their relations as a graph. The report download endpoint checked that a user was signed in but not that the requested report was theirs, so any analyst could read another analyst's uploaded indicators and query results. OffSeq reported the issue to CERT.LV and contributed the fix, which CERT.LV merged.

OffSeq

2 min read

Severity: MediumCVSS 5.3cert-lv/graphoscope#11

Key facts

Class
Authorisation bypass through user-controlled key (CWE-639)
Severity
Medium
CVSS
5.3
Target
Graphoscope
Vendor
CERT.LV
Affected
v2.6.1 (a2a794e) – /download endpoint
Fixed in
cert-lv/graphoscope PR #11 (merged, commit 40760a5)
Status
Fixed upstream
Role
Reporter and fix author

CVSS base score

5.3

/ 10Medium

Every score is built from eight plain questions about how an attack works and what it costs you.

How hard it is to exploit

What the attacker can do

Select a metric to see what it means

CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:N

§ 01. Overview

Graphoscope is CERT.LV's open-source analysis platform. Analysts query many independent data sources – passive DNS, client databases, leaked-credential sets and others – from one web interface and see the results as a graph of related entities. A user can upload a list of indicators for batch processing; the server queries every connected source and stores the result as a report the user downloads later.

OffSeq found that the download endpoint did not tie a report to its owner. Any signed-in user could retrieve any other user's processed report.

§ 02. Root cause

downloadHandler verified only that the request carried a valid session and that the requested name contained neither .. nor /. It then served the file with http.ServeFile from upload/processed/ – with no check that the requester owned it.

Report names are not secret. They follow a deterministic <timestamp>-<original-name> pattern, with the timestamp taken from a one-second clock, so the timestamp can be enumerated and only the original filename has to be guessed:

shell
1# account B downloads account A's processed report2curl -sk -b attacker.jar \3  "https://HOST:8443/download?file=20260514-102943%2B03-victim-secret.txt" \4  -o stolen.bin5# HTTP 200 – the victim's full graph and indicator data
Listing 1Pre-patch reproduction: a second account reads the first account's report.

Rejected requests also returned an empty response with no error status.

§ 03. Impact

A processed report contains the user's uploaded indicator list and the results of querying every connected data source. On a threat-intelligence platform that is sensitive by definition: it reveals which indicators an analyst is investigating and what the connected sources returned for them.

The attack needs only an ordinary account on the same instance – Graphoscope allows self-registration – and no interaction from the victim. Its one condition is the victim's original filename: names that analysts commonly use, such as indicators.txt or iocs.csv, make that guess practical, while a distinctive name makes it hard. That dependency is why the CVSS vector rates attack complexity as high.

§ 04. The fix

OffSeq contributed a fix in upload.go that authorises each download against the requester's own records:

  • the filename filter additionally rejects empty names, backslashes and NUL bytes;
  • the handler loads the requester's account and serves the file only if it appears in that account's Uploads.Out list;
  • rejected names and cross-user attempts return 404 Not Found and write a server-side log entry (Unauthorized download attempt).

Retesting showed the cross-user request returning 404 while the owner's own download still returned the 834-byte report unchanged. CERT.LV merged the change as pull request #11.

§ 05. Disclosure timeline

  1. 2026-05-14OffSeq reports the /download authorisation bypass to CERT.LV and submits a fix upstream (PR #11)
  2. 2026-10-19Fix reviewed and merged by the CERT.LV maintainers

References

Credit

Discovered, reported, and fixed by Nils Putniņš (OffSeq Cybersecurity).

How we would test your environment

More results

Remote code execution in the OZOLS ERP via an abandoned update domain

CVE-2026-22306 is a critical remote-code-execution flaw OffSeq found in the OZOLS ERP system. Its automatic update channel fetched and ran program code from its2.lv – a domain the vendor had allowed to lapse, yet still hardcoded in every shipped client – over cleartext HTTP with no signature, hash or certificate check. A whois lookup showed the domain free to register, so anyone who took it could run code as the SQL Server service account on customer databases and, through OZOLS's own update-propagation table, on every workstation. OffSeq registered the abandoned domain defensively to prevent a malicious takeover.

Vulnerability disclosure20267 min read

Stored cross-site scripting in CERT.LV’s Graphoscope via upload filenames

OffSeq found a stored cross-site scripting flaw in Graphoscope, the open-source platform CERT.LV publishes for querying many independent data sources from one interface and showing their relations as a graph. The name of an uploaded file was stored unchanged and rendered with innerHTML, so an indicator file with a crafted name ran script in the session of the analyst who uploaded it. OffSeq reported the issue to CERT.LV and contributed the fix, which CERT.LV merged.

Vulnerability disclosure20263 min read

Server crash in CERT.LV’s Graphoscope when a user disconnects during an upload

OffSeq found a denial-of-service flaw in Graphoscope, the open-source platform CERT.LV publishes for querying many independent data sources from one interface and showing their relations as a graph. A user who uploaded an indicator list and closed the connection before processing finished made the server dereference a nil WebSocket and crash, signing out every user. Any self-registered account could trigger it reliably. OffSeq reported the issue to CERT.LV and contributed the fix, which CERT.LV merged.

Vulnerability disclosure20263 min read

Have similar exposure in your environment?

support@offseq.com+371 2256 5353