{"id":"CVE-2020-10187","aliases":["DEBIAN-CVE-2020-10187","EUVD-2020-0426","GHSA-j7vx-8mqj-cqp9"],"status":"published","title":"Exposure of Sensitive Information to an Unauthorized Actor in Doorkeeper","description":"Doorkeeper version 5.0.0 and later contains an information disclosure vulnerability that allows an attacker to retrieve the client secret only intended for the OAuth application owner. After authorizing the application and allowing access, the attacker simply needs to request the list of their authorized applications in a JSON format (usually GET /oauth/authorized_applications.json). An application is vulnerable if the authorized applications controller is enabled.","severity":{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N","level":"high","assessor":"primary","from":"nvd"},"epss":{"day":"2026-11-09","score":0.01782,"percentile":0.78428,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-862"],"published":"2020-05-04T13:19:04Z","modified":"2026-10-26T12:00:08Z","fixes":[{"ecosystem":"RubyGems","package":"doorkeeper","fixed_in":["5.0.3","5.1.1","5.2.5","5.3.2"],"sources":["ghsa","osv"]},{"ecosystem":"Debian:12","package":"ruby-doorkeeper","fixed_in":["5.0.3-1"],"sources":["osv"]},{"ecosystem":"Debian:13","package":"ruby-doorkeeper","fixed_in":["5.0.3-1"],"sources":["osv"]},{"ecosystem":"Debian:14","package":"ruby-doorkeeper","fixed_in":["5.0.3-1"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"RubyGems","package":"doorkeeper","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"5.0.0"},{"fixed":"5.0.3"}]}]},{"source":"ghsa","ecosystem":"RubyGems","package":"doorkeeper","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"5.1.0"},{"last_affected":"5.1.0"},{"fixed":"5.1.1"}]}],"versions":["5.1.0"]},{"source":"ghsa","ecosystem":"RubyGems","package":"doorkeeper","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"5.2.0"},{"fixed":"5.2.5"}]}]},{"source":"ghsa","ecosystem":"RubyGems","package":"doorkeeper","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"5.3.0"},{"fixed":"5.3.2"}]}]},{"source":"osv","ecosystem":"Debian:12","package":"ruby-doorkeeper","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"5.0.3-1"}]}]},{"source":"osv","ecosystem":"Debian:13","package":"ruby-doorkeeper","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"5.0.3-1"}]}]},{"source":"osv","ecosystem":"Debian:14","package":"ruby-doorkeeper","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"5.0.3-1"}]}]},{"source":"osv","ecosystem":"RubyGems","package":"doorkeeper","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"5.0.0"},{"fixed":"5.0.3"}]}],"versions":["5.0.0","5.0.1","5.0.2"]},{"source":"osv","ecosystem":"RubyGems","package":"doorkeeper","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"5.1.0"},{"fixed":"5.1.1"}]}],"versions":["5.1.0"]},{"source":"osv","ecosystem":"RubyGems","package":"doorkeeper","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"5.2.0"},{"fixed":"5.2.5"}]}],"versions":["5.2.0","5.2.1","5.2.2","5.2.3","5.2.4"]},{"source":"osv","ecosystem":"RubyGems","package":"doorkeeper","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"5.3.0"},{"fixed":"5.3.2"}]}],"versions":["5.3.0","5.3.1"]}],"products":[{"vendor":"doorkeeper_project","product":"doorkeeper"}],"references":[{"url":"https://github.com/doorkeeper-gem/doorkeeper/releases","tags":["x_refsource_MISC","x_transferred","Release Notes","Third Party Advisory","advisory","web"]},{"url":"https://github.com/doorkeeper-gem/doorkeeper/commit/25d038022c2fcad45af5b73f9d003cf38ff491f6","tags":["x_refsource_MISC","x_transferred","Patch","Third Party Advisory","fix","web"]},{"url":"https://github.com/doorkeeper-gem/doorkeeper/security/advisories/GHSA-j7vx-8mqj-cqp9","tags":["x_refsource_MISC","x_transferred","Patch","Third Party Advisory","fix","web"]},{"url":"https://github.com/rubysec/ruby-advisory-db/pull/446","tags":["x_refsource_MISC","x_transferred","Patch","Third Party Advisory","fix","web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2020-10187","tags":["advisory"]},{"url":"https://github.com/rubysec/ruby-advisory-db/blob/master/gems/doorkeeper/CVE-2020-10187.yml","tags":["web"]},{"url":"https://github.com/advisories/GHSA-j7vx-8mqj-cqp9"},{"url":"https://security-tracker.debian.org/tracker/CVE-2020-10187","tags":["advisory"]}],"sources":{"cve":[{"id":"CVE-2020-10187","description":"Doorkeeper version 5.0.0 and later contains an information disclosure vulnerability that allows an attacker to retrieve the client secret only intended for the OAuth application owner. After authorizing the application and allowing access, the attacker simply needs to request the list of their authorized applications in a JSON format (usually GET /oauth/authorized_applications.json). An application is vulnerable if the authorized applications controller is enabled.","status":"published","published":"2020-05-04T13:19:04Z","modified":"2024-08-04T10:58:39.628Z","updated_at":"2026-11-02T14:35:48.213211Z"}],"euvd":[{"id":"EUVD-2020-0426","description":"Doorkeeper version 5.0.0 and later contains an information disclosure vulnerability that allows an attacker to retrieve the client secret only intended for the OAuth application owner. After authorizing the application and allowing access, the attacker simply needs to request the list of their authorized applications in a JSON format (usually GET /oauth/authorized_applications.json). An application is vulnerable if the authorized applications controller is enabled.","status":"published","published":"2020-05-04T13:19:04Z","modified":"2024-08-04T10:58:39Z","updated_at":"2026-11-03T03:07:50.893254Z"}],"ghsa":[{"id":"GHSA-j7vx-8mqj-cqp9","title":"Exposure of Sensitive Information to an Unauthorized Actor in Doorkeeper","description":"### Impact\nInformation disclosure vulnerability. Allows an attacker to see all `Doorkeeper::Application` model attribute values (including secrets) using authorized applications controller if it's enabled (GET /oauth/authorized_applications.json).\n\n### Patches\n\nThese versions have the fix:\n\n* 5.0.3\n* 5.1.1\n* 5.2.5\n* 5.3.2\n\n### Workarounds\nPatch `Doorkeeper::Application` model `#as_json(options = {})` method and define only those attributes you want to expose.\n\nAdditional recommended hardening is to enable application secrets hashing ([guide](https://doorkeeper.gitbook.io/guides/security/token-and-application-secrets)), available since Doorkeeper 5.1. This would render the exposed secret useless.\n\n### References\n\n- Commit with fix: https://github.com/doorkeeper-gem/doorkeeper/commit/25d038022c2fcad45af5b73f9d003cf38ff491f6\n- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-10187","status":"published","published":"2020-05-07T21:11:07Z","modified":"2023-05-04T19:47:01Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N","level":"high"}],"cwes":["CWE-862"],"updated_at":"2026-11-02T14:36:52.310293Z"}],"nvd":[{"id":"CVE-2020-10187","description":"Doorkeeper version 5.0.0 and later contains an information disclosure vulnerability that allows an attacker to retrieve the client secret only intended for the OAuth application owner. After authorizing the application and allowing access, the attacker simply needs to request the list of their authorized applications in a JSON format (usually GET /oauth/authorized_applications.json). An application is vulnerable if the authorized applications controller is enabled.","status":"published","published":"2020-05-04T14:15:13.013Z","modified":"2026-06-17T02:47:27.633Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N","level":"high","assessor":"primary"},{"version":"2.0","score":4.3,"vector":"AV:N/AC:M/Au:N/C:P/I:N/A:N","level":"medium","assessor":"primary"}],"cwes":["CWE-862"],"updated_at":"2026-11-02T14:05:59.718774Z"}],"osv":[{"id":"CVE-2020-10187","description":"Doorkeeper version 5.0.0 and later contains an information disclosure vulnerability that allows an attacker to retrieve the client secret only intended for the OAuth application owner. After authorizing the application and allowing access, the attacker simply needs to request the list of their authorized applications in a JSON format (usually GET /oauth/authorized_applications.json). An application is vulnerable if the authorized applications controller is enabled.","status":"published","published":"2020-05-04T14:15:13.013Z","modified":"2026-10-20T10:50:58.359325136Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N","level":"high"}],"updated_at":"2026-11-02T15:44:13.492058Z"},{"id":"DEBIAN-CVE-2020-10187","description":"Doorkeeper version 5.0.0 and later contains an information disclosure vulnerability that allows an attacker to retrieve the client secret only intended for the OAuth application owner. After authorizing the application and allowing access, the attacker simply needs to request the list of their authorized applications in a JSON format (usually GET /oauth/authorized_applications.json). An application is vulnerable if the authorized applications controller is enabled.","status":"published","published":"2020-05-04T14:15:13.013Z","modified":"2026-10-26T12:00:08.682918185Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N","level":"high"}],"updated_at":"2026-11-02T15:45:32.862554Z"},{"id":"GHSA-j7vx-8mqj-cqp9","title":"Exposure of Sensitive Information to an Unauthorized Actor in Doorkeeper","description":"### Impact\nInformation disclosure vulnerability. Allows an attacker to see all `Doorkeeper::Application` model attribute values (including secrets) using authorized applications controller if it's enabled (GET /oauth/authorized_applications.json).\n\n### Patches\n\nThese versions have the fix:\n\n* 5.0.3\n* 5.1.1\n* 5.2.5\n* 5.3.2\n\n### Workarounds\nPatch `Doorkeeper::Application` model `#as_json(options = {})` method and define only those attributes you want to expose.\n\nAdditional recommended hardening is to enable application secrets hashing ([guide](https://doorkeeper.gitbook.io/guides/security/token-and-application-secrets)), available since Doorkeeper 5.1. This would render the exposed secret useless.\n\n### References\n\n- Commit with fix: https://github.com/doorkeeper-gem/doorkeeper/commit/25d038022c2fcad45af5b73f9d003cf38ff491f6\n- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-10187","status":"published","published":"2020-05-07T21:11:07Z","modified":"2026-09-10T03:48:45.853099273Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N","level":"high"}],"cwes":["CWE-862"],"updated_at":"2026-11-02T15:46:49.977351Z"}]}}
