Skip to content

chore(deps): update guard-core requirement from >=4.0.1 to >=4.0.3 in the dependencies group - #1116

Merged
rennf93 merged 1 commit into
masterfrom
dependabot/pip/dependencies-98bc77e956
Sep 25, 2026
Merged

rennf93 merged 1 commit into
masterfrom
dependabot/pip/dependencies-98bc77e956

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Sep 24, 2026

Copy link
Copy Markdown
Contributor

Updates the requirements on guard-core to permit the latest version.
Updates guard-core to 4.0.3

Release notes

Sourced from guard-core's releases.

v4.0.3

Binary upload false positives: the sus-pattern engine no longer blocks text-decoded binary bodies (v4.0.3)

Fixed

  • Every binary file upload was blocked and its client IP auto-banned. A multipart file or zip upload decodes to text full of artifact bytes, produced 3 to 7 spurious pattern matches on random data from a small family of low-specificity shell-source heuristics (backtick pairs, dollar substitutions, quote splice, glob wildcards, template fragments), crossed the anomaly threshold, and banned a real user for uploading zips. Matches from those noise-prone patterns, and only those, are now discarded when the window of 64 characters on each side of the match holds 4 or more binary artifact characters (control characters other than tab, newline and carriage return, DEL, Latin-1/Latin-Ext-A artifact bytes outside a small text allowlist, surrogateescape bytes, and the Unicode replacement character). The check is an O(1) prefix-sum difference built once per scanned string in both the async and the sync tree, applied after the existing candidate rejection validators, with a frozen registry and a noise-corpus honesty test keeping the set minimal. Signature patterns are never gated, so real attacks hidden in binary padding (padded webshells, pickle opcode streams, base64-fragmented multipart parts) are still caught, while pure text, accented European text and all non-Latin scripts keep unchanged behavior.
Changelog

Sourced from guard-core's changelog.

v4.0.3 (2026-09-21)

Binary upload false positives: the sus-pattern engine no longer blocks text-decoded binary bodies (v4.0.3)

Fixed

  • Every binary file upload was blocked and its client IP auto-banned. A multipart file or zip upload decodes to text full of artifact bytes, produced 3 to 7 spurious pattern matches on random data from a small family of low-specificity shell-source heuristics (backtick pairs, dollar substitutions, quote splice, glob wildcards, template fragments), crossed the anomaly threshold, and banned a real user for uploading zips. Matches from those noise-prone patterns, and only those, are now discarded when the window of 64 characters on each side of the match holds 4 or more binary artifact characters (control characters other than tab, newline and carriage return, DEL, Latin-1/Latin-Ext-A artifact bytes outside a small text allowlist, surrogateescape bytes, and the Unicode replacement character). The check is an O(1) prefix-sum difference built once per scanned string in both the async and the sync tree, applied after the existing candidate rejection validators, with a frozen registry and a noise-corpus honesty test keeping the set minimal. Signature patterns are never gated, so real attacks hidden in binary padding (padded webshells, pickle opcode streams, base64-fragmented multipart parts) are still caught, while pure text, accented European text and all non-Latin scripts keep unchanged behavior.

v4.0.2 (2026-09-12)

Bounded built-in pattern matchers, ReDoS validator hardening, and a load-scaled verdict deadline (v4.0.2)

Fixed

  • Several built-in suspicious-content matchers were quadratic. The file-upload, template-engine, XML/XXE, pickle-global, cmd-injection, and load-file builtins now run as bounded scan-window matchers with the same detection language, verified by differential regressions and bounded timing checks in both trees.
  • The ReDoS validator missed a quadratic shape. Quantified classes now pair across any run of atoms that can match empty, character sets are exact interval sets over the full code space, membership is decided by the regex engine on the compiled node, and builtins are certified with the compile flags they ship with.
  • The sqli comment-terminator builtin was quadratic on a quote followed by whitespace. '\s*[\);]*\s*-- is now '\s*(?:[\);]+\s*)?--, the same language, linear on that input.
  • The validator's own probe timing could exceed its wall-clock budget. Probes below the noise floor take a single sample, a stride sample bounds exploding enumerations, and the cmd_injection backtick builtin validates in about six seconds instead of twenty-two.
  • The verdict deadline was a fixed 40 seconds regardless of host load. It now scales by the measured load factor, floored at idle-host behavior and ceiled at 240 seconds, so a genuinely quadratic pattern is verdicted on a loaded runner instead of rejected with a timeout.

