-
Notifications
You must be signed in to change notification settings - Fork 23
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
direct_post response mode, response with a redirect_uri, and protection against session fixation #25
Comments
Imported from AB/Connect bitbucket - Original Commenter: KristinaYasudaHi, direct_post with redirect_uri is meant to be used with both same-device and cross-device. that’s why the text in section 10.5, does not specify which flow it is for. There is no need for the user to type anything to protect the flow. just like section 11.2 explains, there is a need for a shared secret between the verifier front end and backend:
|
Imported from AB/Connect bitbucket - Original Commenter: pedro-felixThanks. On a cross-device scenario, the user-agent opened by the wallet to do the GET on the Using the diagram on section 10.5:
|
Imported from AB/Connect bitbucket - Original Commenter: KristinaYasudaI don’t think it is association between the first session where the verification was initiated (steps 1-4) and the redirect from the wallet in step 7 that prevents this attack. Let’s say the attacker starts the request with verifier-1, replay it to the victim, victim POSTs the data to the verifier-1’s response_uri, verifier sends the response to the Wallet with the redirect_uri and the response_code. If Wallet successfully redirects the victim to the verifier-1’s front-end, verifier-1’s front-end has correct response_code to fetch the data from the back-end, so the victim will be logged in as the attacker on the victim’s device, because it is a redirect on the same device where the victim’s wallet resides - no value to the attacker. Now, the attacker will try to fetch the data that the victim’s wallet posted to the Verifier-1’s backend before the Verifier-1’s front end does so. However, the attacker cannot do so, because it does not have a response_code because the redirect with the response_code went to the Verifier-1’s front end,. Hope this helps. (cc: @{5b73d0fb816d1805baacb64f} since I am sure he can explain better :) ) |
Imported from AB/Connect bitbucket - Original Commenter: judkaSection 10.5 indicates that there is indeed an association between the first session and the verification: “(8) The Verifier sends the |
Imported from AB/Connect bitbucket - Original Commenter: fabian-hkI agree, but I think that's why there's a note in step (8) saying that if no redirect URL is sent, it will just poll the response endpoint. I don't really understand the use case of starting authentication on one device and sending the response code to a browser on another device. @kristina Yasuda Can you explain this in more detail? |
Imported from AB/Connect bitbucket - Original Commenter: pedro-felixThis issue was discussed at the 2023-07-14 SIOP Special Topic Call:
|
Imported from AB/Connect bitbucket - Original Commenter: fabian-hkThanks for the answer. That makes a lot more sense. But in the cross-device scenario, this only helps if the user pays attention to the URL of the website where they enter the response code, right? So it is similar to the strategy where the user has to check the URL of the verifier in the wallet. I think this is a weak mitigation against the cross-device flow attack because most users will probably not pay attention to it, or am I missing something here? |
Imported from AB/Connect bitbucket - Original Commenter: pedro-felixConsidering option B:
|
@pmhsfelix @fabian-hk has this issue been resolved? |
I don't think so. |
@pmhsfelix what are specific asks to be changed/improved in the spec? |
|
Can you explain how this check could be implemented? We couldn't come up with a way on #134
We have a reference in 12.2. |
Discussed on today's WG call. @pmhsfelix to raise a PR to make clear that session fixation doesn't work in the general cross device case and the verifier needs to handle this case differently as control will be returned to the verifier in a browser which doesn't have the original session. |
gh-25: clarify applicability of the redirect_uri protection technique
Imported from AB/Connect bitbucket: https://bitbucket.org/openid/connect/issues/1951
Original Reporter: pedro-felix
In the context of the OpenID4VP draft 18, I’ve have some questions regarding the
direct_post
response mode, responding with aredirect_uri
, and protection against session fixation.The use of a payload containing a
redirect_uri
when responding to the POST with the Authorization Response, namely the algorithm described in https://openid.net/specs/openid-4-verifiable-presentations-1_0.html#section-10.5, is only effective when on a same-device scenario, right? If so, the spec should make that information more clearer.Even on a same-device scenario, the algorithm on section 10.5 only works if the wallet opens the same user-agent/browser as the one used initially by the user to interact with the verifier, right? If so, that can be an issue when the user has multiple browsers installed.
How can the
redirect_uri
also be usable on cross-device scenarios to protect against session fixation?redirect_uri
present a code that needs to be presented directly at the verifier (on the initial session between the user and the verifier)?
The text was updated successfully, but these errors were encountered: