CVE-2026-118597
Akaunting 3.3.0 - Stored XSS in custom invoice payment terms
Akaunting 3.3.0 contains a stored cross-site scripting vulnerability in custom invoice payment terms. An authenticated Manager can save a crafted custom payment-term value. When an authorized user opens Invoice Settings for the same company, Akaunting inserts the stored value into a client-side event-handler expression, causing attacker-controlled JavaScript to execute in the victim's authenticated origin.
Fixes and workarounds
Fix
Use a JavaScript-safe serializer such as Laravel Js::from() or a framework data binding for the custom payment-term value; validate it as a bounded integer when it represents a number of days; apply the vendor-fixed release once one is published.
Source: CNA: Fluid AttacksWorkaround
Use only predefined payment-term options, replace existing custom values, and restrict invoice-settings update access to trusted users until a vendor fix is available. Treat this as temporary mitigation rather than a fix.
Source: CNA: Fluid AttacksAffected products and versions
| Product | Versions | Authority |
|---|---|---|
| Akaunting Akaunting Platforms: Windows, MacOS, Linux |
3.3.0 (affected, semver)
Other versions: affected |
CNA: Fluid Attacks |
Version ranges are source assertions. Check the vendor advisory and your installed configuration before determining exposure.
CVSS assessments
| Version / score | Vector | Authority |
|---|---|---|
| 4.0 / 7.2 high |
CVSS:4.0/AV:N/AC:L/AT:P/PR:H/UI:P/VC:H/VI:H/VA:N/SC:L/SI:L/SA:N | CNA: Fluid Attacks |
Exploit evidence
No exploit evidence in collected sources. This is not proof of no exploitation.
References
- https://fluidattacks.com/advisories/rhiannonCNA: Fluid Attacks · third-party-advisory
- https://github.com/akaunting/akauntingCNA: Fluid Attacks · product
- https://github.com/akaunting/akaunting/blob/3.3.0/app/View/Components/Form/Group/PaymentTerm.phpCNA: Fluid Attacks · technical-description
- https://github.com/akaunting/akaunting/blob/3.3.0/resources/views/components/form/group/payment_term.blade.phpCNA: Fluid Attacks · technical-description
- https://github.com/akaunting/akaunting/blob/3.3.0/app/Abstracts/Http/SettingController.phpCNA: Fluid Attacks · technical-description
For agents and automation
Read public disclosures for free as Markdown or JSON. Compatible browsers also expose native WebMCP tools to search disclosures, read this page, and discover API access.
Use the ontology-linked Cyber API with x402 pay per request, or a Y2 Pro or Elite API key with the intel:cyber scope.
Endpoints and access details
https://api.y2.dev/api/v2/cyber/cveshttps://api.y2.dev/api/v2/cyber/cves/{cveId}
A workspace owner or admin can create a Pro or Elite API key. Send Authorization: Bearer <Y2_API_KEY> from your trusted agent runtime.
For x402, omit Authorization and read the HTTP 402 payment challenge before signing a retry. Public browser tools do not make payments.