CVE-2020-14001
Unintended read access in kramdown gem
The kramdown gem before 2.3.0 for Ruby processes the template option inside Kramdown documents by default, which allows unintended read access (such as template="/etc/passwd") or unintended embedded Ruby code execution (such as a string that begins with template="string://<%= `). NOTE: kramdown is used in Jekyll, GitLab Pages, GitHub Pages, and Thredded Forum.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- High
- Availability
- High
Exploit likelihood
What each source reports
NVD Score used
9.8
The kramdown gem before 2.3.0 for Ruby processes the template option inside Kramdown documents by default, which allows unintended read access (such as template="/etc/passwd") or unintended embedded Ruby code execution (such as a string that begins with template="string://<%= `). NOTE: kramdown is used in Jekyll, GitLab Pages, GitHub Pages, and Thredded Forum.
- Record
CVE-2020-14001- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - CVSS 2.0
- 7.5 High
AV:N/AC:L/Au:N/C:P/I:P/A:P - Weakness
- CWE-862
- Updated
- 2026-11-02
CVE List No score
The kramdown gem before 2.3.0 for Ruby processes the template option inside Kramdown documents by default, which allows unintended read access (such as template="/etc/passwd") or unintended embedded Ruby code execution (such as a string that begins with template="string://<%= `). NOTE: kramdown is used in Jekyll, GitLab Pages, GitHub Pages, and Thredded Forum.
- Record
CVE-2020-14001- Updated
- 2026-11-02
EUVDEUVD-2020-0635 No score
The kramdown gem before 2.3.0 for Ruby processes the template option inside Kramdown documents by default, which allows unintended read access (such as template="/etc/passwd") or unintended embedded Ruby code execution (such as a string that begins with template="string://<%= `). NOTE: kramdown is used in Jekyll, GitLab Pages, GitHub Pages, and Thredded Forum.
- Record
EUVD-2020-0635- Updated
- 2026-11-03
GitHub AdvisoriesGHSA-mqm2-cgpr-p4m6
9.8
Unintended read access in kramdown gem
The kramdown gem before 2.3.0 for Ruby processes the template option inside Kramdown documents by default, which allows unintended read access (such as template="/etc/passwd") or unintended embedded Ruby code execution (such as a string that begins with template="string://<%= `). NOTE: kramdown is used in Jekyll, GitLab Pages, GitHub Pages, and Thredded Forum.
- Record
GHSA-mqm2-cgpr-p4m6- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-862
- Updated
- 2026-11-02
OSVALPINE-CVE-2020-14001
9.8
The kramdown gem before 2.3.0 for Ruby processes the template option inside Kramdown documents by default, which allows unintended read access (such as template="/etc/passwd") or unintended embedded Ruby code execution (such as a string that begins with template="string://<%= `). NOTE: kramdown is used in Jekyll, GitLab Pages, GitHub Pages, and Thredded Forum.
- Record
ALPINE-CVE-2020-14001- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-03
OSV
9.8
The kramdown gem before 2.3.0 for Ruby processes the template option inside Kramdown documents by default, which allows unintended read access (such as template="/etc/passwd") or unintended embedded Ruby code execution (such as a string that begins with template="string://<%= `). NOTE: kramdown is used in Jekyll, GitLab Pages, GitHub Pages, and Thredded Forum.
- Record
CVE-2020-14001- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
Show 12 moreShow less
OSVDEBIAN-CVE-2020-14001
9.8
The kramdown gem before 2.3.0 for Ruby processes the template option inside Kramdown documents by default, which allows unintended read access (such as template="/etc/passwd") or unintended embedded Ruby code execution (such as a string that begins with template="string://<%= `). NOTE: kramdown is used in Jekyll, GitLab Pages, GitHub Pages, and Thredded Forum.
- Record
DEBIAN-CVE-2020-14001- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVGHSA-mqm2-cgpr-p4m6
9.8
Unintended read access in kramdown gem
The kramdown gem before 2.3.0 for Ruby processes the template option inside Kramdown documents by default, which allows unintended read access (such as template="/etc/passwd") or unintended embedded Ruby code execution (such as a string that begins with template="string://<%= `). NOTE: kramdown is used in Jekyll, GitLab Pages, GitHub Pages, and Thredded Forum.
- Record
GHSA-mqm2-cgpr-p4m6- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-862
- Updated
- 2026-11-02
OSVOESA-2021-1280
9.8
rubygem-kramdown security update
kramdown is yet-another-markdown-parser but fast, pure Ruby, using a strict syntax definition and supporting several common extensions.
Security Fix(es):
The kramdown gem before 2.3.0 for Ruby processes the template option inside Kramdown documents by default, which allows unintended read access (such as template="/etc/passwd") or unintended embedded Ruby code execution (such as a string that begins with template="string://<%= `). NOTE: kramdown is used in Jekyll, GitLab Pages, GitHub Pages, and Thredded Forum.(CVE-2020-14001)
- Record
OESA-2021-1280- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVUBUNTU-CVE-2020-14001
9.8
The kramdown gem before 2.3.0 for Ruby processes the template option inside Kramdown documents by default, which allows unintended read access (such as template="/etc/passwd") or unintended embedded Ruby code execution (such as a string that begins with template="string://<%= `). NOTE: kramdown is used in Jekyll, GitLab Pages, GitHub Pages, and Thredded Forum.
- Record
UBUNTU-CVE-2020-14001- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVopenSUSE-SU-2024:11336-1 No score
ruby2.7-rubygem-kramdown-2.3.1-1.3 on GA media
These are all security issues fixed in the ruby2.7-rubygem-kramdown-2.3.1-1.3 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2024:11336-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2024:12038-1 No score
ruby3.1-rubygem-kramdown-2.4.0-1.1 on GA media
These are all security issues fixed in the ruby3.1-rubygem-kramdown-2.4.0-1.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2024:12038-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2024:13161-1 No score
ruby3.2-rubygem-kramdown-2.4.0-1.8 on GA media
These are all security issues fixed in the ruby3.2-rubygem-kramdown-2.4.0-1.8 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2024:13161-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2024:14170-1 No score
ruby3.3-rubygem-kramdown-2.4.0-1.12 on GA media
These are all security issues fixed in the ruby3.3-rubygem-kramdown-2.4.0-1.12 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2024:14170-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2025:15119-1 No score
ruby3.4-rubygem-kramdown-2.4.0-1.15 on GA media
These are all security issues fixed in the ruby3.4-rubygem-kramdown-2.4.0-1.15 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2025:15119-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:10352-1 No score
ruby4.0-rubygem-kramdown-2.4.0-1.17 on GA media
These are all security issues fixed in the ruby4.0-rubygem-kramdown-2.4.0-1.17 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:10352-1- Updated
- 2026-11-02
OSVSUSE-SU-2022:3259-1 No score
Security update for rubygem-kramdown
This update for rubygem-kramdown fixes the following issues:
- CVE-2020-14001: Fixed processing template options inside documents allowing unintended read access or embedded Ruby code execution (bsc#1174297).
- Record
SUSE-SU-2022:3259-1- Updated
- 2026-11-02
OSVUSN-4562-1 No score
ruby-kramdown vulnerability
It was discovered that kramdown insecurely handled certain crafted input. An attacker could use this vulnerability to read restricted files or execute arbitrary code.
- Record
USN-4562-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
kramdownRubyGems |
before 2.3.0 | 2.3.0 |
icinga2Alpine:v3.12 |
before 2.11.3-r1 | 2.11.3-r1 |
icinga2Alpine:v3.13 |
before 2.11.3-r1 | 2.11.3-r1 |
icinga2Alpine:v3.14 |
before 2.11.3-r1 | 2.11.3-r1 |
icinga2Alpine:v3.15 |
before 2.11.3-r1 | 2.11.3-r1 |
icinga2Alpine:v3.16 |
before 2.11.3-r1 | 2.11.3-r1 |
icinga2Alpine:v3.17 |
before 2.11.3-r1 | 2.11.3-r1 |
icinga2Alpine:v3.18 |
before 2.11.3-r1 | 2.11.3-r1 |
icinga2Alpine:v3.19 |
before 2.11.3-r1 | 2.11.3-r1 |
icinga2Alpine:v3.20 |
before 2.11.3-r1 | 2.11.3-r1 |
Show 27 moreShow less
| Package | Affected | Fixed |
|---|---|---|
icinga2Alpine:v3.21 |
before 2.11.3-r1 | 2.11.3-r1 |
icinga2Alpine:v3.22 |
before 2.11.3-r1 | 2.11.3-r1 |
icinga2Alpine:v3.23 |
before 2.11.3-r1 | 2.11.3-r1 |
icinga2Alpine:v3.24 |
before 2.11.3-r1 | 2.11.3-r1 |
ruby-kramdownDebian:12 |
before 2.3.0-3 | 2.3.0-3 |
ruby-kramdownDebian:13 |
before 2.3.0-3 | 2.3.0-3 |
ruby-kramdownDebian:14 |
before 2.3.0-3 | 2.3.0-3 |
ruby-kramdownDebian:9 |
before 1.12.0-1+deb9u1, plus listed versions 1.12.0-1 |
1.12.0-1+deb9u1 |
ruby-kramdownDebian:10 |
before 1.17.0-1+deb10u1, plus listed versions 1.17.0-1 |
1.17.0-1+deb10u1 |
kramdownRubyGems |
before 2.3.0, plus listed versions 0.1.00.10.00.11.00.12.00.13.1 Show 45 moreShow less0.13.20.13.30.13.40.13.50.13.60.13.70.13.80.14.00.14.10.14.20.2.00.3.00.4.00.5.00.6.00.7.00.8.00.9.01.0.01.0.11.0.21.1.01.10.01.11.01.11.11.12.01.13.01.13.11.13.21.14.01.15.01.16.01.16.11.16.21.17.01.2.01.3.01.3.11.3.21.3.31.4.01.4.11.4.21.5.01.6.0 |
2.3.0 |
rubygem-kramdownopenEuler:20.03-LTS-SP1 |
before 2.1.0-3.oe1 | 2.1.0-3.oe1 |
rubygem-kramdownopenEuler:20.03-LTS-SP2 |
before 2.1.0-3.oe1 | 2.1.0-3.oe1 |
rubygem-kramdownSUSE:Linux Enterprise High Availability Extension 15 |
before 1.15.0-150000.3.3.1 | 1.15.0-150000.3.3.1 |
rubygem-kramdownSUSE:Linux Enterprise High Availability Extension 15 SP1 |
before 1.15.0-150000.3.3.1 | 1.15.0-150000.3.3.1 |
rubygem-kramdownSUSE:Linux Enterprise High Availability Extension 15 SP2 |
before 1.15.0-150000.3.3.1 | 1.15.0-150000.3.3.1 |
rubygem-kramdownSUSE:Linux Enterprise High Availability Extension 15 SP3 |
before 1.15.0-150000.3.3.1 | 1.15.0-150000.3.3.1 |
rubygem-kramdownSUSE:Linux Enterprise High Availability Extension 15 SP4 |
before 1.15.0-150000.3.3.1 | 1.15.0-150000.3.3.1 |
rubygem-kramdownopenSUSE:Leap 15.3 |
before 1.15.0-150000.3.3.1 | 1.15.0-150000.3.3.1 |
rubygem-kramdownopenSUSE:Leap 15.4 |
before 1.15.0-150000.3.3.1 | 1.15.0-150000.3.3.1 |
ruby-kramdownUbuntu:16.04:LTS |
All versions, plus listed versions 1.8.0-11.10.0-1 |
None known |
ruby-kramdownUbuntu:18.04:LTS |
All versions, plus listed versions 1.14.0-11.15.0-1 |
None known |
ruby-kramdownUbuntu:20.04:LTS |
before 1.17.0-4ubuntu0.1, plus listed versions 1.17.0-11.17.0-21.17.0-4 |
1.17.0-4ubuntu0.1 |
rubygem-kramdownopenSUSE:Tumbleweed |
before 2.4.0-1.1 | 2.4.0-1.1 |
ruby3.2-rubygem-kramdownopenSUSE:Tumbleweed |
before 2.4.0-1.8 | 2.4.0-1.8 |
rubygem-kramdownopenSUSE:Tumbleweed |
before 2.4.0-1.12 | 2.4.0-1.12 |
rubygem-kramdownopenSUSE:Tumbleweed |
before 2.4.0-1.15 | 2.4.0-1.15 |
rubygem-kramdownopenSUSE:Tumbleweed |
before 2.4.0-1.17 | 2.4.0-1.17 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, aliases, references | OSV | |
| 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-14001 is a critical vulnerability (CVSS 9.8) in Kramdown Project Kramdown, published July 17, 2020. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 4.56%, the 91st percentile. Fixed in kramdown 2.3.0.
References
github.com/gettalong/kramdown
kramdown.gettalong.org
rubygems.org/gems/kramdown
kramdown.gettalong.org/news.html
github.com/gettalong/kramdown/commit/1b8fd33c3120bfc6e5164b449e2c2fc9c9306fde
github.com/gettalong/kramdown/compare/REL_2_2_1...REL_2_3_0
Show 25 moreShow less
security.netapp.com/advisory/ntap-20200731-0004
lists.apache.org/thread.html/r96df7899fbb456fe2705882f710a0c8e8614b573fbffd8d12e3f54d2%40%3Cnotifications.fluo.apache.org%3E
lists.debian.org/debian-lts-announce/2020/08/msg00014.html
debian.org/security/2020/dsa-4743
lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/KBLTGBYU7NKOUOHDKVCU4GFZMGA6BP4L
lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/ENMMGKHRQIZ3QKGOMBBBGB6B4LB5I7NQ
usn.ubuntu.com/4562-1
nvd.nist.gov/vuln/detail/CVE-2020-14001
lists.apache.org/thread.html/r96df7899fbb456fe2705882f710a0c8e8614b573fbffd8d12e3f54d2@%3Cnotifications.fluo.apache.org%3E
lists.fedoraproject.org/archives/list/[email protected]/message/ENMMGKHRQIZ3QKGOMBBBGB6B4LB5I7NQ
lists.fedoraproject.org/archives/list/[email protected]/message/KBLTGBYU7NKOUOHDKVCU4GFZMGA6BP4L
github.com/advisories/GHSA-mqm2-cgpr-p4m6
github.com/rubysec/ruby-advisory-db/blob/master/gems/kramdown/CVE-2020-14001.yml
security.alpinelinux.org/vuln/CVE-2020-14001
security-tracker.debian.org/tracker/CVE-2020-14001
openeuler.org/en/security/safety-bulletin/detail.html?id=openEuler-SA-2021-1280
suse.com/support/update/announcement/2022/suse-su-20223259-1
bugzilla.suse.com/1174297
suse.com/security/cve/CVE-2020-14001
ubuntu.com/security/CVE-2020-14001
ubuntu.com/security/notices/USN-4562-1
ubuntu.com/security/notices/USN-4562-2
cve.org/CVERecord?id=CVE-2020-14001
suse.com/security/cve/CVE-2021-28834
lists.opensuse.org/archives/list/[email protected]/thread/FZZEL5EJD5QLTIY6EGGTCXQMVMERPE6X
Left out here: 9 versions. The JSON record has them.