Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .coderabbit.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Check warning on line 1 in .coderabbit.yaml

View workflow job for this annotation

GitHub Actions / validate

1:81 [line-length] line too long (81 > 80 characters)
#
# CodeRabbit organization config for the `coreruleset` GitHub org.
#
Expand Down Expand Up @@ -29,7 +29,7 @@
# Tone guidance appended to every review prompt. Max 250 chars (silently
# truncated beyond that).
tone_instructions: >-
Be direct, with respect. Be concise. Assume positive intent. Flag bugs, security issues, false-positive risk and regressions, with a fix. Cite rule IDs, paranoia levels and affected variables. Skip style nits. No praise.

Check warning on line 32 in .coderabbit.yaml

View workflow job for this annotation

GitHub Actions / validate

32:81 [line-length] line too long (222 > 80 characters)

# Opt in to early-access / beta features org-wide.
early_access: true
Expand Down Expand Up @@ -316,7 +316,7 @@
and the `TX:DETECTION_PARANOIA_LEVEL "@lt N"` skipAfter guards at the
top of each detection file, carry only `id`, `phase`, `pass,nolog`,
`tag:'OWASP_CRS'` and `ver`. Do not ask for msg, logdata, severity,
paranoia-level, attack-type or capec metadata on them. A `tag:` value that is not in

Check warning on line 319 in .coderabbit.yaml

View workflow job for this annotation

GitHub Actions / validate

319:81 [line-length] line too long (92 > 80 characters)
`util/APPROVED_TAGS` fails the crs-linter CI job — say so explicitly
and tell the author to add it there in sorted position first.

Expand Down Expand Up @@ -373,7 +373,7 @@
`crs-toolchain regex update <id>`.

- path: "plugins/*.conf"
# CRS plugins: coreruleset/plugins/ and the *-rule-exclusions-plugin repos.

Check warning on line 376 in .coderabbit.yaml

View workflow job for this annotation

GitHub Actions / validate

376:81 [line-length] line too long (81 > 80 characters)
instructions: |
This is a CRS plugin's seclang. Every invariant that applies to core
rules applies here too: metadata completeness, approved tags, a
Expand Down Expand Up @@ -424,9 +424,9 @@
Changed default without justification — anomaly score thresholds
(`tx.inbound_anomaly_score_threshold`,
`tx.outbound_anomaly_score_threshold`), `tx.blocking_paranoia_level`,
`tx.detection_paranoia_level`, `tx.critical/error/warning/notice_anomaly_score`,

Check warning on line 427 in .coderabbit.yaml

View workflow job for this annotation

GitHub Actions / validate

427:81 [line-length] line too long (88 > 80 characters)
sampling percentage, `tx.enforce_bodyproc_urlencoded`, allowed methods,
allowed content types, request body limits, or `tx.crs_validate_utf8_encoding`.

Check warning on line 429 in .coderabbit.yaml

View workflow job for this annotation

GitHub Actions / validate

429:81 [line-length] line too long (87 > 80 characters)
Each of these is a behaviour change for every default deployment and
needs the reasoning in the PR description.

Expand Down Expand Up @@ -550,6 +550,15 @@
different string than intended; percent-encode it and keep the
readable form in `desc`.

Response test that never reaches the response — response-phase tests
(RESPONSE-95x) POST to the albedo backend's `/reflect`, which parses
the request body as a JSON reflection spec and returns only its `body`
(or base64 `encodedBody`) field. A plain string gets `400 Invalid JSON
in request body`; JSON without `body` returns an empty response. Either
way RESPONSE_BODY never holds the payload, so a negative test passes
without testing anything. Require `data: '{"body": "<payload>"}'`.
albedo ignores the request `Content-Type`, so don't flag that.

Only positive tests — a new or widened pattern should come with at
least one benign payload asserting it does NOT match, especially for
short patterns or ones that could hit hashes, IDs, or file paths.
Expand Down Expand Up @@ -661,7 +670,7 @@
# Checks are mode: warning, except "AI Use Without Disclosure" (error). An
# error-mode check blocks merge only while auto approvals are enabled
# (request_changes_workflow: true). Escalate another check to mode: error
# only after confirming a low false-positive rate on real CRS PRs. Check names are capped at 50 chars

Check warning on line 673 in .coderabbit.yaml

View workflow job for this annotation

GitHub Actions / validate

673:81 [line-length] line too long (103 > 80 characters)
# and instructions at 10,000 chars by the schema.
pre_merge_checks:
description:
Expand Down Expand Up @@ -1030,12 +1039,12 @@
- name: "OWASP Security (Web, API & LLM)"
mode: warning
instructions: |
Flag ⚠️ WARNING: <description> — <fix> on any affected line or block for:

Check warning on line 1042 in .coderabbit.yaml

View workflow job for this annotation

GitHub Actions / validate

1042:81 [line-length] line too long (83 > 80 characters)

## Web (OWASP Top 10)

Broken Access Control — missing authorization checks, insecure direct object references,

Check warning on line 1046 in .coderabbit.yaml

View workflow job for this annotation

GitHub Actions / validate

1046:81 [line-length] line too long (98 > 80 characters)
CORS misconfiguration, privilege escalation paths, forced browsing to authenticated resources.

Check warning on line 1047 in .coderabbit.yaml

View workflow job for this annotation

GitHub Actions / validate

1047:81 [line-length] line too long (104 > 80 characters)

Cryptographic Failures — hardcoded secrets or API keys, weak algorithms (MD5, SHA1, DES),
unencrypted sensitive data in transit or at rest, weak or expired TLS configuration,
Expand Down
Loading