Biblioteka php-jwt 1.0.0 używa funkcji strcmp do weryfikacji tokenów JWT, która nie jest odporna na ataki czasowe (timing side channel). Umożliwia to obejście mechanizmu uwierzytelniania bez znajomości prawidłowego tokenu.
▸ Pokaż oryginał (EN)
php-jwt 1.0.0 uses strcmp (which is not constant time) to verify authentication, which makes it easier to bypass authentication via a timing side channel.
Funkcja strcmp porównuje ciągi znaków znak po znaku i kończy działanie w momencie napotkania pierwszej różnicy, co powoduje zmienność czasu odpowiedzi w zależności od liczby poprawnych znaków na początku porównywanego ciągu. Atakujący może mierzyć czas odpowiedzi serwera dla kolejnych prób i na tej podstawie stopniowo odgadywać prawidłową wartość tokenu JWT. Tego rodzaju podatność, zwana timing side channel (CWE-203), pozwala na odtworzenie sekretu bez bezpośredniego dostępu do jego wartości. Bezpieczna implementacja powinna stosować porównanie w stałym czasie (constant-time comparison).
Atakujący może obejść mechanizm uwierzytelniania oparty na tokenach JWT i uzyskać nieautoryzowany dostęp do zasobów chronionych aplikacji, co zagraża poufności, integralności i dostępności systemu.
Należy zastosować patche dostępne u producenta zgodnie z referencjami. Zaleca się wymianę funkcji strcmp na funkcję porównującą w stałym czasie (np. hash_equals w PHP) we wszystkich miejscach weryfikacji tokenów JWT.
Zihanggao php-jwt w wersji 1.0.0
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HZihanggao PHP Jwt
APPZihanggao1.0.0