---
id: CVE-2026-111367
title: BillionMail through 4.9 Forgeable JWTs via Default Signing Key
summary: >-
  BillionMail through 4.9 contains a hard-coded cryptographic key vulnerability
  that allows unauthenticated attackers to forge unsubscribe and
  subscribe-confirm JWTs by computing the key from shipped configuration
  constants. Attackers can …
severity: medium
cvss: 6.5
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:L'
cvssSource: cna
cwe:
  - CWE-1394
vendor: aaPanel
product: BillionMail
affected:
  - BillionMail <= 4.9
published: '2026-10-15'
updated: '2026-10-15'
sourceUpdated: '2026-10-15T21:43:50.886Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-111367'
references:
  - url: >-
      https://hackmd.io/@hieuPenguinnn/billionmail-unsubscribe-subscribe-jwt-deterministic-secret-forgery
  - url: >-
      https://github.com/aaPanel/BillionMail/blob/v4.9/core/internal/service/batch_mail/jwt.go#L98-L123
  - url: >-
      https://github.com/aaPanel/BillionMail/blob/v4.9/core/manifest/config/config.yaml
  - url: 'https://github.com/aaPanel/BillionMail'
  - url: >-
      https://www.vulncheck.com/advisories/billionmail-through-4.9-forgeable-jwts-via-default-signing-key
    label: >-
      VulnCheck Advisory: BillionMail through 4.9 Forgeable JWTs via Default
      Signing Key
tags:
  - cve.org
ingestedAt: '2026-10-15T22:48:25.459Z'
---

## Overview

BillionMail through 4.9 contains a hard-coded cryptographic key vulnerability that allows unauthenticated attackers to forge unsubscribe and subscribe-confirm JWTs by computing the key from shipped configuration constants. Attackers can submit forged tokens to /api/unsubscribe, /api/unsubscribe_new, or /api/subscribe/confirm to deactivate any contact or force confirmed subscriptions.

## Affected

- `BillionMail <= 4.9`

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
