W module Node.js jsonwebtoken przed wersją 4.2.2 atakujący może ominąć weryfikację podpisu tokenu JWT. Podatność pozwala na sfałszowanie tokenu podpisanego algorytmem symetrycznym (HS*) w miejsce oczekiwanego algorytmu asymetrycznego (RS/ES), co prowadzi do pełnego przejęcia uwierzytelnienia.
▸ Pokaż oryginał (EN)
In jsonwebtoken node module before 4.2.2 it is possible for an attacker to bypass verification when a token digitally signed with an asymmetric key (RS/ES family) of algorithms but instead the attacker send a token digitally signed with a symmetric algorithm (HS* family).
Serwer jest skonfigurowany do weryfikacji tokenów JWT podpisanych algorytmem asymetrycznym (np. RS256 lub ES256) przy użyciu klucza publicznego. Atakujący tworzy własny token i podpisuje go algorytmem symetrycznym (np. HS256), używając jako tajnego klucza wartości klucza publicznego serwera. Podatna biblioteka nie sprawdza poprawnie, czy algorytm wskazany w nagłówku tokenu jest zgodny z oczekiwanym przez aplikację — akceptuje token podpisany algorytmem HS*, traktując klucz publiczny jako klucz symetryczny. W efekcie weryfikacja podpisu kończy się powodzeniem dla sfałszowanego tokenu.
Atakujący może sfałszować dowolny token JWT bez znajomości klucza prywatnego, skutecznie podszywając się pod dowolnego użytkownika lub uzyskując nieautoryzowany dostęp do zasobów chronionych uwierzytelnieniem opartym na JWT.
Należy zaktualizować moduł jsonwebtoken do wersji 4.2.2 lub nowszej. Poprawka dostępna w commicie 1bb584bc382295eeb7ee8c4452a673a77a68b687 w repozytorium GitHub auth0/node-jsonwebtoken. Aplikacje korzystające z weryfikacji tokenów JWT opartej na algorytmach asymetrycznych powinny jawnie wymuszać oczekiwany algorytm po stronie weryfikacji.
Auth0 jsonwebtoken (moduł Node.js) przed wersją 4.2.2
Podatność jest znana jako atak 'algorithm confusion' lub 'alg:none/HS* confusion' i była opisana publicznie przez badaczy w 2015 roku na blogu Auth0 oraz przez Tima McLeana. Pomimo daty publikacji CVE (2018-05-29), sam problem był znany i naprawiony już w 2015 roku.
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HAuth0 Jsonwebtoken
APPAuth0< 4.2.2
Powiązane podatności
Versions `<=8.5.1` of `jsonwebtoken` library could be misconfigured so that legacy, insecure key types are use...
In versions `<=8.5.1` of `jsonwebtoken` library, lack of algorithm definition in the `jwt.verify()` function c...
jsonwebtoken is an implementation of JSON Web Tokens. Versions `<= 8.5.1` of `jsonwebtoken` library can be mis...
CSV injection w pluginie Login by Auth0 dla WordPress (przed 4.0.0)
Auth0 WCF Service JWT — wyciek sygnatury tokenu w komunikacie błędu