You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit fe5b2aa
Browse filesBrowse the repository at this point in the historyBrowse files
PIM / MSDP Watch — new passive multicast-routing-control-plane scanner. Covers PIM-SM/
DM/BiDir/SSM, RP discovery (BSR / Cisco Auto-RP / Embedded-RP / Anycast-RP) and MSDP
(RFC 3618). IP proto 103, multicast in the clear. Flags attack (forged-Hello DR hijack,
rogue Candidate-RP/BSR, Register & MSDP-SA injection, Assert contention, floods) and
posture/structural (IPsec-AH protection loss, SSM violations, Embedded-RP/Auto-RP
anomalies, bad-checksum/malformed). 88 codes (37 posture + 51 attack), NO CVEs. RPF is
a router-internal RIB decision, covered by 3 observable heuristics (PMW-060/081/068),
never guessed. Engine vendored verbatim at python/pimwatch.py (+ fixtures + selftest);
do_pim_watch adapter via a python/-on-sys.path guard using the engine's in-capture
learn-then-arm (no persisted baseline). Verdict attack->attack, notice+/warn/critical
posture->anomaly, info-only->clean. Dual-stack: PIM v4+v6 (EH chains walked), Auto-RP +
MSDP IPv4-only (v6 equivalents are Embedded-RP + Anycast-RP on the PIM side). Route
/api/net/pim-watch; UI card in L3 (count 14->15); new 'pim' selftest suite (8 scenarios
incl. the vendored engine's 179-check suite + Scapy pcap e2e). Live-validated in a
sealed netns (bad-checksum PIM replay -> PMW-003 off the real tcpdump path).
IGMP Watch v5 — the standalone igmpwatch/ package (python3 -m igmpwatch; sibling to the
in-app do_igmp_watch) updated to v5: restructured pipeline (new main.py/models.py/
alerting.py, alert.py removed), expanded detector matrix, same 3 IGMP/MLD CVEs the
in-app watcher already detects (CVE-2019-5608/2025-50681/2026-53275). NO CVE-index
change — gen_cve_list gains an igmpwatch/ -> 'IGMP / MLD Watch' owner (+ selftest.py) so
the package's CVE strings dedupe to the existing owner. selftest 123/123 (harness
scapy-compat fix: v3 builders now carry the IGMPv3() base layer that supplies the type
byte on current scapy, where a bare IGMPv3mr(...) serialized type 0x00). docs/igmpwatch.md
refreshed.
OSI visibility matrix refreshed — web/images/osi/matrix_full.jpg replaced with the
current module set (RADIUS at L7, RIP + PIM/MSDP at L3); the 7 per-layer band crops
regenerated from it; matrix cache-bust bumped across all 16 references. JS cache-bust
bumped. Aggregate do_routing_selftest 58 suites, all green.
- **New passive watcher: PIM / MSDP** — the multicast routing control plane. Covers PIM-SM (RFC 7761), PIM-DM (RFC 3973), BiDir (RFC 5015), SSM (RFC 4607), RP discovery via BSR (RFC 5059) / Cisco Auto-RP (UDP/496) / Embedded-RP (RFC 3956) / Anycast-RP (RFC 4610), and inter-domain MSDP (RFC 3618, TCP/639). Rides IP proto 103, multicast in the clear (`224.0.0.13` / `ff02::d`) with no auth beyond optional IPsec AH. Flags **attack** (forged Hello DR-hijack, rogue Candidate-RP/BSR, PIM Register & MSDP SA injection, Assert contention, Join/Prune/SA floods) and **posture/structural** (IPsec-AH protection loss, SSM-range violations, Embedded-RP/Auto-RP anomalies, bad-checksum/truncated/malformed messages). **88 codes** (37 posture + 51 attack), **no CVEs** (protocol-abuse engine, not a version scanner). RPF (a router-internal RIB decision) is covered by three observable heuristics (`PMW-060`/`PMW-081`/`PMW-068`), never guessed at. Engine vendored verbatim at `python/pimwatch.py` (self-contained stdlib; scapy only on its own live path) + `python/pimwatch_fixtures.py` / `python/pimwatch_selftest.py`; new `do_pim_watch` adapter in `network_diagnostics.py` via a `python/`-on-`sys.path` guard, using the engine's in-capture learn-then-arm (no persisted baseline). Verdicts map attack→`attack`, warn/critical posture→`anomaly` (existing tokens). **Dual-stack by protocol pairing:** PIM is v4+v6 (extension-header chains walked); Auto-RP + MSDP are IPv4-only (their v6 equivalents are Embedded-RP and Anycast-RP, on the PIM side). Route `GET /api/net/pim-watch`; UI card in the L3 tab (count 14→15); new `pim` self-test suite (8 scenarios incl. the vendored engine's own 179-check suite + a Scapy pcap e2e leg). Live-validated in a sealed netns (bad-checksum PIM replay → `PMW-003` off the real tcpdump path).
11
+
-**IGMP Watch v5** — the standalone `igmpwatch/` package (invoked `python3 -m igmpwatch`; sibling to the in-app `do_igmp_watch`) updated to v5: restructured pipeline (new `main.py` / `models.py` / `alerting.py`, `alert.py` removed), expanded flood/anomaly/recon/policy/posture detector matrix, and the same three IGMP/MLD CVEs the in-app watcher already detects (`CVE-2019-5608` / `CVE-2025-50681` / `CVE-2026-53275` → `IGMPW-003/001/002`). **No CVE-index change** — `gen_cve_list` gains an `igmpwatch/` → *IGMP / MLD Watch* owner so the package's CVE strings dedupe to the existing owner rather than double-count. Self-test **123/123** (a scapy-version compatibility fix in the harness: v3 report/query builders now carry the `IGMPv3()` base layer that supplies the type byte on current scapy, where a bare `IGMPv3mr(...)` serialized type `0x00`). Docs refreshed at [docs/igmpwatch.md](igmpwatch.md).
12
+
-**OSI visibility matrix refreshed** — `web/images/osi/matrix_full.jpg` replaced with the current module set (now including RADIUS at L7 and RIP + PIM/MSDP at L3), and the seven per-layer band crops (`matrix_l1…l7.jpg`) regenerated from it; matrix cache-bust bumped across all 16 references.
13
+
- Aggregate `do_routing_selftest`**58 suites**, all green.
0 commit comments