CVE-2020-15237
Timing attack in Shrine
In Shrine before version 3.3.0, when using the derivation_endpoint plugin, it's possible for the attacker to use a timing attack to guess the signature of the derivation URL. The problem has been fixed by comparing sent and calculated signature in constant time, using Rack::Utils.secure_compare. Users using the derivation_endpoint plugin are urged to upgrade to Shrine 3.3.0 or greater. A possible workaround is provided in the linked advisory.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- High
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- None
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
5.9
Timing attack in Shrine
In Shrine before version 3.3.0, when using the derivation_endpoint plugin, it's possible for the attacker to use a timing attack to guess the signature of the derivation URL. The problem has been fixed by comparing sent and calculated signature in constant time, using Rack::Utils.secure_compare. Users using the derivation_endpoint plugin are urged to upgrade to Shrine 3.3.0 or greater. A possible workaround is provided in the linked advisory.
- Record
CVE-2020-15237- CVSS 3.1
- 5.9 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-208, CWE-203
- Updated
- 2026-11-02
EUVDEUVD-2020-1413
5.9
In Shrine before version 3.3.0, when using the derivation_endpoint plugin, it's possible for the attacker to use a timing attack to guess the signature of the derivation URL. The problem has been fixed by comparing sent and calculated signature in constant time, using Rack::Utils.secure_compare. Users using the derivation_endpoint plugin are urged to upgrade to Shrine 3.3.0 or greater. A possible workaround is provided in the linked advisory.
- Record
EUVD-2020-1413- CVSS 3.1
- 5.9 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N - Updated
- 2026-11-03
GitHub AdvisoriesGHSA-5jjv-x4fq-qjwp
5.9
Possible timing attack in derivation_endpoint
Impact
When using the derivation_endpoint plugin, it's possible for the attacker to use a timing attack to guess the signature of the derivation URL.
Patches
The problem has been fixed by comparing sent and calculated signature in constant time, using Rack::Utils.secure_compare. Users using the derivation_endpoint plugin are urged to upgrade to Shrine 3.3.0 or greater.
Workarounds
Users of older Shrine versions can apply the following monkey-patch after loading the derivation_endpoint plugin:
class Shrine
class UrlSigner
def verify_signature(string, signature)
if signature.nil?
fail InvalidSignature, "missing \"signature\" param"
elsif !Rack::Utils.secure_compare(signature, generate_signature(string))
fail InvalidSignature, "provided signature does not match the calculated signature"
end
end
end
end
References
You can read more about timing attacks here.
- Record
GHSA-5jjv-x4fq-qjwp- CVSS 3.1
- 5.9 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-203, CWE-208
- Updated
- 2026-11-02
NVD
5.9
In Shrine before version 3.3.0, when using the derivation_endpoint plugin, it's possible for the attacker to use a timing attack to guess the signature of the derivation URL. The problem has been fixed by comparing sent and calculated signature in constant time, using Rack::Utils.secure_compare. Users using the derivation_endpoint plugin are urged to upgrade to Shrine 3.3.0 or greater. A possible workaround is provided in the linked advisory.
- Record
CVE-2020-15237- CVSS 3.1
- 5.9 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N - CVSS 2.0
- 4.3 Medium
AV:N/AC:M/Au:N/C:P/I:N/A:N - Weakness
- CWE-203, CWE-208
- Updated
- 2026-11-02
OSV
5.9
In Shrine before version 3.3.0, when using the derivation_endpoint plugin, it's possible for the attacker to use a timing attack to guess the signature of the derivation URL. The problem has been fixed by comparing sent and calculated signature in constant time, using Rack::Utils.secure_compare. Users using the derivation_endpoint plugin are urged to upgrade to Shrine 3.3.0 or greater. A possible workaround is provided in the linked advisory.
- Record
CVE-2020-15237- CVSS 3.1
- 5.9 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N - Updated
- 2026-11-02
OSVGHSA-5jjv-x4fq-qjwp
5.9
Possible timing attack in derivation_endpoint
Impact
When using the derivation_endpoint plugin, it's possible for the attacker to use a timing attack to guess the signature of the derivation URL.
Patches
The problem has been fixed by comparing sent and calculated signature in constant time, using Rack::Utils.secure_compare. Users using the derivation_endpoint plugin are urged to upgrade to Shrine 3.3.0 or greater.
Workarounds
Users of older Shrine versions can apply the following monkey-patch after loading the derivation_endpoint plugin:
class Shrine
class UrlSigner
def verify_signature(string, signature)
if signature.nil?
fail InvalidSignature, "missing \"signature\" param"
elsif !Rack::Utils.secure_compare(signature, generate_signature(string))
fail InvalidSignature, "provided signature does not match the calculated signature"
end
end
end
end
References
You can read more about timing attacks here.
- Record
GHSA-5jjv-x4fq-qjwp- CVSS 3.1
- 5.9 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-203, CWE-208
- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
shrineRubyGems |
before 3.3.0 | 3.3.0 |
shrineRubyGems |
before 3.3.0, plus listed versions 0.9.01.0.01.1.01.2.01.3.0 Show 45 moreShow less1.4.01.4.11.4.22.0.02.0.12.1.02.1.12.10.02.10.12.11.02.12.02.13.02.14.02.15.02.16.02.17.02.17.12.18.02.18.12.19.02.19.12.19.22.19.32.19.42.2.02.3.02.3.12.4.02.4.12.5.02.6.02.6.12.7.02.8.02.9.03.0.03.0.0.alpha3.0.0.beta3.0.0.beta23.0.0.beta33.0.0.rc3.0.13.1.03.2.03.2.1 |
3.3.0 |
History
| Recorded | Changed | Sources |
|---|---|---|
| facts | ||
| aliases | EUVD | |
| first indexed | CVE List, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2020-15237 is a medium vulnerability (CVSS 5.9) in Shrinerb Shrine, published October 5, 2020. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 1.01%, the 63rd percentile. Fixed in shrine 3.3.0.
References
github.com/shrinerb/shrine/security/advisories/GHSA-5jjv-x4fq-qjwp
github.com/shrinerb/shrine/commit/1b27090ce31543bf39f186c20ea47c8250fca2f0
nvd.nist.gov/vuln/detail/CVE-2020-15237
github.com/rubysec/ruby-advisory-db/blob/master/gems/shrine/CVE-2020-15237.yml
github.com/advisories/GHSA-5jjv-x4fq-qjwp
github.com/shrinerb/shrine
Left out here: 1 version. The JSON record has them.