Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as Technician with invoice access
-
DeliveryCraft malicious frequency parameter
-
ExploitPOST to agent/post/recurring_invoice.php escaping DATE_ADD
-
ExecutionStore subquery output in recurring_invoice_note
-
PersistRead exfiltrated hashes via agent/recurring_invoice.php
-
ImpactCrack 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
Affected Packages
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
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
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.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.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
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.
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
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
SQL injection exploits the way applications construct database queries by mixing user input directly into SQL statements.
Stored cross-site scripting in ITFlow's inbound email-to-ticket parser (cron/ticket_email_parser.php) lets a remote, una
Cross Site Scripting vulnerability in ITFlow.org before commit v.432488eca3998c5be6b6b9e8f8ba01f54bc12378 allows a remto
Time-based blind SQL injection in ITFlow versions prior to 26.07 allows an authenticated user who holds module_support w
Insecure Direct Object Reference (IDOR) in ITFlow allows a low-privileged authenticated agent to exfiltrate plaintext cr
An SQL injection vulnerability in Itflow through 25.06 has been identified in the "role_id" parameter when editing a pro
EUVD-2026-82469
NVD
CVE.org
EPSS
GitHub
Exploit-DB