Medium, CVSS 5.9RubyGemsPublished
rdiscount has an Out-of-bounds Read
CVE-2026-35201 · GHSA-6r34-94wq-jhrc
- Affected
- RubyGems rdiscount >= 1.3.1.1, < 2.2.7.4
- Fixed in
- 2.2.7.4· Vendor fix available
- Issue
- A signed length truncation bug causes an out-of-bounds read in the default Markdown parse path. Inputs larger than INTMAX are truncated to a signed int before entering the native parser, allowing the parser to read past the end of the supplied buffer and crash the process Details In both public entry points: - ext/rdiscount.c:97 - ext/rdiscount.c:136 RSTRINGLEN(text) is passed directly into mkdstring(): mkdstring() accepts int len: - ext/mkdio.c:174 The parser stores the remaining input length in a signed int: - ext/markdown.h:205 The read loop stops only when size == 0: - ext/mkdio.c:161 If the Ruby string length exceeds INTMAX, the value can truncate to a negative int. In that state, the parser continues incrementing data and reading past the end of the original Ruby string, causing an out-of-bounds read and native crash. Affected APIs: - RDiscount.new(input).tohtml - RDiscount.new(input).toccontent PoC Crash via tohtml: result: - built=2200000000 - Ruby terminates with…
Recommended action: Upgrade to 2.2.7.4 or later, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.