Skip to main content

Tianji CVE-2026-55239

| EUVDEUVD-2026-102244 HIGH
SQL Injection (CWE-89)
2026-10-15 GitHub_M
8.8
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain authenticated workspace viewer account
  2. Delivery
    Craft malicious timezone HTTP header
  3. Exploit
    Reach getDateQuery() analytics query
  4. Execution
    Inject arbitrary SQL via Prisma.sql interpolation
  5. Impact
    Disclose or modify credentials and tenant data

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Parameterized queries, prepared statements
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Persistence

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

The attacker must hold a valid authenticated account on a Tianji workspace; the lowest-possible role - a read-only viewer - is sufficient, because workspaceProcedure authorizes any workspace member to reach the affected analytics queries. Exploitation requires supplying a crafted timezone value either through analytics request data or the 'timezone' HTTP header, which getDateQuery() interpolates into raw SQL via Prisma.sql() without parameter binding. No non-default configuration, feature flag, or user interaction is needed - the vulnerable code path is reachable in a stock installation. The sole limiting factor is the need for workspace membership (PR:L): fully anonymous, unauthenticated exploitation is NOT possible, which meaningfully constrains exposure on single-user or tightly-invited instances versus open-signup or many-tenant deployments.

Impact

The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H, base 8.8) is internally consistent with the description: a network-reachable SQL injection (CWE-89) requiring only low privileges - any authenticated workspace member, explicitly including a read-only viewer - and no user interaction, yielding full confidentiality, integrity, and availability impact on the shared PostgreSQL database. The low PR:L requirement is the key driver: this is not a pre-auth flaw, but the trust boundary it crosses is very low because even read-only viewers can trigger it, effectively nullifying Tianji's role separation. No EPSS score, CISA KEV listing, SSVC decision data, or public POC was provided in the input; per the precision rules this is therefore 'no public exploit identified at time of analysis.' However, the vendor security advisory (GHSA-v9jm-vvrj-53c4) and a reviewable fix commit are published, and the injection mechanism (unparameterized timezone interpolation reachable via an HTTP header) is low-complexity and well understood, so working exploitation is realistically straightforward to reconstruct from the patch. Net assessment: this is a genuine priority for any organization running a multi-tenant or multi-user Tianji instance, tempered only by the facts that it requires a valid low-privilege account (not internet-wide anonymous exploitation) and that Tianji's real-world deployment footprint is modest. The absence of EPSS/KEV signals reflects missing data, not evidence of low risk - do not read it as reassurance.

Exploit ScenarioDerived

An attacker holding (or able to obtain) any authenticated workspace account on a Tianji instance - even a read-only viewer invite - sends an analytics request with a crafted timezone HTTP header. The malicious timezone string is interpolated unparameterized into raw SQL by getDateQuery(), letting the attacker read or alter credentials, API keys, and other tenants' data in the shared PostgreSQL database, or crash the service. No public exploit is identified at time of analysis, but the fix commit publicly reveals the vulnerable interpolation pattern.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 15, 2026

Authenticated SQL injection in Tianji before 1.31.29 allows any workspace member - even a read-only viewer - to execute arbitrary SQL against the shared PostgreSQL database by supplying a crafted timezone value through analytics request data or the timezone HTTP header. The getDateQuery() helper in src/server/utils/prisma.ts interpolates that value into raw SQL via Prisma.sql() without parameter binding, so an attacker can disclose or modify credentials, API keys and tenant data, or make the service unavailable. No public exploit code has been identified at time of analysis; the vendor-released fix is 1.31.29.

RemediationAI

