Read the docs

Out-of-bounds read in gomarkdown IsSafeURL causes panics on short URLs

Priority LOW 39CWE-125Published · Updated

Key facts

Attack vector
Network
Privileges required
None
User interaction
None
Attack complexity
Low
Impact type
Denial of service
Confidentiality · integrity · availability
None · None · High
Fix status
Partial Red Hat: 2 without a fix

Attack profile from CVSS 3.1 · CNA. Fix status from CNA, GitHub and Red Hat. Impact type from CWE-125 and the CVSS impact.

Summary

The github.com/gomarkdown/markdown Go package before 0.0.0-20260724235538-61af6e1e6971 has an out-of-bounds read (CWE-125) in parser.IsSafeURL, which slices a URL before checking its length. A remote attacker can trigger a panic by supplying untrusted Markdown with a short link destination while html.Safelink is enabled, or by passing a short URL directly to the function. An uncaught panic can terminate the calling process, causing denial of service.

Written with Claude Haiku 5.5 from the sources below · 2026-10-31

Description from the CNA

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.

Why it matters now

Exploitation None reported CISA SSVC · not in CISA KEV
EPSS 0.00279 20th percentileScored 2026-11-07
Fix Partial markdown (gomarkdown): 0.0.0-20260724235538-61af6e1e6971github.com/gomarkdown/markdown (Go): 0.0.0-20260724235538-61af6e1e6971Red Hat: 2 without a fix

SSVC decision points

CISA ADP · SSVC 2.0.3

Exploitation
None
Automatable
Yes
Technical impact
Partial

The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.

Affected products

VendorProductAffected versionsFixed inStatusSource
gomarkdownmarkdownbefore 0.0.0-20260724235538-61af6e1e69710.0.0-20260724235538-61af6e1e6971Patch availableCNA
—github.com/gomarkdown/markdown (Go)before 0.0.0-20260724235538-61af6e1e69710.0.0-20260724235538-61af6e1e6971Patch availableGHSA-cv23-7vc5-jfh7
  • markdown Vendorgomarkdown Affected before 0.0.0-20260724235538-61af6e1e6971 Fixed in 0.0.0-20260724235538-61af6e1e6971 Patch available CNA
  • github.com/gomarkdown/markdown (Go) Vendor— Affected before 0.0.0-20260724235538-61af6e1e6971 Fixed in 0.0.0-20260724235538-61af6e1e6971 Patch available GHSA-cv23-7vc5-jfh7

Remediation

Update github.com/gomarkdown/markdown to 0.0.0-20260724235538-61af6e1e6971 or later. Red Hat lists Ansible Automation Orchestrator 2026 as affected with plan none_available and Multicluster Global Hub as affected with no fix planned.

Written with Claude Haiku 5.5 from the sources below · 2026-10-31

  • Fix · CNA markdown (gomarkdown) Fixed in 0.0.0-20260724235538-61af6e1e6971
  • Fix · GHSA-cv23-7vc5-jfh7 github.com/gomarkdown/markdown (Go) Fixed in 0.0.0-20260724235538-61af6e1e6971 Advisory →

Vendor assessments

Red Hat

Red Hat rating: Important. Red Hat's page for this CVE →

ProductStatusPlan or fix
Ansible Automation Orchestrator 2026AffectedNo fix yet
Multicluster Global HubAffectedNo fix planned: Will not fix
Not affected: 3 products
  • Red Hat Advanced Cluster Management for Kubernetes 2
  • Red Hat OpenShift Container Platform 4
  • Red Hat OpenShift Container Platform 5

Timeline

  1. 2026-10-16 Threatist record created from CVE-2026-102941
  2. 2026-10-16 Alias added: GHSA-cv23-7vc5-jfh7
  3. 2026-10-18 Priority changed: MEDIUM → LOW
  4. 2026-10-20 Affected versions changed · Red Hat
  5. 2026-10-20 CVSS score added · Red Hat
  6. 2026-10-21 Affected versions changed · Red Hat
  7. 2026-10-26 CISA SSVC decision points changed
  8. 2026-10-31 Affected versions changed · Red Hat

References

  • TI-2026-29546 github.com/gomarkdown/markdown: Out-of-bounds Read in SmartypantsRenderer CVSS 3.1HIGH 7.5
  • TI-2023-22912 github.com/gomarkdown/markdown Out-of-bounds Read while parsing citations CVSS 3.1HIGH 7.5

Sources