Skip to main content

Titra CVE-2025-69288

CRITICAL
Improper Input Validation (CWE-20)
2025-12-31 security-advisories@github.com
9.1
CVSS 3.1 · NVD
View

Attack ChainAIDerived

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

  1. Access
    Authenticate as Titra Admin
  2. Delivery
    Edit timeEntryRule global setting with malicious JS
  3. Exploit
    Value passed unsanitized to NodeVM
  4. Execution
    Sandbox escape executes code on host
  5. Impact
    Full RCE (potentially as root)

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V2 - Validation and Business Logic Input validation, allowlisting
Exploitation Conditions

Requires an authenticated account with Admin privileges in Titra prior to version 0.99.49 (PR:H). The specific prerequisite is write access to the global 'timeEntryRule' setting, whose string value is passed unsanitized into a NodeVM sandbox and executed as JavaScript. The limiting factor is the admin authentication requirement - a non-admin or unauthenticated attacker cannot reach the vulnerable setting. Impact is worsened in default Docker deployments where, prior to the fix, the process ran as root. No user interaction beyond the admin's own action is needed.

Impact

The vendor CVSS of 9.1 (AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H) reflects a full-triad remote code execution, but the single most important mitigating signal is PR:H - exploitation requires an already-authenticated Admin account, per both the description ('any authenticated Admin user') and the vector. This is therefore an admin-to-host escalation (breaking out of the NodeVM sandbox to run OS-level code) rather than an unauthenticated internet-facing RCE, which materially lowers real-world risk. POC/exploit detail is publicly available via the GitHub Security Advisory (GHSA-pqgx-6wg3-gmvr), so publicly available exploit information exists, but this is NOT confirmed active exploitation - the CVE is not in CISA KEV. No EPSS score or SSVC decision data was provided. The commit confirms the root cause: the timeEntryRule global setting was passed to a NodeVM for execution without sanitization; the fix adds validateSandboxCode() denylist screening and, notably, a Dockerfile change to drop from root to USER node - implying pre-patch code execution could occur as root, raising impact severity where the default container was used. Net: a genuine high-severity RCE but gated behind admin trust, so it is a priority for Titra operators to patch yet not a mass-exploitation candidate.

Exploit ScenarioDerived

An attacker who has obtained or been granted Titra Admin credentials edits the global 'timeEntryRule' setting, injecting JavaScript that escapes the NodeVM sandbox (e.g., via constructor/prototype chain or module access) to execute arbitrary code on the server host. Because pre-patch containers ran as root, the payload could run with full privileges. Exploit details are publicly documented in the GitHub Security Advisory, lowering the effort to weaponize.

Act Now Prioritize within 24-48h. Why: CRITICAL severity + public POC available.
Patch available 0.8% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Sep 23, 2026

Remote code execution in Titra time-tracking software prior to version 0.99.49 allows an authenticated Admin user to inject arbitrary JavaScript through the global 'timeEntryRule' setting, which is passed unsanitized into a NodeVM sandbox and executed on the server. Because the weakness sits behind the admin login boundary (CVSS vector PR:H), a non-admin or unauthenticated attacker cannot reach the vulnerable setting, but any holder of an Admin account achieves full confidentiality, integrity, and availability impact across the host - worsened in default Docker deployments where the process historically ran as root. Publicly available exploit code exists and the vendor has released a fix in 0.99.49, so this should be treated as a high-priority patch for internet-exposed instances with multiple administrators.

RemediationAI

Upgrade Titra to version 0.99.49 or later (vendor-released patch); the fix commit is https://github.com/kromitgmbh/titra/commit/2e2ac5cbeed47a76720b21c7fde0214a242e065e and the tagged release is at https://github.com/kromitgmbh/titra/releases/tag/0.99.49, with full details in advisory GHSA-pqgx-6wg3-gmvr. For environments that cannot patch immediately, the most effective compensating control is to tightly restrict who holds the Admin role, since exploitation is gated entirely on PR:H and requires the ability to write the 'timeEntryRule' global setting - audit admin accounts, remove stale or shared administrators, and disable public self-registration or any path that could grant admin. Additionally, redeploy the container to run as a non-root user (the patched Dockerfile does this via chown/USER node); running as root turns a successful injection into a host-level compromise, whereas a non-root process confines blast radius, though it does not by itself prevent the injected code from running inside the application context. If the timeEntryRule feature is not actively used, removing or emptying that setting removes the injection vector altogether at the cost of disabling custom time-entry logic. Because publicly available exploit code exists for the pre-fix pattern, combine the upgrade with a review of admin activity logs and any outbound network connections from the Titra host for signs of post-exploitation, and avoid exposing the administrative interface directly to the internet while remediation is in progress.

Affects your stack

Find out whether the stacks and servers you run are on an affected version.

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

Technical ContextAI · show details

