Podatność w frameworku Feathers.js (wersje 5.0.0–5.0.41) pozwala nieuwierzytelnionemu atakującemu uzyskać ważny token JWT dla istniejącego użytkownika bez interakcji z dostawcą OAuth. Jest to krytyczna luka auth bypass umożliwiająca całkowite przejęcie konta.
▸ Pokaż oryginał (EN)
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.
Atakujący wysyła spreparowane żądanie GET bezpośrednio do endpointu /oauth/:provider/callback, umieszczając sfałszowany profil użytkownika w query stringu. Ponieważ atakujący nigdy nie zainicjował właściwego przepływu OAuth, biblioteka Grant nie dysponuje żadną sesją ani danymi stanu, co powoduje uruchomienie mechanizmu fallback w łańcuchu przetwarzania payloadu uwierzytelnienia. Fallback sięga do surowych parametrów żądania (params.query), gdzie atakujący umieścił sfałszowany profil. Na podstawie tych danych system wyszukuje encję użytkownika i generuje token JWT — bez jakiegokolwiek kontaktu z rzeczywistym dostawcą OAuth.
Atakujący bez żadnego uwierzytelnienia uzyskuje ważny token dostępu JWT przypisany do istniejącego konta użytkownika, co umożliwia mu pełne podszywanie się pod tę osobę i dostęp do wszystkich zasobów chronionych tym tokenem.
Należy jak najszybciej zaktualizować Feathers.js do wersji 5.0.42, w której podatność została usunięta. Do czasu wdrożenia patcha zaleca się rozważenie tymczasowego zablokowania dostępu do endpointów /oauth/:provider/callback na poziomie firewall lub reverse proxy.
Feathersjs Feathers w wersjach od 5.0.0 do 5.0.41 (przed 5.0.42)
Podatność zgłoszona i naprawiona przez zespół Feathersjs. Szczegóły techniczne dostępne w oficjalnym security advisory GHSA-wg9x-qfgw-pxhj na GitHub.
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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:XFeathersjs Feathers
APPFeathersjs5.0.0 – 5.0.42 (bez)
Powiązane podatności
Feathers.js – wstrzyknięcie operatorów MongoDB przez Socket.IO (NoSQL Injection)
Feathersjs is a framework for creating web APIs and real-time applications with TypeScript or JavaScript. Vers...
Feathersjs is a framework for creating web APIs and real-time applications with TypeScript or JavaScript. In v...
Feathersjs is a framework for creating web APIs and real-time applications with TypeScript or JavaScript. In v...
Feathersjs is a framework for creating web APIs and real-time applications with TypeScript or JavaScript. Feat...