CVE-2026-54596
HighCVSS 8.1Summary
In ITFlow 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 parameter is sanitized but interpolated unquoted into DATE_ADD, allowing SQL syntax to escape the interval expression and expose database data.
Risk Assessment
This can expose password hashes, SMTP credentials, user records, and database metadata, modify database fields, and enable administrative takeover after credential cracking.
Recommendation
Upgrade ITFlow to version 26.07 or later, and until then restrict access to recurring invoice functionality to trusted users only.
Other vulnerabilities in ITFlow
See all- CVE-2026-54597High
ITFlow, an IT documentation, ticketing and accounting system for small MSPs, prior to version 26.07 allows an authenticated user with module_support write permission and access to a credential record to perform time-based blind SQL injection through the expires parameter of the share_generate_link handler in agent/ajax.php. The expires parameter is inserted unquoted into the MySQL INTERVAL expression, allowing conditional database queries.
- CVE-2026-47755Medium
ITFlow prior to version 26.05 has a vulnerability that allows a low-privileged authenticated agent to retrieve plaintext credentials and TOTP secrets belonging to another client by directly requesting the credential edit modal with an arbitrary credential_id. The endpoint does not enforce client scoping or object-level authorization before loading and decrypting the credential record.
Original NVD description (English source)
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.