Titra is a Meteor/Node.js application, and its time-entry business rules are configured through a global setting named 'timeEntryRule'. Versions before 0.99.49 accepted that string from the admin UI and passed it directly into a NodeVM sandbox for execution as live JavaScript. The root cause is CWE-20 (Improper Input Validation): the application never constrained the content of the setting before handing it to a code-execution engine, so the value could escape the intended rule logic and reach Node.js internals. The commit making the fix is telling - it introduces a validateSandboxCode() helper in imports/utils/vm_sandbox.js that rejects dangerous patterns (process, global, require of fs/child_process/vm/repl, eval, new Function, constructor chains, __proto__, Buffer, __dirname/__filename, module/require introspection, plus unicode/hex obfuscation of eval), enforces a 50KB length cap, and re-parses the code for valid syntax before execution; it also wires the validator into the updateGlobalSettings Meteor method for the timeEntryRule field. Critically, the same commit alters the Dockerfile to add 'RUN chown -R node:node /app' and 'USER node', removing the former root context that magnified post-exploitation impact. The blacklist-plus-syntax-check approach is defense-in-depth rather than a hard sandbox boundary, which is why version parity matters rather than relying on the pattern list alone.

Know when Titra 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

NVD PRIMARY 9.1 CRITICAL
AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H
vuln.today AI 9.1 CRITICAL

Admin authentication needed so PR:H; network-reachable web setting with no added complexity (AV:N/AC:L); NodeVM sandbox escape to host OS justifies S:C and full C/I/A:H.

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

Primary rating from NVD.

CVSS VectorNVD

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

DescriptionNVD

Titra is open source project time tracking software. Prior to version 0.99.49, Titra allows any authenticated Admin user to modify the timeEntryRule in the database. The value is then passed to a NodeVM value to execute as code. Without sanitization, it leads to a Remote Code Execution. Version 0.99.49 fixes the issue.

Executive ViewAI

Why It Matters

Titra time-tracking software versions prior to 0.99.49 contain a critical remote code execution flaw that allows an authenticated administrator to execute arbitrary code on the server, potentially compromising the entire host and all data it holds. Publicly available exploit code exists, and organizations running internet-exposed Titra instances with multiple administrators face risk of full system takeover, data theft, and operational disruption, especially in default Docker deployments where the process historically runs as root. Leadership should prioritize patching because a single compromised admin credential can lead to complete loss of confidentiality, integrity, and availability across affected systems.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.8%
Top 44% exploitable
Prevalence
Low
niche open-source Node.js/Meteor time-tracking app, limited enterprise footprint
Exploit
POC
Public exploit code exists
Data Quality
3 sources
Confidence: Low

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 CRITICAL
CISA KEV No
Public POC Yes
EPSS 0.8%
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity + public POC available
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
Poc
System Exposure· derived
Open
Automatable· derived
No
Human Impact
High

Priority Score

67
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +46
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.

Affected Products (CPE)NVD

cpe:2.3:a:kromit:titra:*:*:*:*:*:*:*:*

More in Titra

View all
CVE-2022-2595 CRITICAL POC
10.0 Aug 01

Improper Authorization in GitHub repository kromitgmbh/titra prior to 0.79.1. Rated critical severity (CVSS 10.0), this

CVE-2022-2098 CRITICAL POC
9.8 Jun 16

Weak Password Requirements in GitHub repository kromitgmbh/titra prior to 0.78.1. Rated critical severity (CVSS 9.8), th

CVE-2022-2027 HIGH POC
8.0 Jun 09

Improper Neutralization of Formula Elements in a CSV File in GitHub repository kromitgmbh/titra prior to 0.77.0. Rated h

CVE-2026-21694 MEDIUM POC
6.8 Jan 08

Unauthorized access control in Titra versions 0.99.49 and earlier enables authenticated users to view and modify time en

CVE-2022-2029 MEDIUM POC
5.4 Jun 09

Cross-site Scripting (XSS) - DOM in GitHub repository kromitgmbh/titra prior to 0.77.0. Rated medium severity (CVSS 5.4)

CVE-2022-2028 MEDIUM POC
5.4 Jun 09

Cross-site Scripting (XSS) - Generic in GitHub repository kromitgmbh/titra prior to 0.77.0. Rated medium severity (CVSS

CVE-2022-2026 MEDIUM POC
5.4 Jun 09

Cross-site Scripting (XSS) - Stored in GitHub repository kromitgmbh/titra prior to 0.77.0. Rated medium severity (CVSS 5

CVE-2026-21695 MEDIUM POC
4.3 Jan 08

Titra time tracking software versions 0.99.49 and below contain a mass assignment vulnerability in their API that allows

CVE-2026-42092 MEDIUM
6.5 May 04

titra 0.99.52 leaks sensitive global configuration settings to any authenticated user via an unprotected Meteor DDP publ

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