Description
The package github.com/gomarkdown/markdown is a Go library for parsing Markdown text and rendering as HTML. Prior to 0.0.0-20260724235538-61af6e1e6971, parser.IsSafeURL in parser/parser.go slices url[:nPath] before the len(url) >= nPath guard. A short destination causes a slice-bounds panic when the loop reaches a relative-path prefix for which len(url) < nPath and cap(url) < nPath. The one-byte destination / is an explicit non-panic counterexample because it matches the first valid path and returns before a longer prefix is sliced. Demonstrated panic cases include empty, ., and .. destinations under those conditions. The panic is reachable when markdown.ToHTML renders untrusted Markdown with html.Safelink enabled, including an empty link destination, and is also reachable by callers that pass a short attacker-controlled URL directly to the exported parser.IsSafeURL function. An uncaught panic can terminate the calling process and cause denial of service. This issue is fixed in 0.0.0-20260724235538-61af6e1e6971.
Published: 2026-10-16
Score: 7.5 High
EPSS: < 1% Very Low
KEV: No
Impact: Denial of Service
Action: Immediate Patch
AI Analysis

Impact

The vulnerability arises in the gomarkdown/markdown Go library where the IsSafeURL function slices a URL string before verifying its length, leading to a slice‑bounds panic when the URL is shorter than expected. This out‑of‑bounds error, identified as CWE‑125, can be triggered by empty or short link destinations such as "", ".", or ".." when rendering Markdown with the Safelink option enabled. The resulting panic terminates the calling process, causing a denial of service.

Affected Systems

All versions of the gomarkdown/markdown library earlier than 0.0.0-20260724235538-61af6e1e6971 are affected. Applications that import the library and call markdown.ToHTML with html.Safelink enabled or that directly invoke parser.IsSafeURL with attacker‑controlled input will be impacted.

Risk and Exploitability

The CVSS score of 7.5 indicates high severity, and the lack of an EPSS score suggests no publicly known exploits yet; it is not listed in CISA KEV. The vulnerability is likely exploitable through maliciously crafted Markdown input sent to a process using the library, allowing an attacker without privileged access to cause a crash and disrupt service. Based on the description, it is inferred that the attack vector is remote via user supplied Markdown.

Generated by OpenCVE AI on October 16, 2026 at 17:34 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade gomarkdown/markdown to version 0.0.0-20260724235538-61af6e1e6971 or later, which removes the insecure slice operation.
  • If an upgrade cannot be performed immediately, disable the html.Safelink option when rendering Markdown to prevent triggering the vulnerable path.
  • Validate or sanitize link destinations in Markdown before they reach the library, ensuring that URLs are longer than the smallest prefix length used by IsSafeURL.

Generated by OpenCVE AI on October 16, 2026 at 17:34 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-cv23-7vc5-jfh7 gomarkdown/markdown IsSafeURL panics on short URLs
History

Mon, 26 Oct 2026 18:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Fri, 23 Oct 2026 11:00:00 +0000

Type Values Removed Values Added
First Time appeared Gomarkdown
Gomarkdown markdown
Vendors & Products Gomarkdown
Gomarkdown markdown

Mon, 19 Oct 2026 12:30:00 +0000

Type Values Removed Values Added
References
Metrics threat_severity

None

threat_severity

Important


Fri, 16 Oct 2026 15:45:00 +0000

Type Values Removed Values Added
Description The package github.com/gomarkdown/markdown is a Go library for parsing Markdown text and rendering as HTML. Prior to 0.0.0-20260724235538-61af6e1e6971, parser.IsSafeURL in parser/parser.go slices url[:nPath] before the len(url) >= nPath guard. A short destination causes a slice-bounds panic when the loop reaches a relative-path prefix for which len(url) < nPath and cap(url) < nPath. The one-byte destination / is an explicit non-panic counterexample because it matches the first valid path and returns before a longer prefix is sliced. Demonstrated panic cases include empty, ., and .. destinations under those conditions. The panic is reachable when markdown.ToHTML renders untrusted Markdown with html.Safelink enabled, including an empty link destination, and is also reachable by callers that pass a short attacker-controlled URL directly to the exported parser.IsSafeURL function. An uncaught panic can terminate the calling process and cause denial of service. This issue is fixed in 0.0.0-20260724235538-61af6e1e6971.
Title gomarkdown/markdown IsSafeURL panics on short URLs
Weaknesses CWE-125
References
Metrics cvssV3_1

{'score': 7.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H'}


Subscriptions

Gomarkdown Markdown
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-10-26T17:37:11.962Z

Reserved: 2026-09-29T20:24:43.341Z

Link: CVE-2026-102941

cve-icon Vulnrichment

Updated: 2026-10-26T17:36:07.163Z

cve-icon NVD

Status : Deferred

Published: 2026-10-16T16:16:52.937

Modified: 2026-10-26T18:17:23.420

Link: CVE-2026-102941

cve-icon Redhat

Severity : Important

Publid Date: 2026-10-16T15:38:18Z

Links: CVE-2026-102941 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-10-23T10:45:16Z

Weaknesses