Skip to content

Commit adc5bb1

Browse files
chore(deps): update dependency pymdown-extensions to v10.16.1 [security] (#25)
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [pymdown-extensions](https://redirect.github.com/facelessuser/pymdown-extensions) | `10.13` → `10.16.1` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/pymdown-extensions/10.16.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/pymdown-extensions/10.13/10.16.1?slim=true) | ### GitHub Vulnerability Alerts #### [CVE-2025-68142](https://redirect.github.com/facelessuser/pymdown-extensions/security/advisories/GHSA-r6h4-mm7h-8pmq) ### Impact This issue describes a ReDOS bug found within the figure caption extension (`pymdownx.blocks.caption` ). In systems that take unchecked user content, this could cause long hangs when processing the data if a malicious payload was crafted. ### Patches This issue is patched in Release [10.16.1](https://pypi.org/project/pymdown-extensions/10.16.1/). ### Workarounds Some possible workarounds If users are concerned about this vulnerability and process unknown user content without timeouts or other safeguards in place to prevent really large, malicious content being aimed at systems, the use of `pymdownx.blocks.caption` could be avoided until the library is updated to 10.16.1+. ### References The original issue [https://github.com/facelessuser/pymdown-extensions/issues/2716](https://redirect.github.com/facelessuser/pymdown-extensions/issues/2716). ### Description The original issue came through PyMdown Extensions' normal issue tracker instead of the typical security flow: [https://github.com/facelessuser/pymdown-extensions/issues/2716](https://redirect.github.com/facelessuser/pymdown-extensions/issues/2716). Because this came through the normal issue flow, it was handled as a normal issue. In the future, PyMdown Extensions will ensure such issues, even if prematurely made public through the normal issue flow, are redirected through the typical security process. The regular expression pattern in question is as follows: ```py RE_FIG_NUM = re.compile(r'^(\^)?([1-9][0-9]*(?:.[1-9][0-9]*)*)(?= |$)') ``` The POC was provided by @&#8203;ShangzhiXu ```py import re import time regex_pattern = re.compile(r'^(\^)?([1-9][0-9]*(?:.[1-9][0-9]*)*)(?= |$)') for i in range(50, 500, 50): long_string = '1' * i + 'a' start_time = time.time() match = re.match(regex_pattern, long_string) end_time = time.time() print(f"long_string execution time: {end_time - start_time:.6f} s") ``` The issue with the above pattern is that `.` was used, which accepts any character when we meant to use `\.`. The fix was to update the pattern to: ```py RE_FIG_NUM = re.compile(r'^(\^)?([1-9][0-9]*(?:\.[1-9][0-9]*)*)(?= |$)') ``` Relevant PR with fix: [https://github.com/facelessuser/pymdown-extensions/pull/2717](https://redirect.github.com/facelessuser/pymdown-extensions/pull/2717) ### Version(s) & System Info - Operating System: Any - Python Version: Any --- ### Release Notes <details> <summary>facelessuser/pymdown-extensions (pymdown-extensions)</summary> ### [`v10.16.1`](https://redirect.github.com/facelessuser/pymdown-extensions/releases/tag/10.16.1): 10.6.1 [Compare Source](https://redirect.github.com/facelessuser/pymdown-extensions/compare/10.16...10.16.1) #### 10.16.1 - **FIX**: Inefficient regular expression pattern for figure caption numbers. ### [`v10.16`](https://redirect.github.com/facelessuser/pymdown-extensions/releases/tag/10.16) [Compare Source](https://redirect.github.com/facelessuser/pymdown-extensions/compare/10.15...10.16) #### 10.16 - **NEW**: Add early support for Python 3.14. - **NEW**: Drop support for Python 3.8. - **NEW**: Snippets: Added `max_retries` and `backoff_retries` options to configure new retry logic for HTTP 429 errors (Too Many Requests client error). - **NEW**: Caption: Prefix templates are now preserved exactly as specified allowing the insertion of HTML tags if desired. - **FIX**: Caption: Fix issue where manual numbers in auto were not respected appropriately. ### [`v10.15`](https://redirect.github.com/facelessuser/pymdown-extensions/releases/tag/10.15) [Compare Source](https://redirect.github.com/facelessuser/pymdown-extensions/compare/10.14.3...10.15) #### 10.15.0 - **NEW**: SuperFences: Add `relaxed_headers` option which can tolerate bad content in the fenced code header. When enabled, code blocks with bad content in the header will likely still convert into code blocks, often respecting the specified language. - **NEW**: Add type hints to the Blocks interface and a few additional files. - **FIX**: Blocks: Fix some corner cases of nested blocks with lists. - **FIX**: Tab and Tabbed: Fix a case where tabs could fail if `combine_header_slug` was enabled and there was no header. ### [`v10.14.3`](https://redirect.github.com/facelessuser/pymdown-extensions/releases/tag/10.14.3) [Compare Source](https://redirect.github.com/facelessuser/pymdown-extensions/compare/10.14.2...10.14.3) #### 10.14.3 - **FIX**: Blocks: An empty, raw block type should not cause an error. ### [`v10.14.2`](https://redirect.github.com/facelessuser/pymdown-extensions/releases/tag/10.14.2) [Compare Source](https://redirect.github.com/facelessuser/pymdown-extensions/compare/10.14.1...10.14.2) #### 10.14.2 - **FIX**: Blocks: Fix some corner cases with `md_in_html`. ### [`v10.14.1`](https://redirect.github.com/facelessuser/pymdown-extensions/releases/tag/10.14.1) [Compare Source](https://redirect.github.com/facelessuser/pymdown-extensions/compare/10.14...10.14.1) #### 10.14.1 - **FIX**: MagicLink: Ensure that repo names that start with `.` are handled correctly. - **FIX**: FancyLists: Fix case were lists could be falsely created when a line started with `.` or `)`. ### [`v10.14`](https://redirect.github.com/facelessuser/pymdown-extensions/releases/tag/10.14) [Compare Source](https://redirect.github.com/facelessuser/pymdown-extensions/compare/10.13...10.14) #### 10.14 - **NEW**: Blocks.HTML: Add new `custom` option to specify tags and the assumed handling for them when automatic mode is assumed. This can also be used to override the handling for recognized tags with automatic handling. - **FIX**: Fix tests to pass with Pygments 2.19+. </details> --- ### Configuration 📅 **Schedule**: Branch creation - "" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/NiklasRosenstein/python-github-bot-api). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi44NS4xIiwidXBkYXRlZEluVmVyIjoiNDMuNjYuNCIsInRhcmdldEJyYW5jaCI6ImRldmVsb3AiLCJsYWJlbHMiOlsiZGVwZW5kZW5jaWVzIl19--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
1 parent 93128b7 commit adc5bb1

1 file changed

Lines changed: 326 additions & 410 deletions

File tree

0 commit comments

Comments
 (0)