CVE-2026-102941
HIGH 7.5The 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.
Severe if exploited (CVSS 7.5), but no known exploitation and low modeled probability. Patch on a normal cadence.
Exploitation likelihood
0.3%chance of exploitation in 30 days · 20th percentile
Impact if exploited
7.5CVSS 3.1 · HIGH
- ConfidentialityNone
- IntegrityNone
- AvailabilityHigh
What an attacker needs
- ✓Access: Reachable over the network — no local access needed
- ✓Privileges: No account or privileges required
- ✓User interaction: No user interaction needed
- ✓Complexity: No special conditions — reliably repeatable
✓ lowers the bar for an attacker · ⚠ raises it
Proof of concept
No public PoC is currently catalogued.
Search for new PoCs
Search GitHub now — results may be empty or unverified.
Tracked sources are checked daily for recent CVEs, including PoCs published after the original disclosure. A later release appears after a tracked source lists it and a refresh succeeds.
Data snapshot:
Weakness (CWE)
- CWE-125: : Out-of-bounds Read
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
References and research data (JSON)
Packages and version ranges
Each advisory describes its own package and affected ranges. A boundary applies to that range; it is not a universal upgrade recommendation.
github.com/gomarkdown/markdown Go
pkg:golang/github.com/gomarkdown/markdown
SEMVER range- All earlier versions (introduced 0)
- Fixed boundary (excluded): 0.0.0-20260724235538-61af6e1e6971
GitHub Advisory Database · GHSA-cv23-7vc5-jfh7 · Updated 2026-10-16T16:00:45.389675499ZAdditional upstream package constraints
{ "database": { "source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-cv23-7vc5-jfh7/GHSA-cv23-7vc5-jfh7.json" } }
Vendor product assessments
ansible-automation-platform/automation-orchestrator-temporal-rhel9 as a component of Ansible Automation Orchestrator 2026 · known affected
Vendor assessment for this product only.
pkg:oci/automation-orchestrator-temporal-rhel9@sha256:2fe8caaa4e27e70b4edb12e8d57e60e326a74d82c14d84cebf557026773500c8?repository_url=registry.redhat.io/ansible-automation-platform/automation-orchestrator-temporal-rhel9
- workaround: There is no mitigation for this issue. Affected components should update their github.com/gomarkdown/markdown dependency to a release that includes the upstream fix (commit 61af6e1e6971 or later), which validates URL length before it is sliced in parser.IsSafeURL. --- CME Mitigation Guidance (2026-10-20) --- Disclaimer: The following mitigation solutions are provided as a courtesy, pending the application of an official patch. This content was generated utilizing AI tools in conjunction with data from https://cmetaxonomy.org. Customers are advised to independently evaluate and test these temporary mitigations within their own infrastructure. The highest-value action is to validate URL length before slicing in URL sanitization routines or avoid exposing html.Safelink rendering to untrusted Markdown: upgrade to github.com/gomarkdown/markdown 0.0.0-20260724235538-61af6e1e6971 (or the fixed Golang Github Gomarkdown Markdown/Matterbridge/Multicluster Globalhub/Multicluster Globalhub Grafana Rhel/Rhacm2/Acm Grafana Rhel/Ansible Automation Platform/Automation Orchestrator Temporal Rhel builds), which validate that the URL length is at least the prefix length before slicing url[:nPath], skipping comparisons when the URL is shorter, closing all 3 injection vectors (crafted Markdown link with empty destination, crafted Markdown link with short relative destination like dot or double dot, direct submission of short URL strings to parser.IsSafeURL). Until patched, this is a concern on applications parsing untrusted Markdown using markdown.ToHTML with html.Safelink enabled, or directly calling parser.IsSafeURL on untrusted input, so avoid parsing untrusted Markdown with html.Safelink enabled and avoid passing unvalidated attacker-controlled URL strings directly to parser.IsSafeURL. These controls limit blast radius and contain exploitation, but they do not fix the underlying slice-bounds out-of-range panic defect — apply the upstream patch to fully remediate. Highest-impact CME: CME-1311 Input Size and Quantity Bounds Enforcement (high)
- none available: Affected
multicluster-globalhub/multicluster-globalhub-grafana-rhel9 as a component of Multicluster Global Hub · known affected
Vendor assessment for this product only.
pkg:oci/multicluster-globalhub-grafana-rhel9@sha256:3d51e8050687b6a4b399c5b04f04611ae60f13d3c0487cf5bc29506141ce3e45?repository_url=registry.redhat.io/multicluster-globalhub/multicluster-globalhub-grafana-rhel9
- workaround: There is no mitigation for this issue. Affected components should update their github.com/gomarkdown/markdown dependency to a release that includes the upstream fix (commit 61af6e1e6971 or later), which validates URL length before it is sliced in parser.IsSafeURL. --- CME Mitigation Guidance (2026-10-20) --- Disclaimer: The following mitigation solutions are provided as a courtesy, pending the application of an official patch. This content was generated utilizing AI tools in conjunction with data from https://cmetaxonomy.org. Customers are advised to independently evaluate and test these temporary mitigations within their own infrastructure. The highest-value action is to validate URL length before slicing in URL sanitization routines or avoid exposing html.Safelink rendering to untrusted Markdown: upgrade to github.com/gomarkdown/markdown 0.0.0-20260724235538-61af6e1e6971 (or the fixed Golang Github Gomarkdown Markdown/Matterbridge/Multicluster Globalhub/Multicluster Globalhub Grafana Rhel/Rhacm2/Acm Grafana Rhel/Ansible Automation Platform/Automation Orchestrator Temporal Rhel builds), which validate that the URL length is at least the prefix length before slicing url[:nPath], skipping comparisons when the URL is shorter, closing all 3 injection vectors (crafted Markdown link with empty destination, crafted Markdown link with short relative destination like dot or double dot, direct submission of short URL strings to parser.IsSafeURL). Until patched, this is a concern on applications parsing untrusted Markdown using markdown.ToHTML with html.Safelink enabled, or directly calling parser.IsSafeURL on untrusted input, so avoid parsing untrusted Markdown with html.Safelink enabled and avoid passing unvalidated attacker-controlled URL strings directly to parser.IsSafeURL. These controls limit blast radius and contain exploitation, but they do not fix the underlying slice-bounds out-of-range panic defect — apply the upstream patch to fully remediate. Highest-impact CME: CME-1311 Input Size and Quantity Bounds Enforcement (high)
- no fix planned: Will not fix
rhacm2/acm-grafana-rhel9 as a component of Red Hat Advanced Cluster Management for Kubernetes 2 · known not affected
Vendor assessment for this product only.
Reason: vulnerable code not present
pkg:oci/acm-grafana-rhel9@sha256:aa7ca316ec068e466c4a413b83b3f24a26653dc2c63497a5f6f48a8cc44c36c7?repository_url=registry.redhat.io/rhacm2/acm-grafana-rhel9
Red Hat · CVE-2026-102941 · Updated 2026-10-21T07:59:43+00:00cri-o as a component of Red Hat OpenShift Container Platform 4 · known not affected
Vendor assessment for this product only.
Reason: vulnerable code not present
pkg:rpm/redhat/cri-o
Red Hat · CVE-2026-102941 · Updated 2026-10-21T07:59:43+00:00cri-o.src as a component of Red Hat OpenShift Container Platform 4 · known not affected
Vendor assessment for this product only.
Reason: vulnerable code not present
pkg:rpm/redhat/cri-o?arch=src
Red Hat · CVE-2026-102941 · Updated 2026-10-21T07:59:43+00:00openshift4/kube-metrics-server-rhel8 as a component of Red Hat OpenShift Container Platform 4 · known not affected
Vendor assessment for this product only.
Reason: vulnerable code not present
pkg:oci/kube-metrics-server-rhel8@sha256:43528a5404c7021147f1b5419dba92b98019e367f76186873f2f21e8e1f63720?repository_url=registry.redhat.io/openshift4/kube-metrics-server-rhel8
Red Hat · CVE-2026-102941 · Updated 2026-10-21T07:59:43+00:00openshift4/kube-metrics-server-rhel9 as a component of Red Hat OpenShift Container Platform 4 · known not affected
Vendor assessment for this product only.
Reason: vulnerable code not present
pkg:oci/kube-metrics-server-rhel9@sha256:d5b36a18f900569574967517a2a5d9e5f2a553cc69988f969ac03755e3d5809a?repository_url=registry.redhat.io/openshift4/kube-metrics-server-rhel9
Red Hat · CVE-2026-102941 · Updated 2026-10-21T07:59:43+00:00
All CVSS metrics
- HIGH 7.5 v3.1 · CNA Primary
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - HIGH 7.5 v3.1 · NVD Secondary
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
References
Advisories
- https://osv.dev/vulnerability/GHSA-cv23-7vc5-jfh7 GitHub Advisory Database · GHSA-cv23-7vc5-jfh7
GitHub Advisory Database · GHSA-cv23-7vc5-jfh7 · Updated 2026-10-16T16:00:45.389675499Z - https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-102941.json Red Hat · CVE-2026-102941 · Updated 2026-10-21T07:59:43+00:00
- https://euvd.enisa.europa.eu/vulnerability/EUVD-2026-102934 EUVD · EUVD-2026-102934
Technical & other
- https://github.com/gomarkdown/markdown/security/advisories/GHSA-cv23-7vc5-jfh7 CVE record · GitHub_M · Updated 2026-10-16T15:38:18.086Z
NVD · CVE-2026-102941 · Updated 2026-10-16T20:04:29.760
GitHub Advisory Database · GHSA-cv23-7vc5-jfh7
GitHub Advisory Database · GHSA-cv23-7vc5-jfh7 · Updated 2026-10-16T16:00:45.389675499Z
Red Hat · CVE-2026-102941 · Updated 2026-10-21T07:59:43+00:00 - https://github.com/gomarkdown/markdown/commit/61af6e1e69710c5ca13cfbaaaa1bc11bc763a8a9 CVE record · GitHub_M · Updated 2026-10-16T15:38:18.086Z
NVD · CVE-2026-102941 · Updated 2026-10-16T20:04:29.760
GitHub Advisory Database · GHSA-cv23-7vc5-jfh7
GitHub Advisory Database · GHSA-cv23-7vc5-jfh7 · Updated 2026-10-16T16:00:45.389675499Z
Red Hat · CVE-2026-102941 · Updated 2026-10-21T07:59:43+00:00 - https://github.com/gomarkdown/markdown GitHub Advisory Database · GHSA-cv23-7vc5-jfh7
GitHub Advisory Database · GHSA-cv23-7vc5-jfh7 · Updated 2026-10-16T16:00:45.389675499Z - https://access.redhat.com/security/cve/CVE-2026-102941 Red Hat · CVE-2026-102941 · Updated 2026-10-21T07:59:43+00:00
- https://bugzilla.redhat.com/show_bug.cgi?id=2554173 Red Hat · CVE-2026-102941 · Updated 2026-10-21T07:59:43+00:00
- https://www.cve.org/CVERecord?id=CVE-2026-102941 Red Hat · CVE-2026-102941 · Updated 2026-10-21T07:59:43+00:00
- https://nvd.nist.gov/vuln/detail/CVE-2026-102941 Red Hat · CVE-2026-102941 · Updated 2026-10-21T07:59:43+00:00