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:
aud
-claimet i JWT-tokenet som gis fra klienten til HelseID iclient_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.typ
-headeren i JWT-tokenet som gis fra klienten til HelseID iclient_assertion
-parameteren må alltid ha verdienclient-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».