Sårbarhet i OpenID Connect

Som en konsekvens av en sårbarhet i OpenID Connect, har det blitt gjort endringer for bruk av parameteren private_key_jwt, som i HelseID brukes for klientautentisering. Endringene blir innført som en ny spesifikasjon, som utdaterer RFC7523, og gir forandringer for blant annet RFC7521 og RFC9126.

  • Sårbarheten utnyttes ved at en angriper i noen situasjoner kan kontrollere verdier i Audience-claimet i client_assertion, som sendes fra klienten
  • Sårbarheten kan la en angriper utgi seg for å være en legitim klient
  • Det er flere forutsetninger som må oppfylles for at angrepet skal være vellykket, og vi anser sannsynligheten for misbruk som lav
  • Det har ennå ikke blitt oppdaget kjente angrep av denne typen

Parameteren private_key_jwt er den eneste måten for klientautentisering i HelseID. Derfor må alle klientsystemer gjøre endringer, enten i kode, og/eller i konfigurasjon. Endringene som en leverandør må gjøre for å dempe sårbarheten er følgende:

  1. aud-claimet i JWT-tokenet som gis fra klienten til HelseID i client_assertion-parameteren må alltid ha verdien https://helseid-sts.nhn.no i produksjon og https://helseid-sts.test.nhn.no i test. Ingen andre verdier vil bli godtatt. Noen leverandører kan ha brukt andre verdier, og må derfor sjekke at klientsystemet er i samsvar med de godtatte verdiene. Dette er en ny endring av spesifikasjonen, som utdaterer alle andre typer av verdier.
  2. typ-headeren i JWT-tokenet som gis fra klienten til HelseID i client_assertion-parameteren må alltid ha verdien client-authentication+jwt. Ingen andre verdier vil bli godtatt. Dette er en helt ny endring i spesifikasjonen.

En client_assertion kan altså se slik ut, legg merke til typ- og aud-verdiene:

{
  "alg": "RS256",
  "kid": "AE16FAAAAAC3E5998BD19CB895DB95E9",
  "typ": "client-authentication+jwt"
}.{
  "sub": "YOUR CLIENT ID",
  "iat": 1677743803,
  "jti": "892ba3d44a37411ebc92482234176157",
  "nbf": 1677743803,
  "exp": 1677743863,
  "iss": "YOUR CLIENT ID",
  "aud": "https://helseid-sts.test.nhn.no"
}.[Signature]

Verdiene er beskrevet i dokumentet «Bruk av client assertion for klientautentisering i HelseID».

Dette er en brekkende endring som vil kreve tilpasninger (i kode eller konfigurasjon) i alle klientsystemer. Av hensyn til sikkerheten vil HelseID planelegge endringene i løpet av juni 2025. I TEST-miljøet vil endringen bli innført i løpet av april.


PS: Vi anbefaler dessuten at alle som ikke har implementert PAR og DPoP, også tar disse sikkerhetstiltakene i bruk.