chore(deps): update dependency pymdown-extensions to v10 [security] #179
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
==7.1->==10.16.1GitHub Vulnerability Alerts
CVE-2023-32309
Summary
Arbitrary file read when using include file syntax.
Details
By using the syntax
--8<--"/etc/passwd"or--8<--"/proc/self/environ"the content of these files will be rendered in the generated documentation. Additionally, a path relative to a specified, allowed base path can also be used to render the content of a file outside the specified base paths:--8<-- "../../../../etc/passwd".Within the Snippets extension, there exists a
base_pathoption but the implementation is vulnerable to Directory Traversal.The vulnerable section exists in
get_snippet_path(self, path)lines 155 to 174 in snippets.py.PoC
Impact
Any readable file on the host where the plugin is executing may have its content exposed. This can impact any use of Snippets that exposes the use of Snippets to external users.
It is never recommended to use Snippets to process user-facing, dynamic content. It is designed to process known content on the backend under the control of the host, but if someone were to accidentally enable it for user-facing content, undesired information could be exposed.
Suggestion
Specified snippets should be restricted to the configured, specified base paths as a safe default. Allowing relative or absolute paths that escape the specified base paths would need to be behind a feature switch that must be opt-in and would be at the developer's own risk.
CVE-2025-68142
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.
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.captioncould be avoided until the library is updated to 10.16.1+.References
The original issue https://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. 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:
The POC was provided by @ShangzhiXu
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:Relevant PR with fix: https://github.com/facelessuser/pymdown-extensions/pull/2717
Version(s) & System Info
Release Notes
facelessuser/pymdown-extensions (pymdown-extensions)
v10.16.1: 10.6.1Compare Source
10.16.1
v10.16Compare Source
10.16
max_retriesandbackoff_retriesoptions to configure new retry logic for HTTP 429errors (Too Many Requests client error).
desired.
v10.15Compare Source
10.15.0
relaxed_headersoption which can tolerate bad content in the fenced code header. Whenenabled, code blocks with bad content in the header will likely still convert into code blocks, often respecting
the specified language.
combine_header_slugwas enabled and there was noheader.
v10.14.3Compare Source
10.14.3
v10.14.2Compare Source
10.14.2
md_in_html.v10.14.1Compare Source
10.14.1
.are handled correctly..or).v10.14Compare Source
10.14
customoption to specify tags and the assumed handling for them when automatic modeis assumed. This can also be used to override the handling for recognized tags with automatic handling.
v10.13Compare Source
10.13
,.v10.12Compare Source
10.12
pymdownx.blocks.detailsapproach.pymdownx.blocks.tabapproach.strictoption that will raise an exception if an emoji is used whose name has changed,removed, or never existed.
v10.11.2Compare Source
10.11.2
v10.11.1Compare Source
10.11.1
can cause a fence to not be parsed.
v10.11Compare Source
10.11
```lang {.class #id}.v10.10.2Compare Source
10.10.2
*em, **em,strong***and_em, __em,strong___cases.*sup, **sup,ins***.*sub, **sub,del***.v10.10.1Compare Source
10.10.1
v10.10Compare Source
10.10
xinstead oftwitter.twitteris still recognized but isnow deprecated and will be removed at a future time.
urlunparse.v10.9Compare Source
10.9
v10.8.1Compare Source
10.8.1
v10.8Compare Source
10.8
v10.7.1Compare Source
10.7.1
v10.7Compare Source
10.7
:octocat:are no longer resolved.
default_langwhich will cause code blocks with no language specifier to behighlighted with the specified default language instead of plain text. This affects indented code blocks and code
blocks defined with SuperFences.
style_plain_textcan be specified with a language string (in addition to its previousboolean requirement) to treat inline code blocks with no explicit language specifier with a specific default
language.
v10.6Compare Source
10.6
v10.5Compare Source
10.5
v10.4Compare Source
10.4
base_pathto better support interactions with MkDocs.v10.3.1Compare Source
10.3.1
v10.3Compare Source
10.3
v10.2.1Compare Source
10.2.1
v10.2Compare Source
10.2
stripnloption to configure Pygments' default handling of stripping leading andand trailing new lines from code blocks. Mainly affects fenced code blocks.
an exception.
v10.1Compare Source
v10.0.1Compare Source
10.0.1
v10.0Compare Source
10.0
base_pathpreventing snippetsrelative to the
base_pathbut not explicitly under it.restrict_base_pathcan be set toFalsefor legacybehavior.
v9.11Compare Source
9.11
v9.10Compare Source
9.10
containers for specialized parsing. A number of extensions utilizing general purpose blocks are included and are meant
to be an alternative to (and maybe one day replace): Admonitions, Details, Definition Lists, and Tabbed. Also adds a
new HTML plugin for quick wrapping of content with arbitrary HTML elements.
ids will be generated using that code ID instead of the code block count.
-and_.check_pathsis enabled, and a specified section is not found, raise an error.dedent_sectionsthat will de-indent (remove any common leadingwhitespace from every line in text) from that block of text.
v9.9.2Compare Source
9.9.2
--. Relax Snippets syntax such that-8<-(single-) are allowed.v9.9.1Compare Source
9.9.1
v9.9Compare Source
9.9
*or_surrounded by whitespace are not considered as a token.^^nested between^would be handled in an unexpected way.^surrounded by whitespace are not considered as a token.~~nested between~would be handled in an unexpected way.~surrounded by whitespace are not considered a token.=surrounded by whitespace are not considered a token.v9.8Compare Source
9.8
**nested between*would be handled in an unexpected way.v9.7Compare Source
9.7
v9.6Compare Source
9.6
guess_langoption (e.g.
blockvsinline).;.v9.5Compare Source
9.5
InlineHiliteException.check_pathsis enabled), all other errorswill be propagated up.
SnippetMissingErrorinstead ofIOError.v9.4Compare Source
9.4
installed, Highlight will raise an exception.
v9.3Compare Source
9.3
file://prefix on absolute paths.extend_pygments_langis not case sensitive regarding language names.v9.2Compare Source
9.2
pygments_lang_optionto enable attaching language classes to Pygments code blocks.SuperFencesException.powerandfingerprintkeys.certain matched groups could cause an error.
v9.1Compare Source
9.1
linenumsis enabled globally via thehighlightextension, and a code block specifies a linenumber of zero (e.g. SuperFences), disable line numbers for that code block.
auto_appendfeature that was added in 8.2.attr_listis enabled, attributes were not properly added to Pygments code blocks in thetableformat. (#1505)v9.0Compare Source
9.0
Please see Migration Notes for details on upgrading to 9.0.
Arithmatex output formats.
arithmatexclass added just likeeverywhere else.
formatter functions are configurable. All others are marked as deprecated and will be removed at some future date.
:man_in_santa_hat:and:mx_claus:backwards -- same for:mrs_claus:and:woman_in_santa_hat:. That is onTwitter's side, not ours.
linespans.lineanchors.anchorlinenos.legacy_no_wrap_codeoption.enabled via the new
auto_titleoption. If a specific name is not preferred, these names can be overridden viaa user defined mapping called
auto_title_map.titleoption in a fenced codeheader.
data-attributes on Pygments code blocks. The latter requiresthe
attr_listextension to be enabled.highlight_codewhich no longer did anything.docs for more information.
slugifyfunction that aims to replace all other slugify methods. Deprecateuslugify,uslugify_encoded,uslugify_case,uslugify_case_encoded,gfm, andgfm_encoded.slugifytakesparameters returning a function that performs the desired slug handling.
slugifyadds new optionscase="fold"forcase folding and
normalize='<normalize format here>'(usesNFCby default).content entry.
pymdownx-inline. Lines notshowing a line number would not render with the proper leading space.
v8.2Compare Source
8.2
Compatibility is present with legacy behavior, and a single string path will still be accepted.
abbreviations, reference links, etc.
that file will be included from the specified folder. This allows for targeting a one off file outside of the normal
snippet paths(s).
?<num>to link discussions. Fulldiscussion links will also be shortened if shortening is enabled. (#1187)
normalize_issue_symbolsoption to make issues, pull request, and discussion links allrender with
#instead of#,!, and?respectively. Input syntax is still the same. Great if you want a GitHubstyle look where all issue types are just rendered with
#.that may think that is part of MagicLink. While possible with CSS, MagicLink provides no CSS automatically.
v8.1.1Compare Source
8.1.1
v8.1Compare Source
8.1
v8.0.1Compare Source
8.0.1
pymdownx-inlinean Pygments 2.7+.v8.0Compare Source
8.0
Please see Release Notes for details on upgrading to 8.0.
key=(no value). Only keys with values or keys with no value and no=are accepted. Keys with no value will now assume the value to be the key name.attr_listextension is enabled, fenced code that use brace attribute list style headers (```{lang #id .class attr=value}) will attach arbitrary attributes that are included in the header to the code element.linenums) included in fenced code headers no longer do anything. Ifattr_listis enabled, and the brace header is used, such options will be treated as HTML attributes. JavaScript highlighter options should be defined in the brace header form withattr_listenabled in order to generate appropriate, compatible HTML with the chosen JavaScript highlighter.legacy_tab_classesoption has been removed. Please use the Tabbed extension to create general purpose tabs for code blocks or other content.language_prefixwhich controls the prefix applied to language classes when Pygments is not being used.code_attr_on_prewas added to the Highlight extension and controls whether language classes, and any ids, attributes, and classes that are defined in fenced code attribute list style headers, are attached to the code element or pre element. This has effect when using Pygments.linenumsnow defaults toNoneand acceptsNone,True, orFalse.Noneis disabled by default, but can be enabled per code block.Trueenables line numbers globally.Falsedisables globally and cannot be enabled manually per code block.Configuration
📅 Schedule: Branch creation - "" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ 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.
This PR was generated by Mend Renovate. View the repository job log.