Skip to main content

ITFlow EUVDEUVD-2026-82469

| CVE-2026-54596 HIGH
SQL Injection (CWE-89)
2026-09-17 GitHub_M
8.1
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Authenticate as Technician with invoice access
  2. Delivery
    Craft malicious frequency parameter
  3. Exploit
    POST to agent/post/recurring_invoice.php escaping DATE_ADD
  4. Execution
    Store subquery output in recurring_invoice_note
  5. Persist
    Read exfiltrated hashes via agent/recurring_invoice.php
  6. Impact
    Crack credentials for admin takeover

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

Requires an authenticated ITFlow account with the Technician role or higher AND access to at least one client invoice, on a version prior to 26.07. The injection is delivered via the 'frequency' POST parameter to agent/post/recurring_invoice.php, which stores recurring_invoice_frequency unquoted inside a DATE_ADD interval expression. No user interaction beyond the attacker's own request is needed for the primary injection; the second-order path additionally requires a legitimate user to invoke 'Force Recurring', which re-runs the persisted payload in a later UPDATE. Limiting factors: the PR:L authentication requirement (no unauthenticated access) and the need for invoice access confine this to insiders or attackers who have already compromised a technician credential.

Impact

This is a genuinely exploitable, high-value flaw but not a top-of-queue emergency. The CVSS 8.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N) is credible: network-reachable, low complexity, but requiring an authenticated Technician-or-higher account with access to at least one client invoice (PR:L). That authentication gate is the key limiter - this is not an unauthenticated internet-facing RCE. No EPSS score, KEV listing, or public exploit was supplied, so exploitation status is 'no public exploit identified at time of analysis'; there is no evidence of active exploitation or automatability. However, the vendor advisory (GHSA-f9m3-qjc9-v27j), the fixing PR #1284, the exact commit 721142629296ac8e335a79b32fd4d2df721234a8, and the v26.07 release are all confirmed, so the vulnerability and fix are well-substantiated. The impact ceiling is severe: the description states extraction of password hashes, SMTP credentials, user records, and DB metadata plus field modification and administrative takeover after credential cracking - consistent with C:H/I:H. A:N is appropriate since no availability impact is described. The realistic risk is post-authentication privilege escalation / full-database compromise by a lower-privileged insider (or an attacker who has phished/compromised a Technician account), amplified by the second-order vector where a different legitimate user's 'Force Recurring' action re-triggers the stored payload.

Exploit ScenarioDerived

An authenticated Technician who can view at least one client invoice submits a crafted 'frequency' value to agent/post/recurring_invoice.php; because the value is passed through sanitizeInput but interpolated unquoted into a DATE_ADD interval, the attacker escapes the expression, appends INSERT columns, and stashes subquery output (e.g. password hashes, SMTP creds) into recurring_invoice_note, then reads it back via agent/recurring_invoice.php. Because the malicious frequency is persisted, a later 'Force Recurring' UPDATE by any legitimate user re-executes the payload as a second-order injection. No public exploit code is identified, but the fixing PR pinpoints the exact vulnerable line, making reproduction straightforward.

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 – Sep 17, 2026

SQL injection in ITFlow versions prior to 26.07 allows an authenticated user with the Technician role or higher who has access to at least one client invoice to inject arbitrary SQL through the 'frequency' POST parameter handled by agent/post/recurring_invoice.php. The handler passes the value through sanitizeInput but then interpolates it unquoted inside a MySQL DATE_ADD interval expression, letting the attacker escape the interval, add INSERT columns, and store subquery results in recurring_invoice_note that are later rendered through agent/recurring_invoice.php; the persisted frequency value can also re-execute as a second-order injection when 'Force Recurring' runs it in a later UPDATE. Successful exploitation exposes password hashes, SMTP credentials, user records, and database metadata, permits modification of database fields, and can lead to administrative takeover after offline credential cracking; no public exploit code has been identified at time of analysis, and the flaw is not confirmed as actively exploited.

RemediationAI