Vendor-released patch: 1.31.29. Upgrade Tianji to 1.31.29 or later, per the release tag v1.31.29, the upstream fix commit 132ff67907df897d222829ea8ad1a018ff74df48, and advisory https://github.com/msgbyte/tianji/security/advisories/GHSA-v9jm-vvrj-53c4. Where immediate upgrade is not possible, reduce exposure by treating every workspace account as potentially privileged: revoke or downgrade read-only viewer accounts that do not need access, restrict workspace membership and disable open signup, and run the application with a least-privilege PostgreSQL role that cannot read or alter credential and API-key tables and has no superuser or CREATEROLE rights - noting this limits blast radius but does not remove the injection. A reverse proxy can strip, strictly validate, or normalize the timezone header and reject requests containing unexpected characters, but this is brittle, will break legitimate timezone switching, and does not cover the request-body path. Also monitor database logs for anomalous SQL and review stored credentials and API keys for signs of tampering.

Affected VersionsENISA

tianji < 1.31.29

Affected Packages

euvd tianji fix: 1.31.29

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The flaw is CWE-89 SQL injection in Tianji's analytics/insights query layer. getDateQuery() builds a Prisma.sql() fragment by string-interpolating the caller-controlled timezone (from request payloads or the HTTP timezone header) rather than binding it as a query parameter, allowing attacker text to become SQL syntax. Because the affected queries run against the shared PostgreSQL instance using the application's database role, injected statements operate with the privileges of the Tianji service account rather than an isolated tenant schema. Reachability requires an authenticated workspace membership, since workspaceProcedure gates the analytics endpoints; the CVSS vector PR:L confirms low-privilege access is sufficient and the independent assessment notes a read-only viewer role is enough, with no feature flag or non-default configuration needed. The upstream fix (commit 132ff67907df897d222829ea8ad1a018ff74df48, released as v1.31.29) introduces quoteSqlIdentifier/quoteSqlIdentifierPath helpers and routes metric aliases, group values and column names through them, which the commit's tests confirm by asserting that injected fragments such as (SELECT current_database()) no longer appear unescaped in generated SQL.

Know when Tianji gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 8.8 HIGH
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
vuln.today AI 8.8 HIGH

Reachable over the network via HTTP header with low complexity; requires a low-privilege authenticated workspace viewer (PR:L), and arbitrary SQL on the shared DB yields full C/I/A impact.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

2
Patch available
Oct 15, 2026 - 19:18 EUVD
CVE Published
Oct 15, 2026 - 18:14 cve.org
HIGH 8.8

DescriptionCVE.org

Tianji is an open source analytics, uptime monitoring, and server status platform. Prior to 1.31.29, the getDateQuery() function in src/server/utils/prisma.ts constructs raw SQL through Prisma.sql() by interpolating the timezone request value without parameter binding. The timezone value can reach affected analytics queries through request data or the timezone HTTP header, and workspaceProcedure permits any authenticated workspace member, including a read-only viewer, to reach those queries. An attacker can execute arbitrary SQL against the shared PostgreSQL database, which can disclose or modify credentials, API keys, and tenant data or make the service unavailable. This issue is fixed in version 1.31.29.

Technical POC Analysis

CWE-89 (SQL injection), caused by string interpolation of request-controlled data into raw SQL.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

A SQL injection flaw in the Tianji analytics platform allows any workspace member - including read-only viewers - to run arbitrary queries against the shared PostgreSQL database, exposing or altering credentials, API keys, and other tenants' data. Because that database typically holds credentials for many downstream integrations, a single low-privilege user account could escalate into broad, cross-tenant compromise of monitoring data and connected systems. No public exploit code has been identified at time of analysis, but a vendor fix exists and should be prioritized.

Business Impact: High
Compensating Controls

Apply vendor patch (Tianji 1.31.29). Until deployed, minimize and audit workspace membership, rotate all secrets reachable from the Tianji PostgreSQL instance, and monitor or block anomalous timezone-header and analytics-request traffic.

Threat Intelligence Overview

EPSS Score
0.3%
Top 74% exploitable
Prevalence
Low
niche self-hosted open-source analytics/uptime tool, modest deployment footprint
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
High

Priority Score

44
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +44
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

SQL injection exploits the way applications construct database queries by mixing user input directly into SQL statements.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy