Repository navigation
Conversation
The chain entry said non-disruptive actions run when "the rule that contains them matches", which reads as if a later rule could fire on its own. Chained rules are evaluated in order and stop at the first non-match, so an action runs once its rule and every rule before it matched. Add a worked example. SecRuleUpdateActionById now collects the chain caveats in one place: v2 takes the chain flag from the update (so chain must be repeated, and must not be added to a rule without it), v3 applies updates at run time to the chain starter only and runs every updated action, setvar included, only on a full chain match. Refs owasp-modsecurity/ModSecurity#2860 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RiUJuqXNvvpytiGRiDFyTy
This was referenced Oct 26, 2026
This branch has not been deployed
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 join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Addresses the remaining items of owasp-modsecurity/ModSecurity#2860 (reported by @diablodale, originally from coreruleset/coreruleset#3080).
chainsetvar.SecRuleUpdateActionById: replaces the short note with an "Updating chained rules" subsection.msre_actionset_mergealways takesis_chainedfrom the update, so an update withoutchainunchains the rule (the case-5 failure in coreruleset#3080). Repeatchainonly on rules that already have it.RULEID:offsetsemantics are documented. Includes a wrong/right example.chainis ignored with a "General failure" message. Every updated action,setvarincluded, runs only on a full chain match.How this was verified
test/regression_testson currentv3/master, covering a failing last rule, a failing starter, a 3-rule partial match,ctlin the starter, update with and withoutchain, anddeny/setvaradded by update. All the v3 statements match the measured results.apache2/re.c,apache2/apache2_config.conv2/master) plus @diablodale's measured 2.9.3 repro in coreruleset#3080. Not re-run in v2 here. The "msg not logged" point is attributed as a report rather than stated as fact.Refs owasp-modsecurity/ModSecurity#2860 (it won't auto-close across repos).
🤖 Generated with Claude Code