---
id: CVE-2026-57562
title: >-
  Readest: Subscription/entitlement hijack: /api/stripe/check binds any paid
  Checkout Session to the caller
summary: >-
  Readest is a modern, feature-rich ebook reader designed for seamless
  cross-platform access and an intuitive reading experience. Prior to 0.11.10,
  POST /api/stripe/check in apps/readest-app/src/app/api/stripe/check/route.ts
  accepted a cli…
severity: medium
cvss: 6.5
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N'
cvssSource: cna
cwe:
  - CWE-639
vendor: readest
product: readest
affected:
  - readest < 0.11.10
ssvc:
  exploitation: poc
  automatable: 'no'
  technicalImpact: partial
  timestamp: '2026-11-05T20:17:29.620516Z'
exploitAvailable: true
published: '2026-11-04'
updated: '2026-11-05'
sourceUpdated: '2026-11-05T20:18:01.073Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-57562'
references:
  - url: 'https://github.com/readest/readest/security/advisories/GHSA-pv88-3727-j7v8'
    label: 'https://github.com/readest/readest/security/advisories/GHSA-pv88-3727-j7v8'
  - url: 'https://github.com/readest/readest/pull/4638'
    label: 'https://github.com/readest/readest/pull/4638'
  - url: >-
      https://github.com/readest/readest/commit/495783d04516d05b2eb10f8f8bad297d436b36de
    label: >-
      https://github.com/readest/readest/commit/495783d04516d05b2eb10f8f8bad297d436b36de
  - url: 'https://github.com/readest/readest/releases/tag/v0.11.10'
    label: 'https://github.com/readest/readest/releases/tag/v0.11.10'
tags:
  - cve.org
  - exploit-available
epss: 0.00426
epssPercentile: 0.37115
ingestedAt: '2026-11-05T22:38:31.731Z'
---

## Overview

Readest is a modern, feature-rich ebook reader designed for seamless cross-platform access and an intuitive reading experience. Prior to 0.11.10, POST /api/stripe/check in apps/readest-app/src/app/api/stripe/check/route.ts accepted a client-controlled sessionId, retrieved the corresponding Stripe Checkout Session, and granted the paid plan to the authenticated caller without verifying session.metadata.userId. The createOrUpdateSubscription path then updated the plans row keyed by the caller's user identifier rather than the Checkout Session owner. Any authenticated free user with a paid active Checkout Session identifier, including one from the user's own single legitimate purchase, could replay that identifier to upgrade additional accounts without payment. This issue is fixed in version 0.11.10.

## Affected

- `readest < 0.11.10`

## Remediation

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