Hi Aaron, Neil

Thanks for the questions.

We agree that ideally authorization codes and PKCE proofs would never end up in 
log files and one-time use would be perfectly implemented.

However, in practice these artefacts do find their way into log files in 
various places and one-time use may not always be practical (e.g. one-time use 
in a certain timeframe etc).

The addition of these mitigations is not meant to replace the need for one-time 
use or good logging hygiene. Instead they provide pragmatic defence in depth 
against real attacks rather than assuming perfect implementations. We are 
deploying these mitigations and are sharing them for inclusion in DPoP to 
enable others to do the same.

Regarding the question about interrupting/intercepting the HTTPS connection, 
the attacker don't need to intercept the HTTPS connection or modify the content 
in the TLS tunnel, rather they just need to prevent the authorization code from 
being presented to the Authorization Server. It may even happen due to a poor 
network connection. The poor connection may be engineered by an attacker, or 
they may opportunistically benefit from it. The networks are not perfect either.

Cheers

Pieter


From: OAuth <oauth-boun...@ietf.org> On Behalf Of Aaron Parecki
Sent: Wednesday 1 December 2021 00:05
To: Neil Madden <neil.mad...@forgerock.com>
Cc: Mike Jones <Michael.Jones=40microsoft....@dmarc.ietf.org>; oauth@ietf.org
Subject: [EXTERNAL] Re: [OAUTH-WG] dpop_jkt Authorization Request Parameter

I tend to agree with Neil here. I'm struggling to see the relevance of this 
attack.

It seems like the PDF writeup describes two possible reasons an attacker could 
get access to the authorization code and PKCE code verifier.

1. The attacker has access to the logs of the token endpoint.
2. The attacker can intercept HTTPS connections between the client and AS (VPN, 
corporate network proxy, etc)

For 1, the solution is to stop logging the contents of the POST body, and 
secure your infrastructure. I don't think making the client jump through extra 
hoops is a good solution if you are already logging more than you should be or 
you don't trust the people who have access to the infrastructure. If this 
really is a concern, I suspect there are a lot more places in the flow that 
would need to be patched up if you don't trust your own token endpoint.

For 2, if the attacker can intercept the HTTPS connection, then the proposed 
solution doesn't add anything because the attacker could modify the requests 
before it hits the authorization server anyway, and change which DPoP key the 
token gets bound to in the first place. Plus, the attacker would also have 
access to anything else the client is sending to the AS, such as the user's 
password when they authenticate at the AS.

Are there other attack vectors I'm missing that might actually be solved by 
this mechanism?

Aaron


On Tue, Nov 30, 2021 at 12:40 PM Neil Madden 
<neil.mad...@forgerock.com<mailto:neil.mad...@forgerock.com>> wrote:
Sadly I couldn't make the DPoP session, but I'm not convinced the attack 
described in the earlier message really needs to be prevented at all. The 
attack largely hinges on auth codes not being one-time use, which is not a good 
idea, or otherwise on poor network security on the token endpoint. I'm not 
convinced DPoP needs to protect against these things. Is there more to this?

The proposed solutions also seem susceptible to the same problems they attempt 
to solve - if an attacker is somehow able to interrupt the client's 
(TLS-protected) token request, why are they somehow not able to 
interrupt/modify the (far less protected) redirect to the authorization 
endpoint?

- Neil


On 30 Nov 2021, at 20:15, Mike Jones 
<Michael.Jones=40microsoft....@dmarc.ietf.org<mailto:Michael.Jones=40microsoft....@dmarc.ietf.org>>
 wrote:

As described during the OAuth Security Workshop session on DPoP, I created a 
pull request adding the dpop_jkt authorization request parameter to use for 
binding the authorization code to the client's DPoP key.  
Seehttps://github.com/danielfett/draft-dpop/pull/89<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fdanielfett%2Fdraft-dpop%2Fpull%2F89&data=04%7C01%7Cpieter.kasselman%40microsoft.com%7C73630bc47d8447ad414708d9b45e504e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637739139477365460%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=yymmaey9B%2BkfhDNPCzjyuHdkKMGmzSA3C7dZRAOz4cc%3D&reserved=0>.

This is an alternative to 
https://github.com/danielfett/draft-dpop/pull/86<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fdanielfett%2Fdraft-dpop%2Fpull%2F86&data=04%7C01%7Cpieter.kasselman%40microsoft.com%7C73630bc47d8447ad414708d9b45e504e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637739139477365460%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=reAU2tGLoiZcEstAyCjd3TpYHjbC%2FxlvaSOcFdwEcqg%3D&reserved=0>,
 which achieved this binding using a new DPoP PKCE method.  Using this 
alternative allows PKCE implementations to be unmodified, while adding DPoP in 
new code, which may be an advantage in some deployments.

Please review and comment.  Note that I plan to add more of the attack 
description written by Pieter Kasselman to the security considerations in a 
future commit.  This attack description was sent by Pieter yesterday in a 
message with the subject "Authorization Code Log File Attack (was DPoP Interim 
Meeting Minutes)".

                                                       -- Mike

_______________________________________________
OAuth mailing list
OAuth@ietf.org<mailto:OAuth@ietf.org>
https://www.ietf.org/mailman/listinfo/oauth<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.ietf.org%2Fmailman%2Flistinfo%2Foauth&data=04%7C01%7Cpieter.kasselman%40microsoft.com%7C73630bc47d8447ad414708d9b45e504e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637739139477365460%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=%2FijJyL4AbGch83O%2B6gxmRN%2FpwXqH5ejIa46pZ0gImy0%3D&reserved=0>

_______________________________________________
OAuth mailing list
OAuth@ietf.org<mailto:OAuth@ietf.org>
https://www.ietf.org/mailman/listinfo/oauth<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.ietf.org%2Fmailman%2Flistinfo%2Foauth&data=04%7C01%7Cpieter.kasselman%40microsoft.com%7C73630bc47d8447ad414708d9b45e504e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637739139477365460%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=%2FijJyL4AbGch83O%2B6gxmRN%2FpwXqH5ejIa46pZ0gImy0%3D&reserved=0>
_______________________________________________
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to