Skip to content

Conversation

@renovate
Copy link
Contributor

@renovate renovate bot commented Sep 10, 2024

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
path-to-regexp 6.2.2 -> 6.3.0 age adoption passing confidence

GitHub Vulnerability Alerts

CVE-2024-45296

Impact

A bad regular expression is generated any time you have two parameters within a single segment, separated by something that is not a period (.). For example, /:a-:b.

Patches

For users of 0.1, upgrade to 0.1.10. All other users should upgrade to 8.0.0.

These versions add backtrack protection when a custom regex pattern is not provided:

They do not protect against vulnerable user supplied capture groups. Protecting against explicit user patterns is out of scope for old versions and not considered a vulnerability.

Version 7.1.0 can enable strict: true and get an error when the regular expression might be bad.

Version 8.0.0 removes the features that can cause a ReDoS.

Workarounds

All versions can be patched by providing a custom regular expression for parameters after the first in a single segment. As long as the custom regular expression does not match the text before the parameter, you will be safe. For example, change /:a-:b to /:a-:b([^-/]+).

If paths cannot be rewritten and versions cannot be upgraded, another alternative is to limit the URL length. For example, halving the attack string improves performance by 4x faster.

Details

Using /:a-:b will produce the regular expression /^\/([^\/]+?)-([^\/]+?)\/?$/. This can be exploited by a path such as /a${'-a'.repeat(8_000)}/a. OWASP has a good example of why this occurs, but the TL;DR is the /a at the end ensures this route would never match but due to naive backtracking it will still attempt every combination of the :a-:b on the repeated 8,000 -a.

Because JavaScript is single threaded and regex matching runs on the main thread, poor performance will block the event loop and can lead to a DoS. In local benchmarks, exploiting the unsafe regex will result in performance that is over 1000x worse than the safe regex. In a more realistic environment using Express v4 and 10 concurrent connections, this translated to average latency of ~600ms vs 1ms.

References


Release Notes

pillarjs/path-to-regexp (path-to-regexp)

v6.3.0: Fix backtracking in 6.x

Compare Source

Fixed


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.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate bot added the dependencies Pull requests that update a dependency file label Sep 10, 2024
@changeset-bot
Copy link

changeset-bot bot commented Sep 10, 2024

⚠️ No Changeset found

Latest commit: 3668dd6

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@github-actions github-actions bot added the pkg: astro Related to the core `astro` package (scope) label Sep 10, 2024
@renovate renovate bot changed the title fix(deps): update dependency path-to-regexp to v8 [security] fix(deps): update dependency path-to-regexp to v8 [security] - autoclosed Sep 11, 2024
@renovate renovate bot closed this Sep 11, 2024
@renovate renovate bot deleted the renovate/npm-path-to-regexp-vulnerability branch September 11, 2024 19:51
@renovate renovate bot restored the renovate/npm-path-to-regexp-vulnerability branch September 11, 2024 23:22
@renovate renovate bot changed the title fix(deps): update dependency path-to-regexp to v8 [security] - autoclosed fix(deps): update dependency path-to-regexp to v8 [security] Sep 11, 2024
@renovate renovate bot reopened this Sep 11, 2024
@renovate renovate bot force-pushed the renovate/npm-path-to-regexp-vulnerability branch from 4d24550 to 8d2c887 Compare September 11, 2024 23:23
@renovate renovate bot changed the title fix(deps): update dependency path-to-regexp to v8 [security] fix(deps): update dependency path-to-regexp to v8 [security] - autoclosed Sep 12, 2024
@renovate renovate bot closed this Sep 12, 2024
@renovate renovate bot deleted the renovate/npm-path-to-regexp-vulnerability branch September 12, 2024 20:20
@renovate renovate bot changed the title fix(deps): update dependency path-to-regexp to v8 [security] - autoclosed fix(deps): update dependency path-to-regexp to v8 [security] Sep 13, 2024
@renovate renovate bot reopened this Sep 13, 2024
@renovate renovate bot restored the renovate/npm-path-to-regexp-vulnerability branch September 13, 2024 19:41
@renovate renovate bot force-pushed the renovate/npm-path-to-regexp-vulnerability branch from 8d2c887 to 3668dd6 Compare September 13, 2024 19:43
@renovate renovate bot changed the title fix(deps): update dependency path-to-regexp to v8 [security] fix(deps): update dependency path-to-regexp to v6.3.0 [security] Sep 13, 2024
@renovate renovate bot changed the title fix(deps): update dependency path-to-regexp to v6.3.0 [security] Update dependency path-to-regexp to v6.3.0 [SECURITY] Sep 17, 2024
@renovate renovate bot changed the title Update dependency path-to-regexp to v6.3.0 [SECURITY] fix(deps): update dependency path-to-regexp to v6.3.0 [security] Sep 18, 2024
@renovate renovate bot changed the title fix(deps): update dependency path-to-regexp to v6.3.0 [security] fix(deps): update dependency path-to-regexp to v6.3.0 [security] - autoclosed Sep 19, 2024
@renovate renovate bot closed this Sep 19, 2024
@renovate renovate bot deleted the renovate/npm-path-to-regexp-vulnerability branch September 19, 2024 09:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file pkg: astro Related to the core `astro` package (scope)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants