CVE-2026-54597
HighCVSS 8.3Summary
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.
Risk Assessment
An attacker can extract password hashes, SMTP credentials, API keys, encrypted vault data, and database metadata, and after cracking credentials, achieve administrative takeover. This poses a serious risk to the confidentiality and integrity of organizational data.
Recommendation
Upgrade ITFlow to version 26.07 or later. Until then, restrict module_support permissions and access to credential records, and monitor for unusual response delays.
Other vulnerabilities in ITFlow
See all- CVE-2026-54596High
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.
- 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 user with module_support write permission and access to a credential record can perform time-based blind SQL injection through the expires parameter of the share_generate_link handler in agent/ajax.php. sanitizeInput applies string-context escaping, but expires is inserted unquoted into the item_expire_at MySQL INTERVAL expression, allowing a crafted expression and interval unit to execute conditional database queries whose results are inferred from response delays. This can expose password hashes, SMTP credentials, API keys, encrypted vault data, and database metadata and support administrative takeover after credential cracking. This issue is fixed in version 26.07.

