Feathersjs has an OAuth Callback Account Takeover
Feathersjs is a framework for creating web APIs and real-time applications with TypeScript or JavaScript. From 5.0.0 to before 5.0.42, an unauthenticated attacker can send a crafted GET request directly to /oauth/:provider/callback with a forged profile in the query string. The OAuth service's authentication payload has a fallback chain that reaches params.query (the raw request query) when Grant's session/state responses are empty. Since the attacker never initiated an OAuth authorize flow, Grant has no session to work with and produces no response, so the fallback fires. The forged profile then drives entity lookup and JWT minting. The attacker gets a valid access token for an existing user without ever contacting the OAuth provider. This vulnerability is fixed in 5.0.42.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-29792
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 3 Nov 2026, 13:13 UTC · Revision 1
Source evidence
Feathersjs has an OAuth Callback Account Takeover
core-osv · Original sourcePublished 10 Mar 2026, 20:06 UTC
Feathersjs is a framework for creating web APIs and real-time applications with TypeScript or JavaScript. From 5.0.0 to before 5.0.42, an unauthenticated attacker can send a crafted GET request directly to /oauth/:provider/callback with a forged profile in the query string. The OAuth service's authentication payload has a fallback chain that reaches params.query (the raw request query) when Grant's session/state responses are empty. Since the attacker never initiated an OAuth authorize flow, Grant has no session to work with and produces no response, so the fallback fires. The forged profile then drives entity lookup and JWT minting. The attacker gets a valid access token for an existing user without ever contacting the OAuth provider. This vulnerability is fixed in 5.0.42.
osv:CVE-2026-29792
Complete source record
{
"id": "87d93b44e6a33feaa5c00180507833ebd43e6841df509161f724adb58cb1af0e",
"url": "https://osv.dev/vulnerability/CVE-2026-29792",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "Feathersjs has an OAuth Callback Account Takeover",
"summary": "Feathersjs is a framework for creating web APIs and real-time applications with TypeScript or JavaScript. From 5.0.0 to before 5.0.42, an unauthenticated attacker can send a crafted GET request directly to /oauth/:provider/callback with a forged profile in the query string. The OAuth service's authentication payload has a fallback chain that reaches params.query (the raw request query) when Grant's session/state responses are empty. Since the attacker never initiated an OAuth authorize flow, Grant has no session to work with and produces no response, so the fallback fires. The forged profile then drives entity lookup and JWT minting. The attacker gets a valid access token for an existing user without ever contacting the OAuth provider. This vulnerability is fixed in 5.0.42.",
"evidence": "osv:CVE-2026-29792",
"products": [],
"severity": "critical",
"structured": {
"id": "CVE-2026-29792",
"aliases": [
"CVE-2026-29792",
"GHSA-wg9x-qfgw-pxhj"
],
"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/feathersjs/feathers",
"type": "GIT",
"events": [
{
"introduced": "90caf635aec850550b9d37bea2762af959d9e8d5"
},
{
"fixed": "fe1f2bc8bb2b55762be1a676ac98eb89f2f2ab9d"
}
],
"database_specific": {
"extracted_events": [
{
"range": [
{
"introduced": "5.0.0"
},
{
"fixed": "5.0.42"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StringRangeExpression"
},
{
"cpe": "cpe:2.3:a:feathersjs:feathers:*:*:*:*:*:node.js:*:*",
"range": [
{
"introduced": "5.0.0"
},
{
"fixed": "5.0.42"
}
],
"source": "CPE_RANGE"
}
]
}
}
],
"versions": [
"v5.0.41",
"v5.0.40",
"v5.0.39",
"v5.0.38",
"v5.0.37",
"v5.0.36",
"v5.0.35",
"v5.0.34",
"v5.0.33",
"v5.0.32",
"v5.0.31",
"v5.0.30",
"v5.0.29",
"v5.0.28",
"v5.0.27",
"v5.0.26",
"v5.0.25",
"v5.0.24",
"v5.0.23",
"v5.0.22",
"v5.0.21",
"v5.0.20",
"v5.0.19",
"v5.0.18",
"v5.0.17",
"v5.0.16",
"v5.0.15",
"v5.0.14",
"v5.0.13",
"v5.0.12",
"v5.0.11",
"v5.0.10",
"v5.0.9",
"v5.0.8",
"v5.0.7",
"v5.0.6",
"v5.0.5",
"v5.0.4",
"v5.0.3",
"v5.0.2",
"v5.0.1",
"v5.0.0"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-29792.json"
}
}
],
"modified": "2026-10-28T02:30:28.880116878Z",
"provider": "osv",
"references": [
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/29xxx/CVE-2026-29792.json",
"https://github.com/feathersjs/feathers/security/advisories/GHSA-wg9x-qfgw-pxhj",
"https://nvd.nist.gov/vuln/detail/CVE-2026-29792"
],
"provider_metadata": {
"cwe_ids": [
"CWE-287"
],
"cna_assigner": "GitHub_M",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/29xxx/CVE-2026-29792.json"
}
},
"related_cves": [
{
"value": "CVE-2026-29792",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 495720,
"published_at": "2026-03-10T20:06:34.801+00:00"
}