Skip to content

Conversation

@maximelb
Copy link
Contributor

@maximelb maximelb commented Jan 30, 2026

Summary

Improves documentation for the is public address and is private address D&R operators to clearly specify which IP address ranges are matched or excluded.

Context

A user reported that detection rules using op: is public address were incorrectly flagging 127.x.x.x (loopback) addresses as "public". Investigation revealed that Go's net.IP.IsPrivate() only covers RFC 1918 addresses and doesn't include loopback or link-local ranges.

Changes

is private address operator

  • Explicitly lists the RFC 1918 ranges that are matched:
    • 10.0.0.0/8
    • 172.16.0.0/12
    • 192.168.0.0/16
  • Added note clarifying that loopback and link-local are NOT matched
  • Suggests using cidr operator for matching those ranges if needed

is public address operator

  • Replaced vague "as defined by RFC 1918" with clear table of excluded ranges:
    • Private (RFC 1918): 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16
    • Loopback: 127.0.0.0/8
    • Link-local: 169.254.0.0/16
  • Added note that multicast addresses (224.0.0.0/4) ARE considered public
  • Changed code block language hint from generic to yaml for better syntax highlighting

Test plan

  • Documentation renders correctly in markdown preview
  • Verify documentation site builds successfully

🤖 Generated with Claude Code

…ehavior

Improved documentation for the IP address detection operators to clearly
specify which address ranges are matched/excluded:

**is private address:**
- Explicitly lists RFC 1918 ranges (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16)
- Notes that loopback and link-local are NOT matched by this operator

**is public address:**
- Documents excluded ranges in a clear table format:
  - Private (RFC 1918)
  - Loopback (127.0.0.0/8)
  - Link-local (169.254.0.0/16)
- Clarifies that multicast addresses ARE considered public

This documentation update accompanies the fix in dr-engine PR #213 which
corrected the behavior of 'is public address' to exclude loopback and
link-local addresses.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@maximelb maximelb marked this pull request as ready for review January 30, 2026 14:56
@maximelb maximelb requested a review from tekgrunt January 30, 2026 15:00
@maximelb maximelb enabled auto-merge (squash) January 30, 2026 15:00
Documents new D&R operators for version-specific IP address classification:
- is public ipv4 address
- is public ipv6 address
- is private ipv4 address
- is private ipv6 address

Updates existing operator documentation:
- is private address: Added CGNAT (RFC 6598) and IPv6 ULA (RFC 4193)
- is public address: Added comprehensive IPv6 support, corrected multicast
  handling, added CGNAT exclusion

All address ranges now include RFC references for clarity.

BREAKING CHANGE: Documentation now correctly states that multicast addresses
(224.0.0.0/4, ff00::/8) are NOT considered public. Previous documentation
incorrectly stated they were public.
…arification-updates

docs: Add IPv4/IPv6 address operators and fix IP classification documentation
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants