W CoreWCF w wersji 1.9.0 mechanizm negocjacji SecurityContextToken (SPNEGO) nieprawidłowo ujawnia klucz dowodowy (proof key) odzyskany z komunikatu RSTR. Umożliwia to atakującemu obserwującemu ruch sieciowy podszycie się pod uwierzytelnionego użytkownika Windows oraz odszyfrowanie lub sfałszowanie ruchu WS-SecureConversation.
▸ Pokaż oryginał (EN)
CoreWCF is a port of the service side of Windows Communication Foundation (WCF) to .NET Core. In version 1.9.0, CoreWCF SPNEGO SecurityContextToken negotiation can expose the proof key recovered from the RSTR when TransportWithMessageCredential with Windows client credentials and session establishment are used, allowing an observer to impersonate the authenticated Windows principal and decrypt or forge WS-SecureConversation traffic. This issue is fixed in version 1.9.1.
Podatność występuje wyłącznie przy konfiguracji TransportWithMessageCredential z poświadczeniami Windows i włączoną sesją (session establishment). W trakcie negocjacji SPNEGO serwer ujawnia proof key zawarty w odpowiedzi RSTR (Request Security Token Response) w sposób dostępny dla obserwatora sesji. Posiadając ten klucz, atakujący może uwierzytelnić się jako legalny użytkownik Windows oraz odczytywać i modyfikować chroniony ruch WS-SecureConversation. Wektor ataku jest sieciowy, lecz wymaga odpowiednich warunków technicznych (AC:H), takich jak możliwość obserwacji ruchu.
Atakujący może podszyć się pod uwierzytelnionego użytkownika Windows (impersonation) oraz odszyfrować lub sfałszować ruch WS-SecureConversation, co prowadzi do naruszenia poufności i integralności komunikacji. Nie stwierdzono bezpośredniego wpływu na dostępność systemu.
Należy zaktualizować CoreWCF do wersji 1.9.1, w której problem został naprawiony. Patche dostępne są w repozytorium projektu na GitHub (tagi v1.9.1). Do czasu aktualizacji, jeśli to możliwe, należy rozważyć wyłączenie session establishment lub zmianę trybu uwierzytelniania.
CoreWCF w wersji 1.9.0, wyłącznie przy konfiguracji TransportWithMessageCredential z poświadczeniami Windows i włączonym mechanizmem ustanawiania sesji (session establishment).
Podatność dotyczy wyłącznie specyficznej konfiguracji (TransportWithMessageCredential + poświadczenia Windows + session establishment). Poprawka dostępna w commitach 2afae08b2fa5288428df89e8161116b816cf6b4b oraz f216aa6929d41dc99cee098b1e69c260ec4c41c7 w repozytorium CoreWCF na GitHub.
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N