NIST deprecates RSA-2048 from 2030. Find every one of them before attackers do.
🐹
🐹 Go
Not in CISA KEV
HIGH severity

Go Markdown has an Out-of-bounds Read in SmartypantsRendererGHSA-77fj-vx54-gvh7

HIGHFix: gomarkdown/markdown@759bbc3

GHSA-77fj-vx54-gvh7 is a high-severity (CVSS 7.5) Out-of-bounds Read vulnerability in github.com/gomarkdown/markdown. A fix is available for github.com/gomarkdown/markdown — see the affected versions and patch details below.

Also known asCVE-2026-40890GO-2026-5208
Published
Updated
Affected
1 pkg
Patched
1 / 1
Exploits
None indexed
Exploitation data as of Nov 11, 2026 · OSV.dev, NVD, FIRST.org (EPSS)

Exploitation Status

Proof-of-concept exploit code exists

  • CISA’s SSVC triage found public proof-of-concept exploit code for this CVE, though no confirmed active exploitation.
  • CISA assesses this as automatable — exploitation doesn’t require manual, per-target effort, which raises the odds of mass scanning and opportunistic attacks.

Exploitation and automatability from CISA’s SSVC triage for GHSA-77fj-vx54-gvh7.

EPSS Exploitation Probability

via FIRST.org ↗
0.3%probability of exploitation in next 30 days
Lower Risk0.00%
Lower risk than most CVEs28th percentile — riskier than 28% of all scored CVEsHighest risk
0.00%0.34%0.68%1.01%0.1%0.3%May 26Sep 26Nov 26

Probability of exploitation in the next 30 days, from FIRST.org EPSS.

How urgent is this, really

Where this sits among everything scored

Real-World Exposure

1 pkg affected
🐹github.com/gomarkdown/markdown

Real-time download stats are indexed for npm and PyPI packages. This vulnerability affects Go packages — download data is not available via public APIs for these ecosystems.

Description

Summary

Processing a malformed input containing a < character that is not followed by a > character anywhere in the remaining text with a SmartypantsRenderer will lead to Out of Bounds read or a panic.

Details

The smartLeftAngle() function in html/smartypants.go:367-376 performs an out-of-bounds slice operation when processing a < character that is not followed by a > character anywhere in the remaining text. https://github.com/gomarkdown/markdown/blob/37c66b85d6ab025ba67a73ba03b7f3ef55859cca/html/smartypants.go#L367-L376 If the length of the slice is lower than its capacity, this leads to an extra byte of data read. If the length equals the capacity, this leads to a panic.

PoC

package main

import (
	"bytes"
	"fmt"

	"github.com/gomarkdown/markdown/html"
)

func main() {
	src := []byte("<a")

	fmt.Printf("Input: %q  (len=%d, cap=%d)\n", src, len(src), cap(src))

	var buf bytes.Buffer
	sp := html.NewSmartypantsRenderer(html.Smartypants)
	sp.Process(&buf, src) // panics: slice bounds out of range

	fmt.Printf("Output: %q\n", buf.String())
}

Impact

This vulnerability will lead to a Denial of Service / panic on the processing service.

-- The Datadog Security Team

Affected Packages

1 total 1 fixed
EcosystemPackageVulnerable rangeFix
🐹Gogithub.com/gomarkdown/markdownall versions0.0.0-20260411013819-759bbc3e3207go get github.com/gomarkdown/markdown@v0.0.0-20260411013819-759bbc3e3207

Affected Products

1 product · 1 configurations
Application
markdowngomarkdown
< 2026-04-10
range

Detection & mitigation playbook

Open-source dependency
  1. Detect

    Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for github.com/gomarkdown/markdown, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.

  2. Fix

    Update github.com/gomarkdown/markdown to 0.0.0-20260411013819-759bbc3e3207 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms GHSA-77fj-vx54-gvh7 is resolved across your whole dependency graph.

  3. Workarounds

    Constrain what reaches the vulnerable code: limit the size and shape of untrusted input, isolate the affected component in a sandboxed or least-privileged process, and enable the platform's memory-safety mitigations (ASLR, stack protector, hardened allocator) so an out-of-bounds access is more likely to fail closed than to be exploitable.

Fixing This On Your OS

If you run this on a Linux distribution, patch through your package manager against the distro's own security advisory below — it tracks the exact backported fix for your release, which can ship on a different timeline (and sometimes a different severity) than the upstream project.

Red HatModerate

This is an Important denial of service flaw affecting Red Hat products that utilize the `github.com/gomarkdown/markdown` library. The vulnerability occurs when the `SmartypantsRenderer` processes specially crafted malformed Markdown input containing an unclosed '<' character, leading to an out-of-bounds read or…

Workaround published by Red Hat
Mitigation for this issue is either not available or the currently available options do not meet the Red Hat Product Security criteria comprising ease of use and deployment, applicability to widespread installation base, or stability.
Source: Red Hat security advisory for GHSA-77fj-vx54-gvh7 (CC BY 4.0)
ProductFixed inAdvisory
Multicluster Global Hub 1.4.9multicluster-globalhub/multicluster-globalhub-grafana-rhel9:1779579439RHSA-2026:22347
Multicluster Global Hub 1.6.5multicluster-globalhub/multicluster-globalhub-grafana-rhel9:1780167118RHSA-2026:23345
Multicluster Global Hub 1.7.3multicluster-globalhub/multicluster-globalhub-grafana-rhel9:1779925273RHSA-2026:24503
Red Hat Advanced Cluster Management for Kubernetes 2.15rhacm2/acm-grafana-rhel9:1780677003RHSA-2026:24539
Red Hat multicluster global hub 1.5.3multicluster-globalhub/multicluster-globalhub-grafana-rhel9:1778867753RHSA-2026:21769

Frequently Asked Questions

### Summary Processing a malformed input containing a `<` character that is not followed by a `>` character anywhere in the remaining text with a SmartypantsRenderer will lead to Out of Bounds read or a panic. ### Details The `smartLeftAngle()` function in `html/smartypants.go:367-376` performs an out-of-bounds slice operation when processing a `<` character that is not followed by a `>` character anywhere in the remaining text. https://github.com/gomarkdown/markdown/blob/37c66b85d6ab025ba67a73ba03b7f3ef55859cca/html/smartypants.go#L367-L376 If the length of the slice is lower than its capa
O3 Security · Impact-Aware SCA

Is GHSA-77fj-vx54-gvh7 in your dependencies?

Find it across Go, including transitive dependencies.

Go Markdown has an Out-of-bounds Read in…