CVE-2026-46622: SolidInvoice API Token Plaintext Storage Vulnerability
SolidInvoice, an open-source invoicing platform, stores API authentication tokens as plain, unencrypted text in its database. Before version 2.3.17, anyone who gains read access to the database—whether through SQL injection, leaked backups, misconfigured database replicas, or insider access—immediately acquires all API credentials for every user without needing to decrypt or crack anything. This turns database compromise into immediate authentication compromise across your entire API surface.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 8.1 HIGH · CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
- Weaknesses (CWE)
- CWE-312
- Affected products
- 0 configuration(s)
- Published / Modified
- 2026-06-11 / 2026-06-17
NVD description (verbatim)
SolidInvoice is an open-source invoicing platform. Prior to version 2.3.17, API tokens used to authenticate all REST API requests are stored as plaintext strings in the api_tokens database table. Any attacker who obtains read access to the database — through SQL injection, a leaked backup, a misconfigured replica, or insider access — immediately obtains all API credentials for every user with no further effort. This issue has been patched in version 2.3.17.
4 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
CVE-2026-46622 is a cleartext storage vulnerability (CWE-312) affecting SolidInvoice versions prior to 2.3.17. API tokens, which serve as the primary authentication mechanism for all REST API requests, are persisted unencrypted in the api_tokens database table. An attacker with database read access obtains valid, immediately usable credentials for all API-authenticated accounts. The attack requires no brute-force, no cryptographic bypass, and no further exploitation steps once database access is achieved. Patch is available in version 2.3.17.
Business impact
Compromise of API tokens enables unauthorized API access on behalf of legitimate users. Attackers can invoke any API endpoint available to those user accounts—creating invoices, modifying financial records, exporting customer data, or integrating with downstream accounting systems. The severity depends on what your SolidInvoice instance exposes via API and which user accounts are active. In multi-tenant or shared deployments, a single database breach exposes credentials for all organizations and users. Remediation complexity increases if your deployment uses database replicas or automated backups that may contain stale but valid tokens.
Affected systems
All installations of SolidInvoice prior to version 2.3.17 are affected. The vulnerability exists in the core API authentication mechanism, so any deployment exposing the REST API is at risk. Open-source deployments are particularly vulnerable because source-code availability may aid reconnaissance, and self-hosted instances often lack centralized patching discipline. Managed or cloud-hosted SolidInvoice services are affected unless the provider has already upgraded to 2.3.17 or later.
Exploitability
Exploitability is contingent on database access. The vulnerability itself requires no active network interaction or application-layer attack; it is purely a storage issue. However, obtaining database access in the first place is the prerequisite. Common paths include unpatched SQL injection in the SolidInvoice application itself or its dependencies, misconfigured database network exposure, leaked or compromised database credentials, or insider access. Once database read access is gained, token theft is trivial and undetectable via standard application logging. The CVSS score of 8.1 (HIGH) reflects the high impact on confidentiality and integrity given that a database breach is assumed as the precondition.
Remediation
Upgrade SolidInvoice to version 2.3.17 or later. The patch implements encrypted storage for API tokens, rendering plaintext theft ineffective. After upgrading, rotate all existing API tokens to ensure old plaintext tokens cannot be reused even if database backups or replicas containing them are later compromised. Review database access logs and backup inventories for evidence of unauthorized database access during the window of vulnerability. If your deployment uses replicated databases or archived backups, ensure those are updated or securely disposed of after the token rotation is complete.
Patch guidance
Upgrade to SolidInvoice version 2.3.17 or later. The patch changes how API tokens are stored and should be applied as soon as feasible, particularly for instances exposed to untrusted networks or handling sensitive financial data. Test the upgrade in a non-production environment first to confirm compatibility with your specific configuration, plugins, and integrations. Schedule the upgrade during a maintenance window to minimize disruption; the patch does not require database schema changes beyond token re-encryption. After upgrade completion, trigger a forced re-authentication or token refresh cycle for all API consumers to ensure they obtain new encrypted tokens.
Detection guidance
Review database access logs from the vulnerability window (before your upgrade date) for unauthorized queries against the api_tokens table or bulk exports of the table contents. Check for SQL injection attempts in application logs or WAF logs that target authentication or token endpoints. Audit API logs for unusual token usage patterns—requests from unexpected IP addresses, simultaneous logins from multiple locations, or API calls inconsistent with known consumer applications. If you suspect database compromise, assume API tokens are exposed and revoke all active tokens, forcing re-authentication. Monitor for leaked credentials in public code repositories, paste sites, or dark-web marketplaces using your organization name and API token patterns.
Why prioritize this
This vulnerability should be treated as HIGH priority because it converts database compromise—a plausible attack outcome—into immediate API authentication compromise with no additional attacker effort. Database breaches occur frequently via SQL injection, misconfiguration, or insider threats; the lack of encryption amplifies their impact. The fix is straightforward (upgrade and rotate tokens), so delaying creates unnecessary risk. Organizations running older SolidInvoice versions should prioritize patching over other network-level hardening until this is resolved.
Risk score, explained
The CVSS 3.1 score of 8.1 reflects a HIGH severity assessment with these factors: Attack Vector NETWORK (the database is often network-accessible), Attack Complexity LOW (no special conditions needed once database access is obtained), Privileges Required LOW (the assumption that an attacker has gained some level of database access), User Interaction NONE (no user action required), Scope UNCHANGED (impact is limited to the SolidInvoice application), Confidentiality HIGH (all API tokens are exposed), Integrity HIGH (compromised tokens allow unauthorized modifications), Availability NONE (the attack does not disrupt service). The score emphasizes that database read access is the precondition; however, because database compromises are common and tokens become immediately actionable, the overall risk to an organization running unpatched SolidInvoice is substantial.
Frequently asked questions
If our SolidInvoice database has not been compromised, are we at risk?
You are at reduced but non-zero risk. The vulnerability itself requires database access to exploit. However, if your instance is running an unpatched version, you should assume eventual compromise is possible—through SQL injection, misconfiguration, or other means. Upgrading eliminates the risk that a future database breach will expose API tokens in plaintext.
Do we need to rotate API tokens immediately, or only after upgrading?
Ideally, upgrade first, then rotate all tokens. Upgrading ensures new tokens are encrypted. Rotation after upgrade guarantees that any plaintext tokens stored in old backups or replicas cannot be reused, even if those systems are later compromised or accessed by an insider.
What should we do if we suspect our database was already accessed?
Assume API tokens were exposed. Revoke all API tokens immediately and force all API consumers to re-authenticate and obtain new tokens. Review audit logs for suspicious API activity during the suspected compromise window. If you store backups, check whether any were accessed or exfiltrated. Consider a full security audit of the SolidInvoice instance and its database environment to identify the initial compromise vector.
Does this vulnerability affect SolidInvoice deployments that don't use the API?
If your deployment does not create or use API tokens, the risk is minimal—tokens won't exist to be stolen. However, most modern integrations with accounting software or third-party tools rely on the API, so this assumption is worth validating. Even if you don't currently use the API, patching is still recommended to prevent future risk if your usage evolves.
This analysis is based on the public CVE record and vendor advisory as of June 2026. Security assessments and patch availability may change; verify current status with the SolidInvoice project and your specific deployment. This explainer does not constitute professional security advice tailored to your organization's risk posture. Conduct your own threat assessment and consult with your security team before prioritizing remediation in your environment. Source: NVD (public-domain), retrieved 2026-07-20. Analysis generated by SEC.co (claude-haiku-4-5).
Weaknesses (CWE)
Related vulnerabilities
- CVE-2026-36176HIGHGNCC GP5 Plaintext B2 Credentials Leak via Serial Console
- CVE-2026-10786MEDIUMDevolutions Server Credential Disclosure via Improper Access Control
- CVE-2016-20062HIGHSQL Injection in Simply Poll 1.4.1 WordPress Plugin - Unauthenticated Data Theft
- CVE-2016-20063HIGHSQL Injection in Single Personal Message 1.0.3 – Credential & Data Theft Risk
- CVE-2016-20065HIGHUnauthenticated SQL Injection in Product Catalog 8 WordPress Plugin
- CVE-2016-20066HIGHWordPress CP Polls 1.0.8 Persistent XSS Vulnerability
- CVE-2016-20068HIGHUnauthenticated SQL Injection in WordPress Booking Calendar Contact Form 1.0.23
- CVE-2016-20069HIGHUnauthenticated SQL Injection in WordPress Booking Calendar Contact Form 1.0.23