Vendor-released patch: upgrade to ITFlow 26.07 (https://github.com/itflow-org/itflow/releases/tag/v26.07), which implements the fix from PR #1284 / commit 721142629296ac8e335a79b32fd4d2df721234a8 - the frequency parameter is now constrained to the allow-list values 'year' or 'month' rather than sanitized free text, with validateDate() also added for date fields and mysqli_real_escape_string() applied in logAction(). Verify the running build reports 26.07 in includes/app_version.php, since the patch branch itself only labels the interim build 26.05.1. If immediate upgrade is not possible, compensating controls with trade-offs include: temporarily revoke Technician-and-higher roles from all users who do not strictly require them, and remove client-invoice access from technician accounts where it is not operationally necessary (this restricts the insider/compromised-credential path the flaw requires, at the cost of reduced helpdesk capability); audit and clear existing recurring_invoice_frequency and recurring_invoice_note values in the database for any rows containing SQL syntax or unexpected content so that persisted second-order payloads cannot fire when 'Force Recurring' is next invoked, and avoid triggering 'Force Recurring' until that data is cleaned (this delays legitimate recurring invoicing); and monitor MySQL general/audit logs for anomalous DATE_ADD or INSERT statements originating from agent/post/recurring_invoice.php. Full advisory details are at https://github.com/itflow-org/itflow/security/advisories/GHSA-f9m3-qjc9-v27j. Post-upgrade, rotate database-adjacent secrets that could have been exposed - application user password hashes and SMTP credentials - since the injection can read credentials and database metadata.

Affected VersionsENISA

itflow < 26.07

Affected Packages

euvd itflow fix: 26.07

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

ITFlow is a PHP/MySQL application (CPE cpe:2.3:a:itflow-org:itflow:*) used by small MSPs for IT documentation, ticketing, and accounting. The root cause is CWE-89 (SQL Injection): the recurring-invoice handler applies sanitizeInput() to the 'frequency' parameter, but that helper only performs basic escaping/trimming and does not contextualize the value for the SQL grammar it is placed into. The value is concatenated unquoted into a DATE_ADD(..., INTERVAL <value>) expression, so SQL syntax such as a closing clause followed by additional INSERT column assignments can break out of the interval context. Because the tainted value is persisted into recurring_invoice_frequency, the payload survives the request and can be re-executed by a second, legitimate user action ('Force Recurring' issuing a later UPDATE), which is a classic second-order SQL injection pattern. The vendor's fix illustrates the correct approach: replace free-form sanitization with a strict allow-list ('year' or 'month'), showing that the injection surface was the lack of type/format validation rather than the escaping routine itself. The associated PR also hardens adjacent paths by adding validateDate() format enforcement for invoice_date/invoice_due and mysqli_real_escape_string() in logAction(), indicating the same class of weak contextual escaping existed in several handlers. Impact per the assessed vector is high confidentiality and integrity (C:H/I:H) with no availability impact, scope unchanged, network attack vector, low privileges required, and no user interaction.

Know when Itflow 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.1 HIGH
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
vuln.today AI 8.1 HIGH

Network-reachable web app, low complexity, but a Technician account with invoice access is required (PR:L); high confidentiality/integrity via data theft and field modification, no availability impact.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:N/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
None

Lifecycle Timeline

2
Patch available
Sep 17, 2026 - 22:04 EUVD
CVE Published
Sep 17, 2026 - 20:33 cve.org
HIGH 8.1

DescriptionCVE.org

ITFlow provides an IT documentation, ticketing and accounting system for small managed service providers. Prior to version 26.07, an authenticated Technician or higher with access to at least one client invoice can inject SQL through the frequency parameter handled by agent/post/recurring_invoice.php. The handler passes recurring_invoice_frequency through sanitizeInput but interpolates it unquoted into DATE_ADD, allowing SQL syntax to escape the interval expression, assign additional INSERT columns, store subquery results in recurring_invoice_note, and expose those results through agent/recurring_invoice.php. The persisted recurring_invoice_frequency can execute again when Force Recurring uses it in a later UPDATE, allowing another legitimate user to trigger the second-order injection. This can expose password hashes, SMTP credentials, user records, and database metadata, modify database fields, and enable administrative takeover after credential cracking. This issue is fixed in version 26.07.

Technical POC Analysis

Sources: GHSA-f9m3-qjc9-v27j advisory text and the bundled public PoC (iltosec).

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

ITFlow deployments running versions prior to 26.07 are exposed to a high-severity SQL injection that can let a Technician-level user with invoice access extract password hashes, SMTP credentials, and user records, and potentially escalate to administrative takeover. No public exploit identified at time of analysis, but the combination of credential exposure and potential administrative takeover makes this a priority for affected organizations, especially managed service providers handling sensitive client environments. Leadership should prioritize access restrictions and monitoring until a vendor fix is available.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis; restrict Technician and higher roles, enforce least privilege for client invoice access, add WAF rules to block or sanitize the 'frequency' parameter, limit database permissions, monitor for second-order injection in recurring invoice notes, and rotate exposed database, SMTP, and administrative credentials.

Threat Intelligence Overview

EPSS Score
0.3%
Top 73% exploitable
Prevalence
Low
niche open-source ITSM/ticketing tool for small MSPs
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

40
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +40
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