CVE-2024-44337
Medium · 5.1CVSS
5.1
EPSS
0.5%
Published
Oct 15, 2024
CISA due date
—
Cloudanix analysis
A text-processing tool used by some applications can freeze and exhaust resources when given specially crafted text, causing those applications to stop responding until restarted.
- Exploitation
- Local Privilege
- Attacker needs
- None
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- Library
- Class
- Denial of service
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
A logical flaw in the paragraph function of parser/block.go allows specially crafted Markdown input to trigger an infinite loop during parsing, causing the process to hang and consume CPU and memory indefinitely.
Why it matters to the business
Applications using the library, including Apache Pinot, can be rendered unresponsive by a single malicious input, leading to service outages, resource exhaustion, and potential cascading failures in dependent systems until the process is manually terminated.
How an attack unfolds
An attacker identifies an application that accepts untrusted Markdown through the vulnerable gomarkdown parser, crafts input containing a specific sequence that loops forever in the paragraph handler, submits it via the normal input channel, and observes the target process hang while consuming resources with no further interaction required.
How to fix it
Upgrade gomarkdown/markdown to commit a2a9c4f76ef5a5c32108e36f7c47f8d310322252 or later; upgrade org.apache.pinot:pinot to version 0.10.0 or later. After upgrade, rebuild and redeploy all affected services. If immediate upgrade is impossible, add input validation or sandboxing around Markdown parsing calls.
How to confirm the fix worked
Confirm the library version matches or exceeds the fixed commit or 0.10.0, then test parsing with known loop-triggering Markdown samples to verify the process no longer hangs. Monitor resource usage during repeated parsing of boundary-case inputs.
Typical attack path
- Locate an entry point that feeds user-controlled Markdown into the gomarkdown library
- Submit a minimal crafted payload designed to enter the infinite loop in parser/block.go
- Monitor for sustained high CPU and memory usage or application unresponsiveness
- Repeat or leave the process hanging to prolong denial of service
How to detect it
Search application and system logs for repeated or long-running Markdown parsing operations, sudden sustained high CPU or memory usage from processes that call the markdown parser, and any unhandled hangs or restarts of services that accept Markdown input.
What your security team should do
- Prioritize upgrade of gomarkdown/markdown and Apache Pinot to the listed fixed versions within normal change windows
- Inventory all internal services that parse Markdown with this library
- Implement rate limiting or input-size restrictions on Markdown endpoints until patched
- Add monitoring for anomalous CPU spikes during Markdown processing
The record
The package `github.com/gomarkdown/markdown` is a Go library for parsing Markdown text and rendering as HTML. Prior to pseudoversion `v0.0.0-20240729232818-a2a9c4f`, which corresponds with commit `a2a9c4f76ef5a5c32108e36f7c47f8d310322252`, there was a logical problem in the paragraph function of the parser/block.go file, which allowed a remote attacker to cause a denial of service (DoS) condition by providing a tailor-made input that caused an infinite loop, causing the program to hang and consume resources indefinitely. Submit `a2a9c4f76ef5a5c32108e36f7c47f8d310322252` contains fixes to this problem.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Go | github.com/gomarkdown/markdown | 0 | 0.0.0-20240729212818-a2a9c4f76ef5 |
| Go | github.com/gomarkdown/markdown | 0 | 0.0.0-20240729232818-a2a9c4f |
| Chainguard | fq | 0 | 0.13.0-r0 |
| Chainguard | kube-metrics-adapter | 0 | 0.2.3-r2 |
| Debian:12 | golang-github-gomarkdown-markdown | 0 | No fix |
| Debian:13 | golang-github-gomarkdown-markdown | 0 | No fix |
| Debian:14 | golang-github-gomarkdown-markdown | 0 | No fix |
| Ubuntu:24.04:LTS | golang-github-gomarkdown-markdown | 0 | No fix |
| Ubuntu:24.10 | golang-github-gomarkdown-markdown | 0 | No fix |
| Ubuntu:25.04 | golang-github-gomarkdown-markdown | 0 | No fix |
| Ubuntu:25.10 | golang-github-gomarkdown-markdown | 0 | No fix |
| Wolfi | fq | 0 | 0.13.0-r0 |
| Wolfi | kube-metrics-adapter | 0 | 0.2.3-r2 |
| openSUSE:Tumbleweed | fq | 0 | 0.14.0-1.1 |
| openSUSE:Tumbleweed | govulncheck-vulndb | 0 | 0.0.20241213T205935-1.1 |
Related vulnerabilities
- CVE-2025-61141 sqls-server/sqls 0.2.28 is vulnerable to command injection in the config command because… Also affects govulncheck-vulndb
- CVE-2025-54471 NeuVector used a hard-coded cryptographic key embedded in the source code. Also affects govulncheck-vulndb
- CVE-2025-54470 This vulnerability affects NeuVector deployments only when the Report anonymous cluster… Also affects govulncheck-vulndb
- CVE-2025-54469 A vulnerability was identified in NeuVector, where the enforcer used environment… Also affects govulncheck-vulndb
- CVE-2024-58269 A vulnerability has been identified in Rancher Manager, where sensitive information… Also affects govulncheck-vulndb
- CVE-2023-32199 A vulnerability has been identified within Rancher Manager, where after removing a custom… Also affects govulncheck-vulndb
- CVE-2025-64101 ZITADEL Vulnerable to Account Takeover via Malicious Forwarded Header Injection Also affects govulncheck-vulndb
- CVE-2025-64103 Zitadel May Bypass Second Authentication Factor Also affects govulncheck-vulndb