ratex-parser panics on `\verb` with a multibyte delimiter (UTF-8 byte-boundary slice)
Default status is the baseline for the product, each version can override it (e.g. patched versions marked unaffected).
| Vendor | Product | Default status | Versions | ||||||
|---|---|---|---|---|---|---|---|---|---|
| erweixin | RaTeX | affected |
|
No data.
No data.
| Vendor | Product | Versions | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Erweixin | Ratex |
|
| Source | ID | Title |
|---|---|---|
Github GHSA |
GHSA-4hgp-59h5-gvrj | ratex-parser panics on `\verb` with a multibyte delimiter (UTF-8 byte-boundary slice) |
No CVSS v3.1
No CVSS v3.0
No CVSS v2
This CVE is not in the KEV list.
Exploit prediction score: < 1% (0.428% probability within 30 days)
| Type | Values Removed | Values Added |
|---|---|---|
| Metrics |
ssvc
|
| Type | Values Removed | Values Added |
|---|---|---|
| First Time appeared |
Erweixin
Erweixin ratex |
|
| Vendors & Products |
Erweixin
Erweixin ratex |
| Type | Values Removed | Values Added |
|---|---|---|
| Description | RaTeX is a KaTeX-compatible math rendering engine written in Rust. Prior to version 0.1.11, the public parser entrypoint `ratex_parser::parse(&str)` panics on the 9-byte input `\verbéxé` (i.e. `\verb` followed by the non-ASCII delimiter `é`). When handling a `\verb` command, the parser slices the verbatim argument with byte indices (`arg[1..arg.len() - 1]`); if the delimiter character is multibyte UTF-8, index `1` lands inside that character and Rust panics with *“byte index 1 is not a char boundary”*. Because RaTeX’s release profile sets `panic = "abort"` (`Cargo.toml:48`), the panic aborts the entire process — not just the current request/thread — making this a hard denial of service for any service that renders untrusted LaTeX. Version 0.1.11 fixes the issue. | |
| Title | ratex-parser panics on `\verb` with a multibyte delimiter (UTF-8 byte-boundary slice) | |
| Weaknesses | CWE-1285 CWE-248 CWE-400 |
|
| References |
| |
| Metrics |
cvssV4_0
|