Perry < 0.5.1166 JWT Expiration Bypass via verify_decode
Perry before 0.5.1166 contains a JWT validation vulnerability that allows remote attackers to bypass token expiration by exploiting the unconditional setting of validate_exp = false in the verify_decode helper within the stdlib JWT verification path. Attackers in possession of a previously issued bearer token can present expired tokens to any jwt.verify() call and retain authenticated access indefinitely, bypassing force-expired sessions such as user logout or administrative revocation.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-53776
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 3 Nov 2026, 11:10 UTC · Revision 1
Source evidence
Perry < 0.5.1166 JWT Expiration Bypass via verify_decode
core-osv · Original sourcePublished 16 Jun 2026, 15:18 UTC
Perry before 0.5.1166 contains a JWT validation vulnerability that allows remote attackers to bypass token expiration by exploiting the unconditional setting of validate_exp = false in the verify_decode helper within the stdlib JWT verification path. Attackers in possession of a previously issued bearer token can present expired tokens to any jwt.verify() call and retain authenticated access indefinitely, bypassing force-expired sessions such as user logout or administrative revocation.
osv:CVE-2026-53776
Complete source record
{
"id": "90afdc78599fedef30627528bbf547541878cb2067a2d2ac227e23857855a52a",
"url": "https://osv.dev/vulnerability/CVE-2026-53776",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "Perry < 0.5.1166 JWT Expiration Bypass via verify_decode",
"summary": "Perry before 0.5.1166 contains a JWT validation vulnerability that allows remote attackers to bypass token expiration by exploiting the unconditional setting of validate_exp = false in the verify_decode helper within the stdlib JWT verification path. Attackers in possession of a previously issued bearer token can present expired tokens to any jwt.verify() call and retain authenticated access indefinitely, bypassing force-expired sessions such as user logout or administrative revocation.",
"evidence": "osv:CVE-2026-53776",
"products": [],
"severity": "critical",
"structured": {
"id": "CVE-2026-53776",
"aliases": [
"CVE-2026-53776",
"GHSA-5324-c68v-8w62"
],
"metrics": [
{
"type": "CVSS_V4",
"score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/perryts/perry",
"type": "GIT",
"events": [
{
"introduced": "0"
},
{
"fixed": "c970fc567366f166ae3ea9d746e37442fdec4d5b"
}
],
"database_specific": {
"extracted_events": [
{
"range": [
{
"introduced": "0"
},
{
"fixed": "0.5.1166"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StandardRange"
},
{
"range": [
{
"introduced": "0"
},
{
"fixed": "0.5.1166"
}
],
"source": "DESCRIPTION"
}
]
}
}
],
"versions": [
"v0.5.1159",
"v0.5.1158",
"v0.5.1151",
"v0.5.1150",
"v0.5.1129",
"v0.5.1125",
"v0.5.1122",
"v0.5.1121",
"v0.5.1120",
"v0.5.1117",
"v0.5.1116",
"v0.5.1112",
"v0.5.1028",
"v0.5.1025",
"v0.5.1024",
"v0.5.1022",
"v0.5.1021",
"v0.5.1020",
"v0.5.1019",
"v0.5.1011",
"v0.5.1008",
"v0.5.923",
"v0.5.921",
"v0.5.891",
"v0.5.890",
"v0.5.889",
"v0.5.888",
"v0.5.887",
"v0.5.886",
"v0.5.885",
"v0.5.883",
"v0.5.882",
"v0.5.881",
"v0.5.880",
"v0.5.879",
"v0.5.878",
"v0.5.877",
"v0.5.876",
"v0.5.875",
"v0.5.874",
"v0.5.871",
"v0.5.868",
"v0.5.865",
"v0.5.864",
"v0.5.863",
"v0.5.862",
"v0.5.861",
"v0.5.860",
"v0.5.857",
"v0.5.856",
"v0.5.854",
"v0.5.853",
"v0.5.852",
"v0.5.851",
"v0.5.849",
"v0.5.848",
"v0.5.846",
"v0.5.845",
"v0.5.842",
"v0.5.841",
"v0.5.840",
"v0.5.837",
"v0.5.832",
"v0.5.825",
"v0.5.585",
"v0.5.583",
"v0.5.582",
"v0.5.581",
"v0.5.511",
"v0.5.510",
"v0.5.509",
"v0.5.465",
"v0.5.463",
"v0.5.460",
"v0.5.456",
"v0.5.455",
"v0.5.454",
"v0.5.453",
"v0.5.452",
"v0.5.451",
"v0.5.450",
"v0.5.386",
"v0.5.379",
"v0.5.375",
"v0.5.374",
"v0.5.373",
"v0.5.359",
"v0.5.345",
"v0.5.343",
"v0.5.15",
"v0.5.14",
"v0.5.13",
"v0.4.51",
"v0.4.47",
"v0.4.45",
"v0.4.41",
"v0.4.40",
"v0.4.39",
"v0.4.38",
"v0.4.37",
"v0.4.36",
"v0.4.32",
"v0.4.30",
"v0.4.29",
"v0.4.28",
"v0.4.27",
"v0.4.26",
"v0.4.24",
"v0.4.23",
"v0.4.22",
"v0.4.21",
"v0.4.19",
"v0.4.18",
"v0.4.17",
"v0.4.15",
"v0.4.14",
"v0.4.8",
"v0.4.6",
"v0.4.3",
"v0.4.2",
"v0.4.0",
"v0.3.1",
"v0.3.0",
"v0.2.203",
"v0.2.202",
"v0.2.201",
"v0.2.200",
"v0.2.197",
"v0.2.195",
"v0.2.194",
"v0.2.192",
"v0.2.183",
"v0.2.179",
"v0.2.173",
"v0.2.97"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-53776.json"
}
}
],
"modified": "2026-10-28T02:30:27.999042621Z",
"provider": "osv",
"references": [
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/53xxx/CVE-2026-53776.json",
"https://github.com/PerryTS/perry/releases/v0.5.1166",
"https://github.com/PerryTS/perry/security/advisories/GHSA-5324-c68v-8w62",
"https://nvd.nist.gov/vuln/detail/CVE-2026-53776",
"https://www.vulncheck.com/advisories/perry-jwt-expiration-bypass-via-verify-decode",
"https://github.com/PerryTS/perry"
],
"provider_metadata": {
"cwe_ids": [
"CWE-613"
],
"cna_assigner": "VulnCheck",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/53xxx/CVE-2026-53776.json"
}
},
"related_cves": [
{
"value": "CVE-2026-53776",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 494853,
"published_at": "2026-06-16T15:18:53.658+00:00"
}