remoteAdmin's policy is not pinned against composition; a blank host fails open in the provisioning guard #70
Labels
No labels
blocked
bug
decision
duplicate
enhancement
help wanted
invalid
landed?
question
ready-to-merge
stale
wontfix
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
allod/nexus#70
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Four findings from a cold review of the landed range
ba8f044..master, after allod/nexus#68 and the provisioning guard merged. Evidence, verified against the source.remoteAdmin's named-interface rule can be undone by ordinary composition.nix/remote-admin.nix:45setsopenFirewall = falseand:56adds per-interface rules, but nothing refuses the same port in the global lists. Trigger: any composed module declaresnetworking.firewall.allowedTCPPorts = [ 22 ]; list merging succeeds and sshd is reachable on every interface. The module's check composes an uncontested fixture only.remoteAdmin's keys-only policy can be overridden.nix/remote-admin.nix:49setsPasswordAuthentication = falseand the others as ordinary definitions. Trigger: a composed module setsservices.openssh.settings.PasswordAuthentication = lib.mkForce true; evaluation succeeds. Principle 4: a boundary that depends on cooperation is not a boundary.A declared-but-empty host fails open in the provisioning guard.
scripts/lib/rotation-common.sh:143-146maps"host": ""to nothing and:19accepts every blank value, so{ "host": "" }invm-specs.jsonorvmFactsis treated as undeclared and provisioning proceeds. Inventory validation refuses that value at evaluation, so this is the backstop failing open, not the boundary.A bootstrap negative test can pass for the wrong failure.
tests/bootstrap-orchestration.sh:17runs test functions insideif, which suspendsset -einside them, so the assertions at:335-339can fail without failing the test; only the final absence check decides. Trigger:bootstrap-vmexits early on an unrelated error and writes noknown_hosts_vms.Noted, not a defect:
nix/configuration.nix:68rendersALLOD_HYPERVISORunconditionally, which is why every hypervisor's derivation changed with this range. The guard already falls back tohostname, so the variable may be redundant.Refs allod/archetypes#89, allod/nexus#68
All four findings are fixed on master. The remote-administration policy is asserted on the composed values for settings, extraConfig, listenAddresses, ports and the firewall switch, each with a contested fixture; an empty declared host refuses on both data surfaces; the bootstrap harness makes its assertions load-bearing, which also exposed and repaired five tests that proved nothing.