Skip to content
Heist/ feed
Back to feed
Low

HSTS response erases persisted entries

Type: advisorySources: OSV

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.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-87863
Confirmed fixed CVEs
Not specified
Updated in this feed
1 Nov 2026, 09:38 UTC · Revision 1

Source evidence

HSTS response erases persisted entries

core-osv · Original source

Published 14 Oct 2026, 08:00 UTC

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.

osv:CURL-CVE-2026-87863
Complete source record
{
  "id": "9244015d7d0bba63329de871345e8c30190e029a5388f0dfb26502778ad1d6ab",
  "url": "https://osv.dev/vulnerability/CURL-CVE-2026-87863",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "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 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.",
    "evidence": "osv:CURL-CVE-2026-87863",
    "products": [],
    "severity": "low",
    "structured": {
      "id": "CURL-CVE-2026-87863",
      "aliases": [
        "CURL-CVE-2026-87863",
        "CVE-2026-87863"
      ],
      "affected": [
        {
          "ranges": [
            {
              "type": "SEMVER",
              "events": [
                {
                  "introduced": "8.2.0"
                },
                {
                  "fixed": "8.14.3"
                },
                {
                  "introduced": "8.15.0"
                },
                {
                  "fixed": "8.16.2"
                },
                {
                  "introduced": "8.17.0"
                },
                {
                  "fixed": "8.20.2"
                },
                {
                  "introduced": "8.21.0"
                },
                {
                  "fixed": "8.23.0"
                }
              ]
            },
            {
              "repo": "https://github.com/curl/curl.git",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0c667188e0c6cda615a036b8a2b4125f2c404dde"
                },
                {
                  "fixed": "08d50a791b3197a3d0a4fc2f778e243f5501c67e"
                }
              ]
            }
          ],
          "versions": [
            "8.22.0",
            "8.21.0",
            "8.20.0",
            "8.19.0",
            "8.18.0",
            "8.17.0",
            "8.16.0",
            "8.15.0",
            "8.14.1",
            "8.14.0",
            "8.13.0",
            "8.12.1",
            "8.12.0",
            "8.11.1",
            "8.11.0",
            "8.10.1",
            "8.10.0",
            "8.9.1",
            "8.9.0",
            "8.8.0",
            "8.7.1",
            "8.7.0",
            "8.6.0",
            "8.5.0",
            "8.4.0",
            "8.3.0",
            "8.2.1",
            "8.2.0",
            "curl-8_22_0",
            "rc-8_22_0-3",
            "rc-8_22_0-2",
            "rc-8_22_0-1",
            "curl-8_21_0",
            "rc-8_21_0-3",
            "rc-8_21_0-2",
            "rc-8_21_0-1",
            "curl-8_20_0",
            "rc-8_20_0-3",
            "rc-8_20_0-2",
            "rc-8_20_0-1",
            "curl-8_19_0",
            "rc-8_19_0-3",
            "rc-8_19_0-2",
            "rc-8_19_0-1",
            "curl-8_18_0",
            "rc-8_18_0-3",
            "rc-8_18_0-2",
            "rc-8_18_0-1",
            "curl-8_17_0",
            "curl-8_16_0",
            "curl-8_15_0",
            "curl-8_14_1",
            "curl-8_14_0",
            "curl-8_13_0",
            "curl-8_12_1",
            "curl-8_12_0",
            "curl-8_11_1",
            "curl-8_11_0",
            "curl-8_10_1",
            "curl-8_10_0",
            "curl-8_9_1",
            "curl-8_9_0",
            "curl-8_8_0",
            "curl-8_7_1",
            "curl-8_7_0",
            "curl-8_6_0",
            "curl-8_5_0",
            "tiny-curl-8_4_0",
            "curl-8_4_0",
            "curl-8_3_0",
            "curl-8_2_1",
            "curl-8_2_0"
          ],
          "database_specific": {
            "source": "https://curl.se/docs/CURL-CVE-2026-87863.json",
            "vanir_signatures": [
              {
                "id": "CURL-CVE-2026-87863-0af9106b",
                "digest": {
                  "length": 1254,
                  "function_hash": "130716959620459958849575900228284574811"
                },
                "source": "https://github.com/curl/curl.git/commit/08d50a791b3197a3d0a4fc2f778e243f5501c67e",
                "target": {
                  "file": "lib/hsts.c",
                  "function": "Curl_hsts_save"
                },
                "deprecated": false,
                "signature_type": "Function",
                "signature_version": "v1"
              },
              {
                "id": "CURL-CVE-2026-87863-3febfe18",
                "digest": {
                  "length": 551,
                  "function_hash": "235220928436855776497358132967032028485"
                },
                "source": "https://github.com/curl/curl.git/commit/08d50a791b3197a3d0a4fc2f778e243f5501c67e",
                "target": {
                  "file": "lib/hsts.c",
                  "function": "hsts_out"
                },
                "deprecated": false,
                "signature_type": "Function",
                "signature_version": "v1"
              },
              {
                "id": "CURL-CVE-2026-87863-4e8b645f",
                "digest": {
                  "threshold": 0.9,
                  "line_hashes": [
                    "205178578720782544809538152978818913426",
                    "312232802905811482719156969745540983201",
                    "52024235586103044253478741981586349101",
                    "236670464565528813889296099301380617367",
                    "201698613823396007419677165466361661252",
                    "203881905030976409994234000584428003258",
                    "305083743043698032842437395492136388136",
                    "63780816154108311112287374066842202840",
                    "179606117275867453032594657296301292822",
                    "151193636400008653907531872018138587740",
                    "282941625750189441312039289710905698168",
                    "17557605789080997805808072397361704561",
                    "196264846599574655196860071710318067926",
                    "27093778555667850506274057291081042750",
                    "158079286993560261561536269313577311136",
                    "81855407285355430608706587545584654329",
                    "297366706571649341920083432355046071941",
                    "209662935018479864666392652983395213507",
                    "76164040816556869285329144294969932364",
                    "128562461603798141764926661314467138368",
                    "233917221121809993590827497351614816244",
                    "163877588095670458562943243143001700315",
                    "8334112328983392380704498149061936935",
                    "334545719184409274706574087080948536627",
                    "297596397871360914227453585870758356407",
                    "307050522064000661156627064896784888289",
                    "271841489615894496984986059155513402280",
                    "254925658198740085909971059161145530467",
                    "271276513996856353440083033981125880048",
                    "311554679248225155931659386580554936031",
                    "243788162621962468038868913053961555140",
                    "311036978655299673885270247871030631148",
                    "18713085383729949029225011990466382721",
                    "4660003201131665093028710170592646961"
                  ]
                },
                "source": "https://github.com/curl/curl.git/commit/08d50a791b3197a3d0a4fc2f778e243f5501c67e",
                "target": {
                  "file": "lib/hsts.c"
                },
                "deprecated": false,
                "signature_type": "Line",
                "signature_version": "v1"
              },
              {
                "id": "CURL-CVE-2026-87863-d434713a",
                "digest": {
                  "length": 1674,
                  "function_hash": "96308156130170861737261897291227074129"
                },
                "source": "https://github.com/curl/curl.git/commit/08d50a791b3197a3d0a4fc2f778e243f5501c67e",
                "target": {
                  "file": "lib/hsts.c",
                  "function": "Curl_hsts_parse"
                },
                "deprecated": false,
                "signature_type": "Function",
                "signature_version": "v1"
              }
            ],
            "vanir_signatures_modified": "2026-10-25T01:05:09Z"
          }
        }
      ],
      "modified": "2026-10-25T01:05:09.015738093Z",
      "provider": "osv",
      "references": [],
      "provider_metadata": {
        "CWE": {
          "id": "CWE-201",
          "desc": "Information Exposure Through Sent Data"
        },
        "URL": "https://curl.se/docs/CVE-2026-87863.json",
        "www": "https://curl.se/docs/CVE-2026-87863.html",
        "issue": "https://hackerone.com/reports/3972373",
        "affects": "both",
        "package": "curl",
        "severity": "Low",
        "last_affected": "8.22.0"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-87863",
        "evidence": "/aliases"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/database_specific/severity"
  },
  "source_id": "core-osv",
  "document_id": 444338,
  "published_at": "2026-10-14T08:00:00+00:00"
}