---
id: CVE-2026-59923
aliases:
  - PYSEC-2026-2211
  - GHSA-8c25-4j27-2rv3
title: >-
  Mistune is a Python Markdown parser with renderers and plugins. Prior to
  3.3.0, HTMLRenderer.safe_url() does not block percent-encoded ja…
summary: >-
  Mistune is a Python Markdown parser with renderers and plugins. Prior to
  3.3.0, HTMLRenderer.safe_url() does not block percent-encoded javascript URIs,
  allowing attacker-supplied Markdown links or images to bypass URL protections
  and exe…
severity: medium
cvss: 6.1
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N'
vendor: mistune
product: mistune
ecosystem: pip
affected:
  - mistune < 3.3.0
patched:
  - mistune 3.3.0
published: '2026-07-08'
updated: '2026-07-13'
source: OSV
sourceUrl: 'https://osv.dev/vulnerability/PYSEC-2026-2211'
references:
  - url: 'https://github.com/lepture/mistune/releases/tag/v3.3.0'
  - url: >-
      https://github.com/lepture/mistune/commit/c7101fcbb6e8790e8e39157c5ca2238fc6dd6cbc
  - url: 'https://github.com/lepture/mistune/security/advisories/GHSA-8c25-4j27-2rv3'
tags:
  - osv
  - pip
epss: 0.00348
epssPercentile: 0.25609
ingestedAt: '2026-07-13T18:58:08.126Z'
---

## Overview

Mistune is a Python Markdown parser with renderers and plugins. Prior to 3.3.0, HTMLRenderer.safe_url() does not block percent-encoded javascript URIs, allowing attacker-supplied Markdown links or images to bypass URL protections and execute script in rendered HTML. This issue is fixed in version 3.3.0.

## Affected packages

- `mistune < 3.3.0`

## Remediation

Upgrade to a patched release:

- `mistune 3.3.0`
