[pull] master from apify:master#211
Merged
Merged
Conversation
…directory (#3715) Storage names and key-value-store record keys are used directly as on-disk path components in `@crawlee/memory-storage`. A value containing `..` or an absolute path could therefore resolve outside the intended storage directory and create/write files elsewhere: - **Storage names** — `KeyValueStore`/`Dataset`/`RequestQueue` `getOrCreate(name)` and `update({ name })` resolved `path.resolve(baseDir, name)`, so e.g. `KeyValueStore.open('../escaped')` escaped the `key_value_stores` / `datasets` / `request_queues` directory. - **Record keys** — the storage client's `setRecord({ key })` built the file path as `resolve(storeDir, key)`. The core `KeyValueStore.setValue` already validates keys against a restricted charset, but the lower-level memory-storage client did not, so a key like `../escaped` escaped the store directory. Adds a shared `resolveWithinDirectory(baseDirectory, segment)` helper that resolves the candidate path and asserts it stays within the base directory, throwing otherwise. All name- and key-based path construction (resource-client constructors, rename in `update`, the `findOrCache*` lookup helpers, and the key-value-store filesystem entry) now routes through it. Legitimate names/keys are unaffected — including nested segments that stay within the directory; only values that actually escape are rejected. Dataset entity IDs (sequential index) and request IDs (hashed) are internally generated and were already safe.
Bumps [hono](https://github.com/honojs/hono) from 4.12.18 to 4.12.23. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/honojs/hono/releases">hono's releases</a>.</em></p> <blockquote> <h2>v4.12.23</h2> <h2>What's Changed</h2> <ul> <li>fix(serve-static): normalize all backslashes in file paths, not just the first in <a href="https://redirect.github.com/honojs/hono/pull/4962">honojs/hono#4962</a></li> <li>feat(context): export the Context class publicly by <a href="https://github.com/BlankParticle"><code>@BlankParticle</code></a> in <a href="https://redirect.github.com/honojs/hono/pull/4543">honojs/hono#4543</a></li> <li>docs(contribution): add AI Usage Policy by <a href="https://github.com/yusukebe"><code>@yusukebe</code></a> in <a href="https://redirect.github.com/honojs/hono/pull/4970">honojs/hono#4970</a></li> <li>feat(compress): add contentTypeFilter option and <code>COMPRESSIBLE_CONTENT_TYPE_REGEX</code> re-export by <a href="https://github.com/na-trium-144"><code>@na-trium-144</code></a> in <a href="https://redirect.github.com/honojs/hono/pull/4961">honojs/hono#4961</a></li> <li>fix(utils/ipaddr): do not compress a single 0 group to <code>::</code> by <a href="https://github.com/yusukebe"><code>@yusukebe</code></a> in <a href="https://redirect.github.com/honojs/hono/pull/4971">honojs/hono#4971</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/honojs/hono/compare/v4.12.22...v4.12.23">https://github.com/honojs/hono/compare/v4.12.22...v4.12.23</a></p> <h2>v4.12.22</h2> <h2>What's Changed</h2> <ul> <li>chore: update vitest to v4 and cleanups by <a href="https://github.com/BlankParticle"><code>@BlankParticle</code></a> in <a href="https://redirect.github.com/honojs/hono/pull/4952">honojs/hono#4952</a></li> <li>fix(mime): specify charset parameter per MIME type instead of mechanical detection by <a href="https://github.com/renatograsso10"><code>@renatograsso10</code></a> in <a href="https://redirect.github.com/honojs/hono/pull/4912">honojs/hono#4912</a></li> <li>fix(compress): respect Accept-Encoding when encoding option is set by <a href="https://github.com/LeSingh1"><code>@LeSingh1</code></a> in <a href="https://redirect.github.com/honojs/hono/pull/4951">honojs/hono#4951</a></li> <li>fix(deno): echo negotiated WebSocket subprotocol in upgrade response by <a href="https://github.com/ATOM00blue"><code>@ATOM00blue</code></a> in <a href="https://redirect.github.com/honojs/hono/pull/4955">honojs/hono#4955</a></li> <li>feat: add msgpack as a compressible content type by <a href="https://github.com/na-trium-144"><code>@na-trium-144</code></a> in <a href="https://redirect.github.com/honojs/hono/pull/4957">honojs/hono#4957</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/renatograsso10"><code>@renatograsso10</code></a> made their first contribution in <a href="https://redirect.github.com/honojs/hono/pull/4912">honojs/hono#4912</a></li> <li><a href="https://github.com/LeSingh1"><code>@LeSingh1</code></a> made their first contribution in <a href="https://redirect.github.com/honojs/hono/pull/4951">honojs/hono#4951</a></li> <li><a href="https://github.com/ATOM00blue"><code>@ATOM00blue</code></a> made their first contribution in <a href="https://redirect.github.com/honojs/hono/pull/4955">honojs/hono#4955</a></li> <li><a href="https://github.com/na-trium-144"><code>@na-trium-144</code></a> made their first contribution in <a href="https://redirect.github.com/honojs/hono/pull/4957">honojs/hono#4957</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/honojs/hono/compare/v4.12.21...v4.12.22">https://github.com/honojs/hono/compare/v4.12.21...v4.12.22</a></p> <h2>v4.12.21</h2> <h2>Security fixes</h2> <p>This release includes fixes for the following security issues:</p> <h3>app.mount() strips mount prefix using undecoded path, causing incorrect routing for percent-encoded paths</h3> <p>Affects: <code>app.mount()</code>. Fixes prefix stripping using the raw URL pathname instead of the decoded path, where percent-encoded characters in the mount prefix or path could cause the prefix to be removed at the wrong position, resulting in the sub-application receiving an incorrect path. GHSA-2gcr-mfcq-wcc3</p> <h3>IP Restriction bypasses static deny rules for non-canonical IPv6</h3> <p>Affects: <code>hono/ip-restriction</code>. Fixes IP address comparison using string equality, where non-canonical IPv6 representations of a denied address — such as compressed forms or hex-notation IPv4-mapped addresses — could bypass static deny rules. GHSA-xrhx-7g5j-rcj5</p> <h3>Cookie helper does not sanitize sameSite and priority, allowing Set-Cookie injection</h3> <p>Affects: <code>hono/cookie</code>. Fixes missing validation of <code>sameSite</code> and <code>priority</code> options against injection characters (<code>;</code>, <code>\r</code>, <code>\n</code>), where user-controlled input passed to either option could inject additional attributes into the Set-Cookie response header. GHSA-3hrh-pfw6-9m5x</p> <h3>JWT middleware accepts any Authorization scheme, not only Bearer</h3> <p>Affects: <code>hono/jwt</code>, <code>hono/jwk</code>. Fixes missing scheme validation in the Authorization header, where any two-part header value was accepted regardless of the scheme name, allowing non-Bearer schemes to pass JWT authentication. GHSA-f577-qrjj-4474</p> <hr /> <p>Users who use <code>app.mount()</code>, <code>hono/ip-restriction</code>, <code>hono/cookie</code>, or <code>hono/jwt</code>/<code>hono/jwk</code> are encouraged to upgrade to this version.</p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/honojs/hono/commit/83bfb3bb4a12c1d92c163a39e907df5d662ff78d"><code>83bfb3b</code></a> 4.12.23</li> <li><a href="https://github.com/honojs/hono/commit/bcd290a64c0b392fd06d2bd1f256c5dc9835e4a4"><code>bcd290a</code></a> fix(utils/ipaddr): do not compress a single 0 group to <code>::</code> (<a href="https://redirect.github.com/honojs/hono/issues/4971">#4971</a>)</li> <li><a href="https://github.com/honojs/hono/commit/c968177d9c11ddc7c7cca57c384497f11a6d60ae"><code>c968177</code></a> feat(compress): add contentTypeFilter option and `COMPRESSIBLE_CONTENT_TYPE_R...</li> <li><a href="https://github.com/honojs/hono/commit/0265a5453a7c272417eaa22b93d3fb319d2188ed"><code>0265a54</code></a> docs(contribution): add AI Usage Policy (<a href="https://redirect.github.com/honojs/hono/issues/4970">#4970</a>)</li> <li><a href="https://github.com/honojs/hono/commit/c84c5d2d46ca6a78c316529491d42ab7bb956368"><code>c84c5d2</code></a> feat(context): export the Context class publicly (<a href="https://redirect.github.com/honojs/hono/issues/4543">#4543</a>)</li> <li><a href="https://github.com/honojs/hono/commit/82dad6297c90c33c41bf48b4530509a21588ad06"><code>82dad62</code></a> fix(serve-static): normalize all backslashes in file paths, not just the firs...</li> <li><a href="https://github.com/honojs/hono/commit/2f01b774b168911d24e4864fb66054f5de9d9a4e"><code>2f01b77</code></a> 4.12.22</li> <li><a href="https://github.com/honojs/hono/commit/6bc0dff277684ee50ace6dc87a7ad73a9c131c99"><code>6bc0dff</code></a> feat: add msgpack as a compressible content type (<a href="https://redirect.github.com/honojs/hono/issues/4957">#4957</a>)</li> <li><a href="https://github.com/honojs/hono/commit/7e0555d14c72d4204347ac9afaae32ba5c013ab9"><code>7e0555d</code></a> fix(deno): echo negotiated WebSocket subprotocol in upgrade response (<a href="https://redirect.github.com/honojs/hono/issues/4955">#4955</a>)</li> <li><a href="https://github.com/honojs/hono/commit/f0ed2465913f2a89ebdf65cc54d6254915fc3ff6"><code>f0ed246</code></a> fix(compress): respect Accept-Encoding when encoding option is set (<a href="https://redirect.github.com/honojs/hono/issues/4951">#4951</a>)</li> <li>Additional commits viewable in <a href="https://github.com/honojs/hono/compare/v4.12.18...v4.12.23">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/apify/crawlee/network/alerts). </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
See Commits and Changes for more details.
Created by
pull[bot] (v2.0.0-alpha.4)
Can you help keep this open source service alive? 💖 Please sponsor : )