Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: coreruleset/coreruleset
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v3.3.9
Choose a base ref
...
head repository: coreruleset/coreruleset
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v3.3.10
Choose a head ref
  • 4 commits
  • 134 files changed
  • 1 contributor

Commits on Jul 1, 2026

  1. Merge commit from fork

    The commands-prefix group in rules 932100, 932105, 932106, and 932150
    wrote the parenthesis branch as \s*\(\s* (whitespace on both sides) inside
    a *-quantified alternation, so consecutive iterations could claim the same
    whitespace run, forcing exponential backtracking in PCRE2. Rewrite each
    branch to carry only a trailing \s* with no leading whitespace, so a run
    of whitespace is consumed in exactly one place. Also drop the duplicate
    \$.* alternative in the VARNAME=xyz branch.
    
    Affected rules: 932100, 932105, 932106, 932150.
    fzipi authored Jul 1, 2026
    Configuration menu
    Copy the full SHA
    4665b6d View commit details
    Browse the repository at this point in the history
  2. Merge commit from fork

    CRS attack-detection rules that inspect XML element text (`XML:/*`) do
    not inspect XML attribute values (`XML://@*`). The two XPath expressions
    are strictly disjoint, so payloads placed inside XML attribute values
    bypass detection at every paranoia level.
    
    This v3 LTS branch ships the fix gated behind an opt-in transaction
    variable so operators can stage the change:
    
    - 115 rules in 8 families (921, 930, 932, 933, 934-NODEJS, 941, 942,
      943) gain `|XML://@*` on the line that already targets `XML:/*`.
      The 944 (Java) family already inspected both and is unchanged.
    
    - A runtime gate (id:901180, phase:2) strips `XML://@*` from the
      affected rules for each transaction when `tx.crs_xml_attr_inspect`
      is not set, preserving legacy LTS behavior by default.
    
    - A commented opt-in `SecAction` (id:900510) is added to
      `crs-setup.conf.example`. Uncommenting it enables XML attribute
      inspection.
    
    - Regression tests (FTW v1 schema) cover every changed rule via an
      XML body whose attack payload lives inside an attribute. The CI
      compose file injects the opt-in `SecAction` so tests run with
      inspection enabled.
    fzipi authored Jul 1, 2026
    Configuration menu
    Copy the full SHA
    635cecf View commit details
    Browse the repository at this point in the history

Commits on Jul 2, 2026

  1. Configuration menu
    Copy the full SHA
    96d146c View commit details
    Browse the repository at this point in the history
  2. docs: add missing libmodsecurity v3.0.16 requirement to v3.3.10 CHANG…

    …ES (#4693)
    
    Rule 901181 (added in v3.3.10) uses the same ctl:ruleRemoveTargetByTag
    with an '@'-containing target as v4.25.1's equivalent rule, and v3.3
    supports running on nginx/libmodsecurity v3 (see tests/docker-compose.yml).
    The v3.3.10 CHANGES.md entry only documented the ModSecurity v2 opt-out
    limitation and was missing this separate, already-fixed parse-time
    requirement that v4.25.1's CHANGES.md already has.
    fzipi authored Jul 2, 2026
    Configuration menu
    Copy the full SHA
    ab9e8bb View commit details
    Browse the repository at this point in the history
Loading