Software:
---------
Doorkeeper (https://github.com/doorkeeper-gem/doorkeeper)
Description:
------------
Doorkeeper is an OAuth 2 provider for Rails written in Ruby.
Affected Versions:
------------------
2.1.0 - 4.2.5
Fixed Versions:
---------------
4.2.6 or later
Problem:
--------
Stored XSS on the OAuth Client's name will cause users being prompted
for consent via the "implicit" grant type to execute the XSS payload.
The XSS attack could gain access to the user's active session,
resulting in account compromise.
Any user is susceptible if they click the authorization link for the
malicious OAuth client. Because of how the links work, a user cannot
tell if a link is malicious or not without first visiting the page
with the XSS payload.
The requirement for this attack to be dangerous in the wild is the
software using Doorkeeper must allow regular users to create or edit
OAuth client applications.
If 3rd parties are allowed to create OAuth clients in the app using
Doorkeeper, upgrade to the patched versions immediately.
Additionally there is stored XSS in the native_redirect_uri form element.
DWF has assigned CVE-2018-1000088.
Solution:
---------
Upgrade to Doorkeeper v4.2.6 or later
Timeline:
---------
2017-05-25: Discovered by Gauthier Monserand[0]
2017-05:25: Fix prepared by Gauthier Monserand[1]
2017-05-26: Maintainer released patched version
2018-02-17: CVE requested
2018-02-20: CVE assigned via DWF
2018-02-21: Bulletin published[2]
Acknowledgements:
-----------------
Credit to Gauthier Monserand (https://github.com/simkim) for finding
and fixing this vulnerability.
References:
-----------
[0]: https://github.com/doorkeeper-gem/doorkeeper/issues/969
[1]: https://github.com/doorkeeper-gem/doorkeeper/pull/970
[2]: https://blog.justinbull.ca/cve-2018-1000088-stored-xss-in-doorkeeper/
--
UPDATE:
>
> Solution:
> ---------
> Upgrade to Doorkeeper v4.2.6 or later
>
>
Apologies. This fails to account for a non-trivial scenario.
Any software using Doorkeeper that has generated its own custom views[0]
requires manual work to verify there's no explicit HTML in the
`client_name` and `native_redirect_uri` field values.
This has been updated in the bulletin's Fix section[1].
[0]: https://github.com/doorkeeper-gem/doorkeeper/wiki/Customizing-views
[1]:
https://blog.justinbull.ca/cve-2018-1000088-stored-xss-in-doorkeeper/#fix
--
Justin Bull
PGP Fingerprint: E09D 38DE 8FB7 5745 2044 A0F4 1A2B DEAA 68FD B34C