---
id: CVE-2026-87863
title: HSTS response erases persisted entries
summary: |-
  An authenticated HTTPS origin can supply an HSTS `max-age` value that the
  parser accepts, but time serialization later fails to process. On 64-bit
  systems, extreme max-age values compute an absolute expiry within standard
  time integer li…
severity: none
cwe:
  - CWE-201
vendor: curl
product: curl
affected:
  - curl >= 8.22.0 <= 8.22.0
  - curl >= 8.21.0 <= 8.21.0
  - curl >= 8.20.0 <= 8.20.0
  - curl >= 8.19.0 <= 8.19.0
  - curl >= 8.18.0 <= 8.18.0
  - curl >= 8.17.0 <= 8.17.0
  - curl >= 8.16.0 <= 8.16.0
  - curl >= 8.15.0 <= 8.15.0
  - curl >= 8.14.1 <= 8.14.1
  - curl >= 8.14.0 <= 8.14.0
  - curl >= 8.13.0 <= 8.13.0
  - curl >= 8.12.1 <= 8.12.1
  - curl >= 8.12.0 <= 8.12.0
  - curl >= 8.11.1 <= 8.11.1
  - curl >= 8.11.0 <= 8.11.0
  - curl >= 8.10.1 <= 8.10.1
  - curl >= 8.10.0 <= 8.10.0
  - curl >= 8.9.1 <= 8.9.1
  - curl >= 8.9.0 <= 8.9.0
  - curl >= 8.8.0 <= 8.8.0
  - curl >= 8.7.1 <= 8.7.1
  - curl >= 8.7.0 <= 8.7.0
  - curl >= 8.6.0 <= 8.6.0
  - curl >= 8.5.0 <= 8.5.0
  - curl >= 8.4.0 <= 8.4.0
  - curl >= 8.3.0 <= 8.3.0
  - curl >= 8.2.1 <= 8.2.1
  - curl >= 8.2.0 <= 8.2.0
published: '2026-10-20'
updated: '2026-10-20'
sourceUpdated: '2026-10-20T20:13:22.379Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-87863'
references:
  - url: 'https://curl.se/docs/CVE-2026-87863.json'
    label: json
  - url: 'https://curl.se/docs/CVE-2026-87863.html'
    label: www
  - url: 'https://hackerone.com/reports/3972373'
    label: issue
tags:
  - cve.org
ingestedAt: '2026-10-20T21:19:21.286Z'
---

## Overview

An authenticated HTTPS origin can supply an HSTS `max-age` value that the
parser accepts, but time serialization later fails to process. On 64-bit
systems, extreme max-age values compute an absolute expiry within standard
time integer limits that exceeds calendar time structure bounds. During cache
saves, the original HSTS file is truncated before writing a temporary
replacement; when serialization fails, the temporary file is deleted, leaving
an empty or partial cache. Because the save error is silently ignored during
cleanup, curl exits successfully despite the data loss.

## Affected

- `curl >= 8.22.0 <= 8.22.0`
- `curl >= 8.21.0 <= 8.21.0`
- `curl >= 8.20.0 <= 8.20.0`
- `curl >= 8.19.0 <= 8.19.0`
- `curl >= 8.18.0 <= 8.18.0`
- `curl >= 8.17.0 <= 8.17.0`
- `curl >= 8.16.0 <= 8.16.0`
- `curl >= 8.15.0 <= 8.15.0`
- `curl >= 8.14.1 <= 8.14.1`
- `curl >= 8.14.0 <= 8.14.0`
- `curl >= 8.13.0 <= 8.13.0`
- `curl >= 8.12.1 <= 8.12.1`
- `curl >= 8.12.0 <= 8.12.0`
- `curl >= 8.11.1 <= 8.11.1`
- `curl >= 8.11.0 <= 8.11.0`
- `curl >= 8.10.1 <= 8.10.1`
- `curl >= 8.10.0 <= 8.10.0`
- `curl >= 8.9.1 <= 8.9.1`
- `curl >= 8.9.0 <= 8.9.0`
- `curl >= 8.8.0 <= 8.8.0`
- `curl >= 8.7.1 <= 8.7.1`
- `curl >= 8.7.0 <= 8.7.0`
- `curl >= 8.6.0 <= 8.6.0`
- `curl >= 8.5.0 <= 8.5.0`
- `curl >= 8.4.0 <= 8.4.0`
- `curl >= 8.3.0 <= 8.3.0`
- `curl >= 8.2.1 <= 8.2.1`
- `curl >= 8.2.0 <= 8.2.0`

## Remediation

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