Impact
Due to the unauthenticated nature of the encryption a holder off an access_token can change the cipher text in such away, than when decrypted has a different plaintext. Because the subject of the token is stored in this encrypted token, its possible to forge a token with any other user ID. When validated via token introspection this can lead to a complete bypass of the AuthN of any application using the library.
Patches
Note
This change adds signing of opaque tokens. By secure default, all existing opaque access tokens emitted by OP implementations, will be invalid. Users will need to re-login. If you want a more gradual upgrade use the op.WithCrypto() option to pass a op.NewCompositeCrypto(). Use aop.NewAESCrypto() in the Decrypter slice with the existing master key.
This change does not affect client / RP / RS libraries.
References
Impact
Due to the unauthenticated nature of the encryption a holder off an access_token can change the cipher text in such away, than when decrypted has a different plaintext. Because the subject of the token is stored in this encrypted token, its possible to forge a token with any other user ID. When validated via token introspection this can lead to a complete bypass of the AuthN of any application using the library.
Patches
Note
This change adds signing of opaque tokens. By secure default, all existing opaque access tokens emitted by OP implementations, will be invalid. Users will need to re-login. If you want a more gradual upgrade use the
op.WithCrypto()option to pass aop.NewCompositeCrypto(). Use aop.NewAESCrypto()in the Decrypter slice with the existing master key.This change does not affect client / RP / RS libraries.
References