W bibliotece Mbed TLS 3.x przed wersją 3.6.1 wykryto błąd w weryfikacji rozszerzeń keyUsage i extKeyUsage certyfikatu klienta podczas uwierzytelniania w protokole TLS 1.3. Podatność umożliwia atakującemu użycie certyfikatu nieprzeznaczonego do uwierzytelniania klienta TLS w celu skutecznego uwierzytelnienia się na serwerze, co stanowi poważne zagrożenie dla kontroli dostępu.
▸ Pokaż oryginał (EN)
An issue was discovered in Mbed TLS 3.x before 3.6.1. With TLS 1.3, when a server enables optional authentication of the client, if the client-provided certificate does not have appropriate values in if keyUsage or extKeyUsage extensions, then the return value of mbedtls_ssl_get_verify_result() would incorrectly have the MBEDTLS_X509_BADCERT_KEY_USAGE and MBEDTLS_X509_BADCERT_KEY_USAGE bits clear. As a result, an attacker that had a certificate valid for uses other than TLS client authentication would nonetheless be able to use it for TLS client authentication. Only TLS 1.3 servers were affected, and only with optional authentication (with required authentication, the handshake would be aborted with a fatal alert).
Gdy serwer TLS 1.3 skonfigurowany jest z opcjonalnym uwierzytelnianiem klienta, funkcja mbedtls_ssl_get_verify_result() nieprawidłowo zwraca wynik bez ustawionych flag MBEDTLS_X509_BADCERT_KEY_USAGE, nawet jeśli certyfikat klienta zawiera nieprawidłowe lub nieodpowiednie wartości w rozszerzeniach keyUsage lub extKeyUsage. W konsekwencji biblioteka nie odrzuca certyfikatu, który nie jest przeznaczony do uwierzytelniania klientów TLS. Atakujący posiadający dowolny ważny certyfikat X.509 (np. wystawiony do innych celów) może go skutecznie użyć do uwierzytelnienia się jako klient TLS 1.3. Podatność dotyczy wyłącznie konfiguracji z opcjonalnym uwierzytelnianiem — w przypadku wymaganego uwierzytelniania handshake jest przerywany z krytycznym alertem.
Atakujący może ominąć mechanizm kontroli dostępu oparty na certyfikatach klienta i uwierzytelnić się na serwerze TLS 1.3 przy użyciu certyfikatu nieprzeznaczonego do tego celu, uzyskując nieautoryzowany dostęp do chronionych zasobów.
Należy zaktualizować Mbed TLS do wersji 3.6.1 lub nowszej. Szczegóły dostępne w oficjalnym komunikacie bezpieczeństwa producenta: https://mbed-tls.readthedocs.io/en/latest/security-advisories/mbedtls-security-advisory-2024-08-3/. Jako obejście można zmienić konfigurację serwera na wymagane uwierzytelnianie klienta (required authentication) zamiast opcjonalnego.
Arm Mbed TLS w wersjach 3.x przed 3.6.1 — wyłącznie serwery TLS 1.3 skonfigurowane z opcjonalnym uwierzytelnianiem klienta (optional client authentication)
Podatność dotyczy wyłącznie protokołu TLS 1.3 i wyłącznie trybu opcjonalnego uwierzytelniania klienta (optional client authentication). Serwery wymagające uwierzytelniania klienta (required authentication) nie są podatne, ponieważ w takim przypadku handshake jest przerywany z krytycznym alertem.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HTrustedfirmware Mbed Tls
APPTrustedfirmware3.2.0 – 3.6.1 (bez)
Powiązane podatności
RCE przez deserializację kontekstu SSL w Mbed TLS
Arm Mbed TLS: podszywanie się pod klienta przy wznawianiu sesji TLS 1.3
Buffer overflow w eksporcie klucza publicznego FFDH w Mbed TLS i TF-PSA-Crypto
Buffer underrun w Mbed TLS podczas zapisu nieprzezroczystej pary kluczy
Stack buffer overflow w Mbed TLS – funkcje konwersji ECDSA