---
id: CVE-2026-80208
title: >-
  APITable through 1.13.0-beta.1 annotates both getUserHistories and
  closePausedUserAccount in InternalUserController with requiredLogin = false
summary: >-
  APITable through 1.13.0-beta.1 annotates both getUserHistories and
  closePausedUserAccount in InternalUserController with requiredLogin = false.
  ResourceInterceptor honours that annotation by returning before any session or
  API key is val…
severity: high
cvss: 8.2
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:N'
cwe:
  - CWE-306
published: '2026-08-27'
updated: '2026-09-23'
sourceUpdated: '2026-09-23T17:17:42.450'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-80208'
references:
  - url: 'https://github.com/apitable/apitable'
    label: disclosure@vulncheck.com
  - url: >-
      https://github.com/apitable/apitable/blob/88b24ce9f359cc434778be75d03603182882dc76/backend-server/application/src/main/java/com/apitable/internal/controller/InternalUserController.java#L149
    label: disclosure@vulncheck.com
  - url: 'https://github.com/apitable/apitable/issues/1812'
    label: disclosure@vulncheck.com
  - url: >-
      https://www.vulncheck.com/advisories/apitable-through-1.13.0-beta.1-missing-authentication-on-the-internal-account-closure-endpoints
    label: disclosure@vulncheck.com
tags:
  - nvd
  - cve.org
epss: 0.00438
epssPercentile: 0.35363
ingestedAt: '2026-09-23T17:28:14.804Z'
vendor: apitable
product: apitable
affected:
  - apitable <= 1.13.0-beta.1
ssvc:
  exploitation: none
  automatable: 'yes'
  technicalImpact: partial
  timestamp: '2026-08-27T18:38:52.405820Z'
---

## Overview

APITable through 1.13.0-beta.1 annotates both getUserHistories and closePausedUserAccount in InternalUserController with requiredLogin = false. ResourceInterceptor honours that annotation by returning before any session or API key is validated, and the nginx gateway shipped with the product proxies every /api request to the backend server, so both endpoints are reachable by any unauthenticated client that can reach the gateway. An attacker can POST to /api/v1/internal/getUserHistories to enumerate the accounts sitting in the 30-day cooling-off period that follows a deletion request, then POST to /api/v1/internal/users/{userId}/close for each one. The closure path clears the account's email address, phone number and nickname, cancels its space subscriptions, removes its space memberships and deletes its OAuth bindings, so the cooling-off window that exists to let a user reverse a deletion request is bypassed and the account cannot be recovered.

## Remediation

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