Repository navigation
feat(range): RangeSubnetLeaked, and §8 ran on gandalf before any target (#421) - #1342
Merged
Merged
Conversation
…et (#421) ADR-0014's optional Loki rule: any filterlog line whose source is in 172.30.30.0/24, block or pass, fires critical at once. Tests cover a block, a pass, and a range address as destination that must not fire. Runbook section, the observability note, and counts (21 Loki, 180 in all) updated. build-the-playground.md §8 ran on gandalf ahead of §6, because §9 must run before any vulnerable image exists. Check four failed first on a throwaway tpl-kali clone: the template's build-time interfaces.d/eth0 DHCP stanza let dhcpcd add a link-local default route. With the stanza removed, it passed. The roadmap now says §9 is next. Refs #421. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
🟡 Changes recommended
The runbook directs verification of RangeSubnetLeaked to the urgent channel instead of its actual security receiver, so the check would miss a correctly delivered notification.
1 open issue
What changed in this PR
Adds Loki detection for traffic escaping the range subnet and documents isolation checks on gandalf, supporting the leak proof required before vulnerable targets are installed.
Changes:
- Adds the critical
RangeSubnetLeakedalert with positive and negative test cases. - Documents incident response, isolation-check results, and the corrected build order.
- Updates alert totals to 180: 159 Prometheus and 21 Loki rules.
| File | Description |
|---|---|
stacks/observability/README.md |
Updates the Loki rule count. |
stacks/observability/loki/tests/security.test.yaml |
Tests leaked sources and nonmatching traffic. |
stacks/observability/loki/rules/security.rules.yaml |
Adds the range-subnet leak alert. |
README.md |
Updates overall and Loki alert counts. |
docs/security.md |
Updates the total alert count. |
docs/runbooks/respond-to-a-security-alert.md |
Adds range-leak containment and diagnosis guidance. |
docs/runbooks/build-the-playground.md |
Records isolation checks and adds alert verification. |
docs/roadmap.md |
Places leak verification before target installation. |
docs/observability.md |
Explains the new detection and updates counts. |
docs/changelog.md |
Records the rule addition and isolation-check results. |
Review effort: Balanced
# Conflicts: # docs/changelog.md
# Conflicts: # docs/changelog.md
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.

What changed
Adds
RangeSubnetLeaked, ADR-0014's optional Loki rule. It fires critical onany
filterlogline, block or pass, whose source is in172.30.30.0/24. Alsorecords
build-the-playground.md§8 as run ongandalf, before any target.Why
Step 3 of #421 is the rule, "once the subnet is real". It is real now:
ragnaroksits on172.30.30.10. §9's leak proof has to run before anyvulnerable image exists on the machine, so §8 and §9 come before §6. The
roadmap's "§6, then §7–§9" is corrected. Landing the rule first lets §9 prove
the alert as well as the query.
§8 check four failed first, on a throwaway static clone of
tpl-kalionvmbr1. The template's build-timeinterfaces.d/eth0DHCP stanza let dhcpcdfall back to link-local and add
default dev eth0 scope link. With the stanzaremoved, the check passed. The fix to the template is separate work.
Refs #421.
Blast radius
One new Loki rule on
prometheus, plus docs. It routes like the othercritical security alerts. While the range holds, nothing on the estate sends
from
172.30.30.0/24, so it should be silent until §9 causes a leak onpurpose.
secrets/*.sops.yamlVerification
make validateongandalfpassed with 43 skips, because there is noDocker there. These skips matter for this change:
cases;
CI runs all of them.
check_docs.pypasses: 159 Prometheus + 21 Lokirules.
§8 ran live on
gandalf2026-11-09:vmbr1holds onlytap130i1and has 0 addresses.leaktestat172.30.30.199, after the stanzafix, it showed no default route and both pings gave
Network is unreachable.make validatepasses (with the skips above)Deployed to the lab and confirmed working. Comes after merge, then §9.
Docs updated
🤖 Generated with Claude Code