Changed

  • Anomaly detection skips the variance computation when the latest execution time is at or below the rolling average.
  • CI and test instrumentation. The redos_timing gate runs as four shards with one assembled PR comment, the ecosystem gate uploads its pytest output regardless of outcome, the sync check propagates generated-code check failures, CPU-bound budgets measure minimum process CPU time, and guard_core logger levels are restored after every test.

v4.0.1 (2026-09-05)

Public redaction helpers, ReDoS validator latency, phantom ban, singleton resets, and path-level gates (v4.0.1)

Added

  • redact_blob_for_display and redact_url_for_display exported from guard_core.utils and guard_core.sync.utils: the redaction guard-core applies to its own log lines; None for a name set means the hardcoded default.

Changed

  • v4.0.0 changelog correction. Proxy identity headers skip only the ssrf category for IP-shaped values; every other category still scans them. Corrected in place below.
  • Dev dependency pytest on 9.x. Every fixture lives in the root conftest and a gate test fails if a nested conftest defines one, so pytest-dev/pytest#14971 cannot drop a fixture.
  • The live-smoke driver clears only its own smoke: keys instead of flushing the whole Redis database.

... (truncated)

Commits
  • c737222 docs: rename docs.yml job from deploy to docs-update
  • b218002 docs: fix pymarkdownlint violations in AGENTS.md and security-config.md
  • 436d6f7 fix: discard noise-prone pattern matches inside binary body content (#104)
  • 60029eb docs: put the agent-guidance sentence on line two of AGENTS.md/CLAUDE.md
  • b4ea34b docs: add AGENTS.md/CLAUDE.md agent guide and extend the guard-core package s...
  • c85b880 chore(deps): bump github/codeql-action from 4.37.9 to 4.38.0 (#102)
  • 886f801 docs(changelog): cover the bounded built-in matchers and remaining 4.0.2 changes
  • 70708fa Merge branch 'master' of https://github.com/rennf93/guard-core
  • d28ace0 release(4.0.2): ReDoS validator probe pairing and timing fixes, and a load-sc...
  • 192cd7f Update CHANGELOG.md
  • Additional commits viewable in compare view

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 commands and options

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 <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
  • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
  • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
  • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
  • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions

Updates the requirements on [guard-core](https://github.com/rennf93/guard-core) to permit the latest version.

Updates `guard-core` to 4.0.3
- [Release notes](https://github.com/rennf93/guard-core/releases)
- [Changelog](https://github.com/rennf93/guard-core/blob/master/CHANGELOG.md)
- [Commits](rennf93/guard-core@4.0.1...4.0.3)

---
updated-dependencies:
- dependency-name: guard-core
  dependency-version: 4.0.3
  dependency-type: direct:production
  dependency-group: dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies pyproject.toml / uv.lock or panel package manifests python Pull requests that update python code labels Sep 24, 2026
@dependabot dependabot Bot added the python Pull requests that update python code label Sep 24, 2026
@github-actions

Copy link
Copy Markdown

Thanks for opening your first pull request on RoboCo!

Quick checklist before review (most of these are enforced by CI, but worth a glance):

  • make quality — ruff format check, ruff check, mypy, pytest (≥80% coverage), and the rest of the gate
  • Panel changes pass pnpm lint and pnpm exec tsc --noEmit (run from panel/)
  • No # noqa / # type: ignore shortcuts; pre-existing violations in touched files are fixed
  • Added an entry under ## [Unreleased] in CHANGELOG.md
  • Signed the CLA (the bot will prompt you on this PR)
  • Signed your commits — master requires verified signatures (SSH signing setup)
  • Updated any affected docs under docs/

See CONTRIBUTING.md for the full workflow and the Code of Conduct for the community standards we follow.

Welcome aboard — a maintainer will review shortly.

@rennf93 rennf93 self-assigned this Sep 25, 2026
@rennf93
rennf93 merged commit b7f6513 into master Sep 25, 2026
8 checks passed
@dependabot
dependabot Bot deleted the dependabot/pip/dependencies-98bc77e956 branch September 25, 2026 00:17
@github-actions github-actions Bot locked and limited conversation to collaborators Sep 25, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

dependencies pyproject.toml / uv.lock or panel package manifests python Pull requests that update python code

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant