Junglewise Threat Intelligence

Firefly III Stored XSS in Audit Log Entry via piggy bank name

Severity: medium · CVSS 5.1 · Published 2026-06-12

Technologies: grumpydictator/firefly-iii (Packagist). Vendors: Packagist.

Executive brief

Firefly III, a personal finance manager, is vulnerable to a security flaw where an attacker can inject malicious scripts into the name of a 'piggy bank'. When another user or administrator views the audit logs for transactions associated with that piggy bank, the script executes in their browser. This could allow an attacker to steal session cookies, hijack accounts, or perform unauthorized actions on behalf of other users.

Technical details

A stored cross-site scripting (XSS) vulnerability exists in Firefly III due to improper output escaping in the Twig template 'resources/views/list/ale.twig'. The template uses the '|raw' filter on a translation string containing the user-controlled piggy bank name to preserve HTML styling for currency, which inadvertently disables auto-escaping for the name itself. An attacker with low privileges can create a piggy bank with a malicious HTML payload (e.g., using 'onerror' attributes) via the API. When any user views the transaction audit log associated with this piggy bank, the payload executes. This bypasses the default nonce-based CSP because the policy does not restrict 'script-src-attr'. The issue is fixed in version 6.6.3 by explicitly escaping the name parameter.

Affected products

  • grumpydictator firefly-iii <= 6.6.2

Timeline

  • 2026-05-21: disclosed
  • 2026-06-12: advisory: GitHub Advisory published
  • 2026-06-12: patched: Fix merged into develop/released in 6.6.3

References

Related threats