CVE-2025-31123 (GCVE-0-2025-31123)
Vulnerability from cvelistv5 – Published: 2025-03-31 19:31 – Updated: 2025-03-31 22:38
VLAI?
Title
Zitadel Expired JWT Keys Usable for Authorization Grants
Summary
Zitadel is open-source identity infrastructure software. A vulnerability existed where expired keys can be used to retrieve tokens. Specifically, ZITADEL fails to properly check the expiration date of the JWT key when used for Authorization Grants. This allows an attacker with an expired key to obtain valid access tokens. This vulnerability does not affect the use of JWT Profile for OAuth 2.0 Client Authentication on the Token and Introspection endpoints, which correctly reject expired keys. This vulnerability is fixed in 2.71.6, 2.70.8, 2.69.9, 2.68.9, 2.67.13, 2.66.16, 2.65.7, 2.64.6, and 2.63.9.
Severity ?
8.7 (High)
CWE
- CWE-324 - Use of a Key Past its Expiration Date
Assigner
References
| URL | Tags | ||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|||||||||||||||||||||||||||||||||||
Impacted products
| Vendor | Product | Version | ||
|---|---|---|---|---|
| zitadel | zitadel |
Affected:
>= 2.62.0, < 2.63.9
Affected: >= 2.64.0-rc.1, < 2.64.6 Affected: >= 2.65.0-rc.1, < 2.65.7 Affected: >= 2.66.0-rc.1, < 2.66.16 Affected: >= 2.67.0-rc.1, < 2.67.13 Affected: >= 2.68.0-rc.1, < 2.68.9 Affected: >= 2.69.0-rc.1, < 2.69.9 Affected: >= 2.70.0-rc.1, < 2.70.8 Affected: >= 2.71.0-rc.1, < 2.71.6 |
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2025-31123",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "total"
}
],
"role": "CISA Coordinator",
"timestamp": "2025-03-31T22:38:16.728894Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2025-03-31T22:38:38.383Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"product": "zitadel",
"vendor": "zitadel",
"versions": [
{
"status": "affected",
"version": "\u003e= 2.62.0, \u003c 2.63.9"
},
{
"status": "affected",
"version": "\u003e= 2.64.0-rc.1, \u003c 2.64.6"
},
{
"status": "affected",
"version": "\u003e= 2.65.0-rc.1, \u003c 2.65.7"
},
{
"status": "affected",
"version": "\u003e= 2.66.0-rc.1, \u003c 2.66.16"
},
{
"status": "affected",
"version": "\u003e= 2.67.0-rc.1, \u003c 2.67.13"
},
{
"status": "affected",
"version": "\u003e= 2.68.0-rc.1, \u003c 2.68.9"
},
{
"status": "affected",
"version": "\u003e= 2.69.0-rc.1, \u003c 2.69.9"
},
{
"status": "affected",
"version": "\u003e= 2.70.0-rc.1, \u003c 2.70.8"
},
{
"status": "affected",
"version": "\u003e= 2.71.0-rc.1, \u003c 2.71.6"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "Zitadel is open-source identity infrastructure software. A vulnerability existed where expired keys can be used to retrieve tokens. Specifically, ZITADEL fails to properly check the expiration date of the JWT key when used for Authorization Grants. This allows an attacker with an expired key to obtain valid access tokens. This vulnerability does not affect the use of JWT Profile for OAuth 2.0 Client Authentication on the Token and Introspection endpoints, which correctly reject expired keys. This vulnerability is fixed in 2.71.6, 2.70.8, 2.69.9, 2.68.9, 2.67.13, 2.66.16, 2.65.7, 2.64.6, and 2.63.9."
}
],
"metrics": [
{
"cvssV3_1": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "NONE",
"baseScore": 8.7,
"baseSeverity": "HIGH",
"confidentialityImpact": "HIGH",
"integrityImpact": "HIGH",
"privilegesRequired": "HIGH",
"scope": "CHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:N",
"version": "3.1"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-324",
"description": "CWE-324: Use of a Key Past its Expiration Date",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2025-03-31T19:31:40.507Z",
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M"
},
"references": [
{
"name": "https://github.com/zitadel/zitadel/security/advisories/GHSA-h3q7-347g-qwhf",
"tags": [
"x_refsource_CONFIRM"
],
"url": "https://github.com/zitadel/zitadel/security/advisories/GHSA-h3q7-347g-qwhf"
},
{
"name": "https://github.com/zitadel/zitadel/commit/315503beabd679f2e6aec0c004f0f9d2f5b53ed3",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/zitadel/zitadel/commit/315503beabd679f2e6aec0c004f0f9d2f5b53ed3"
},
{
"name": "https://github.com/zitadel/zitadel/releases/tag/v2.63.9",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/zitadel/zitadel/releases/tag/v2.63.9"
},
{
"name": "https://github.com/zitadel/zitadel/releases/tag/v2.64.6",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/zitadel/zitadel/releases/tag/v2.64.6"
},
{
"name": "https://github.com/zitadel/zitadel/releases/tag/v2.65.7",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/zitadel/zitadel/releases/tag/v2.65.7"
},
{
"name": "https://github.com/zitadel/zitadel/releases/tag/v2.66.16",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/zitadel/zitadel/releases/tag/v2.66.16"
},
{
"name": "https://github.com/zitadel/zitadel/releases/tag/v2.67.13",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/zitadel/zitadel/releases/tag/v2.67.13"
},
{
"name": "https://github.com/zitadel/zitadel/releases/tag/v2.68.9",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/zitadel/zitadel/releases/tag/v2.68.9"
},
{
"name": "https://github.com/zitadel/zitadel/releases/tag/v2.69.9",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/zitadel/zitadel/releases/tag/v2.69.9"
},
{
"name": "https://github.com/zitadel/zitadel/releases/tag/v2.70.8",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/zitadel/zitadel/releases/tag/v2.70.8"
},
{
"name": "https://github.com/zitadel/zitadel/releases/tag/v2.71.6",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/zitadel/zitadel/releases/tag/v2.71.6"
}
],
"source": {
"advisory": "GHSA-h3q7-347g-qwhf",
"discovery": "UNKNOWN"
},
"title": "Zitadel Expired JWT Keys Usable for Authorization Grants"
}
},
"cveMetadata": {
"assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"assignerShortName": "GitHub_M",
"cveId": "CVE-2025-31123",
"datePublished": "2025-03-31T19:31:40.507Z",
"dateReserved": "2025-03-26T15:04:52.626Z",
"dateUpdated": "2025-03-31T22:38:38.383Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.1",
"vulnerability-lookup:meta": {
"vulnrichment": {
"containers": "{\"adp\": [{\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2025-31123\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"total\"}], \"version\": \"2.0.3\", \"timestamp\": \"2025-03-31T22:38:16.728894Z\"}}}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2025-03-31T22:38:30.747Z\"}}], \"cna\": {\"title\": \"Zitadel Expired JWT Keys Usable for Authorization Grants\", \"source\": {\"advisory\": \"GHSA-h3q7-347g-qwhf\", \"discovery\": \"UNKNOWN\"}, \"metrics\": [{\"cvssV3_1\": {\"scope\": \"CHANGED\", \"version\": \"3.1\", \"baseScore\": 8.7, \"attackVector\": \"NETWORK\", \"baseSeverity\": \"HIGH\", \"vectorString\": \"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:N\", \"integrityImpact\": \"HIGH\", \"userInteraction\": \"NONE\", \"attackComplexity\": \"LOW\", \"availabilityImpact\": \"NONE\", \"privilegesRequired\": \"HIGH\", \"confidentialityImpact\": \"HIGH\"}}], \"affected\": [{\"vendor\": \"zitadel\", \"product\": \"zitadel\", \"versions\": [{\"status\": \"affected\", \"version\": \"\u003e= 2.62.0, \u003c 2.63.9\"}, {\"status\": \"affected\", \"version\": \"\u003e= 2.64.0-rc.1, \u003c 2.64.6\"}, {\"status\": \"affected\", \"version\": \"\u003e= 2.65.0-rc.1, \u003c 2.65.7\"}, {\"status\": \"affected\", \"version\": \"\u003e= 2.66.0-rc.1, \u003c 2.66.16\"}, {\"status\": \"affected\", \"version\": \"\u003e= 2.67.0-rc.1, \u003c 2.67.13\"}, {\"status\": \"affected\", \"version\": \"\u003e= 2.68.0-rc.1, \u003c 2.68.9\"}, {\"status\": \"affected\", \"version\": \"\u003e= 2.69.0-rc.1, \u003c 2.69.9\"}, {\"status\": \"affected\", \"version\": \"\u003e= 2.70.0-rc.1, \u003c 2.70.8\"}, {\"status\": \"affected\", \"version\": \"\u003e= 2.71.0-rc.1, \u003c 2.71.6\"}]}], \"references\": [{\"url\": \"https://github.com/zitadel/zitadel/security/advisories/GHSA-h3q7-347g-qwhf\", \"name\": \"https://github.com/zitadel/zitadel/security/advisories/GHSA-h3q7-347g-qwhf\", \"tags\": [\"x_refsource_CONFIRM\"]}, {\"url\": \"https://github.com/zitadel/zitadel/commit/315503beabd679f2e6aec0c004f0f9d2f5b53ed3\", \"name\": \"https://github.com/zitadel/zitadel/commit/315503beabd679f2e6aec0c004f0f9d2f5b53ed3\", \"tags\": [\"x_refsource_MISC\"]}, {\"url\": \"https://github.com/zitadel/zitadel/releases/tag/v2.63.9\", \"name\": \"https://github.com/zitadel/zitadel/releases/tag/v2.63.9\", \"tags\": [\"x_refsource_MISC\"]}, {\"url\": \"https://github.com/zitadel/zitadel/releases/tag/v2.64.6\", \"name\": \"https://github.com/zitadel/zitadel/releases/tag/v2.64.6\", \"tags\": [\"x_refsource_MISC\"]}, {\"url\": \"https://github.com/zitadel/zitadel/releases/tag/v2.65.7\", \"name\": \"https://github.com/zitadel/zitadel/releases/tag/v2.65.7\", \"tags\": [\"x_refsource_MISC\"]}, {\"url\": \"https://github.com/zitadel/zitadel/releases/tag/v2.66.16\", \"name\": \"https://github.com/zitadel/zitadel/releases/tag/v2.66.16\", \"tags\": [\"x_refsource_MISC\"]}, {\"url\": \"https://github.com/zitadel/zitadel/releases/tag/v2.67.13\", \"name\": \"https://github.com/zitadel/zitadel/releases/tag/v2.67.13\", \"tags\": [\"x_refsource_MISC\"]}, {\"url\": \"https://github.com/zitadel/zitadel/releases/tag/v2.68.9\", \"name\": \"https://github.com/zitadel/zitadel/releases/tag/v2.68.9\", \"tags\": [\"x_refsource_MISC\"]}, {\"url\": \"https://github.com/zitadel/zitadel/releases/tag/v2.69.9\", \"name\": \"https://github.com/zitadel/zitadel/releases/tag/v2.69.9\", \"tags\": [\"x_refsource_MISC\"]}, {\"url\": \"https://github.com/zitadel/zitadel/releases/tag/v2.70.8\", \"name\": \"https://github.com/zitadel/zitadel/releases/tag/v2.70.8\", \"tags\": [\"x_refsource_MISC\"]}, {\"url\": \"https://github.com/zitadel/zitadel/releases/tag/v2.71.6\", \"name\": \"https://github.com/zitadel/zitadel/releases/tag/v2.71.6\", \"tags\": [\"x_refsource_MISC\"]}], \"descriptions\": [{\"lang\": \"en\", \"value\": \"Zitadel is open-source identity infrastructure software. A vulnerability existed where expired keys can be used to retrieve tokens. Specifically, ZITADEL fails to properly check the expiration date of the JWT key when used for Authorization Grants. This allows an attacker with an expired key to obtain valid access tokens. This vulnerability does not affect the use of JWT Profile for OAuth 2.0 Client Authentication on the Token and Introspection endpoints, which correctly reject expired keys. This vulnerability is fixed in 2.71.6, 2.70.8, 2.69.9, 2.68.9, 2.67.13, 2.66.16, 2.65.7, 2.64.6, and 2.63.9.\"}], \"problemTypes\": [{\"descriptions\": [{\"lang\": \"en\", \"type\": \"CWE\", \"cweId\": \"CWE-324\", \"description\": \"CWE-324: Use of a Key Past its Expiration Date\"}]}], \"providerMetadata\": {\"orgId\": \"a0819718-46f1-4df5-94e2-005712e83aaa\", \"shortName\": \"GitHub_M\", \"dateUpdated\": \"2025-03-31T19:31:40.507Z\"}}}",
"cveMetadata": "{\"cveId\": \"CVE-2025-31123\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2025-03-31T22:38:38.383Z\", \"dateReserved\": \"2025-03-26T15:04:52.626Z\", \"assignerOrgId\": \"a0819718-46f1-4df5-94e2-005712e83aaa\", \"datePublished\": \"2025-03-31T19:31:40.507Z\", \"assignerShortName\": \"GitHub_M\"}",
"dataType": "CVE_RECORD",
"dataVersion": "5.1"
}
}
}
Loading…
Loading…
Sightings
| Author | Source | Type | Date |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Loading…
Loading…