Built-in Structural Rules
15 built-in rules check the structure of the flow definition itself: overly broad addresses, dangerous port ranges, protocol misconfigurations, special addresses, and input warnings. They are independent of the compliance framework toggles. Every rule is on by default and can be disabled individually in the Rules tab.
| Rule ID | Severity | Category | Fires when |
|---|---|---|---|
| BUILTIN-SRC-ANY | CRITICAL | Source Identity | Source is any IP (any, all, or any x.x.x.x/0) |
| BUILTIN-SRC-PUBLIC | HIGH | Source Identity | Source range is public (see Address classification) |
| BUILTIN-SRC-BROAD | HIGH / MEDIUM / LOW | Source Breadth | Source subnet is broad (tiered, see below) |
| BUILTIN-DST-ANY | CRITICAL | Destination Identity | Destination is any IP (any, all, or any x.x.x.x/0) |
| BUILTIN-DST-PUBLIC | HIGH | Destination Identity | Destination range is public |
| BUILTIN-DST-BROAD | HIGH / MEDIUM / LOW | Destination Breadth | Destination subnet is broad (tiered, see below) |
| BUILTIN-PORT-BROAD | CRITICAL / HIGH / INFO | Port Breadth | The port specification covers more than one port (tiered, see below) |
| BUILTIN-PROTO-ANY | MEDIUM | Protocol | Protocol is set to Any |
| BUILTIN-SAME-IP | INFO | Routing Anomaly | Source and destination are the same network: identical network address and prefix |
| BUILTIN-LOOPBACK | MEDIUM | Special Address | A side lies entirely inside 127.0.0.0/8 |
| BUILTIN-LINKLOCAL | MEDIUM | Special Address | A side lies entirely inside 169.254.0.0/16 |
| BUILTIN-MULTICAST | MEDIUM | Special Address | A side lies entirely inside 224.0.0.0/4 |
| BUILTIN-BROADCAST | LOW | Special Address | A single host address ends in .255 |
| BUILTIN-SRC-HOSTBITS | LOW | Input Warning | Source CIDR has host bits set (e.g. 10.1.1.5/24, or 10.0.0.0/0) |
| BUILTIN-DST-HOSTBITS | LOW | Input Warning | Destination CIDR has host bits set |
INFO ranks below LOW: INFO advisories sort last and never raise a risk level.
Tiered severities
Source / destination breadth
The severity follows the breadth level of the address (public ranges are one level higher). A single host (/32) and any never fire the BROAD rule; any fires the ANY rule instead.
| Prefix | Private range | Public range |
|---|---|---|
| /1 - /8 | HIGH | HIGH |
| /9 - /16 | MEDIUM | HIGH |
| /17 - /24 | LOW | MEDIUM |
| /25 - /31 | - | LOW |
Port breadth
| Port specification | Severity |
|---|---|
any or more than 1,000 ports | CRITICAL |
| 101 - 1,000 ports | HIGH |
| 2 - 100 ports | INFO |
| Single port | - |
The port risk level (the port_risk column of the browser's CSV export) is at least as high as the worst known service inside the range (see Port & Service Database), so a range is never rated lower than a single port it contains. ICMP has no ports and never fires PORT-BROAD.
Address classification
A flag applies only when the whole address range lies inside the block. "Public" means the range is not entirely inside non-public space.
| Block | Classification | Public |
|---|---|---|
| 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 | Private (RFC 1918) | No |
| 100.64.0.0/10 | Carrier-grade NAT (RFC 6598), treated as private | No |
| 127.0.0.0/8 | Loopback | No |
| 169.254.0.0/16 | Link-local | No |
| 224.0.0.0/4 | Multicast | No |
| 0.0.0.0/8, 240.0.0.0/4 (incl. 255.255.255.255) | Reserved | No |
| Everything else, including the documentation ranges 192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24 and the benchmark range 198.18.0.0/15 | - | Yes |
Examples:
10.0.0.0/7covers 10.0.0.0 - 11.255.255.255. Part of it (11.0.0.0/8) is public, so it is public and not private and fires SRC/DST-PUBLIC.224.0.0.0/3spans multicast and reserved space. It is not public, but no single special-address rule fires.- Any
x.x.x.x/0(for example10.0.0.0/0) is treated as any. If the address is not0.0.0.0, the HOSTBITS rule also fires and suggests0.0.0.0/0.
Disabling a rule
Disabling a rule hides its advisory and removes its contribution to the per-field risk levels and the overall risk level. These levels are not shown on the on-screen result. The per-field levels appear in the browser's CSV export (src_risk, dst_risk, port_risk); the overall level appears there as overall_risk and in the CLI output as overallRisk:
| Disabled rule | Effect on the risk levels |
|---|---|
| SRC-ANY / DST-ANY | An any side is rated LOW |
| SRC-PUBLIC / DST-PUBLIC | The one-level public bump is undone (never below LOW) |
| SRC-BROAD / DST-BROAD | A subnet side is rated LOW |
| PORT-BROAD | Only the breadth part is removed: a multi-port specification is rated by the worst known service it contains (LOW if none). 23,24 stays CRITICAL because Telnet (23) is CRITICAL |
| PROTO-ANY | The advisory is hidden (the protocol level does not feed the overall risk) |
| Other rules | The advisory is hidden; levels are unchanged |
Disabling built-in rules does not change the numeric risk score, which is computed from the flow itself.