Every CVE Search/ Get API key

CVE-2020-15237

Timing attack in Shrine

5.9 MediumFix available

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

1.01%Up 0.4 points since Apr 14, 2021
90%50%10%1%

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 MediumCVSS: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 MediumCVSS: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 MediumCVSS: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 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
CVSS 2.0
4.3 MediumAV: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 MediumCVSS: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 MediumCVSS: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

Affected packages
PackageAffectedFixed
shrine
RubyGems
before 3.3.0
3.3.0
shrine
RubyGems
before 3.3.0, plus listed versions
0.9.01.0.01.1.01.2.01.3.0
Show 45 moreShow less
1.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

History
RecordedChangedSources
facts
aliasesEUVD
first indexedCVE 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

This page doesn't list everything

Left out here: 1 version. The JSON record has them.

MoveEnter Open