CVE-2025-59717
@digitalocean/do-markdownit has Type Confusion vulnerability
Impact
### Overview A type confusion issue exists in the `@digitalocean/do-markdownit` package. In the `callout` and `fence_environment` plugins, the `allowedClasses` and `allowedEnvironments` options are expected to be arrays of strings. If these options are provided as a single string, the code applies `.includes` directly on the string, resulting in substring matching instead of membership checks against an array. ### Affected Versions All versions up to and including 1.16.1 (npm). ### Impact Supplying crafted input can bypass intended allow-lists (e.g., class/environment constraints) due to substring checks, which may enable rendering of unintended classes or environments and lead to policy bypass in downstream consumers. ### Mitigation Until an upstream fix is released, ensure configuration normalization before invoking the plugins: - Validate that `allowedClasses` and `allowedEnvironments` are arrays (`Array.isArray(...)`), converting single strings into one-element arrays when necessary. - Consider sanitizing or strictly validating user-controlled values that influence Markdown rendering.
Affected packages
| Ecosystem | Package | Affected | Fixed in |
|---|---|---|---|
| npm | @digitalocean/do-markdownit | <= 1.16.1 | none recorded |
Affected products
| Vendor | Product | Affected versions |
|---|---|---|
| Digitalocean | Do-Markdownit | through 1.16.1 |
Weakness classification
References
- NVD record
- CVE.org record
- GitHub advisory
- https://gist.github.com/thesmartshadow/dd19665f1f51a4e3c7a766e70c9eafd0
- https://github.com/digitalocean/do-markdownit
- https://www.npmjs.com/package/@digitalocean/do-markdownit
- https://github.com/advisories/GHSA-2h8j-8r9p-849f
- https://nvd.nist.gov/vuln/detail/CVE-2025-59717