A CVE was published at 01:16:52 UTC on 23 August against TaxHacker, a self-hosted accounting tool that uses language models to read receipts and invoices. CVE-2026-78062 describes hard-coded credentials reachable through the BETTER_AUTH_SECRET argument in the envSchema.parse function of lib/config.ts, in versions up to 0.8.2. The entry notes the attack can be initiated remotely.
What a hard-coded auth secret actually does
That secret is what signs and verifies session tokens. If a deployment runs with the shipped default, anyone who knows that default — and it sits in a public repository — can mint a token the application will accept. This is not credential theft. It is credential manufacture, and it requires no interaction with any legitimate user.
The distortion: one flaw, two severity labels, one assessor
The entry carries three scores from the same CNA. Under CVSS 4.0 it is 5.5, labelled MEDIUM. Under CVSS 3.1 it is 7.3, labelled HIGH. Under CVSS 2.0 it is 7.5. Nothing about the vulnerability differs between those rows — only the scoring framework does. Triage that sorts by severity label will file this differently depending on which column the tooling reads, and a dashboard surfacing only the newest framework shows it as a medium.
Published and unpatched are not mutually exclusive
The description records that the project was informed early through an issue report and has not responded. A CVE identifier is a coordination artefact, not evidence that a patch exists. This one was published while the flaw was still open, which inverts the ordinary reading of a CVE as marking the end of an issue rather than an escalation in the middle of one.
Why self-hosted AI tooling keeps producing this class of bug
Placeholder secrets in environment schemas exist so a project runs on first clone. They turn into vulnerabilities at the moment the project is deployed rather than merely demonstrated — and self-hosted AI applications, typically installed by their end users rather than by an operations team, sit exactly on that boundary.
The remedy does not require the maintainer
Set BETTER_AUTH_SECRET to a generated value and rotate any sessions issued under the default. Because the fix is configuration rather than code, deployers are not blocked by the silence on the issue tracker.
