hub v0.135.0: CSRF on the Basic-auth path (R-135), console passwords sealed at rest (R-133), boxes left behind listed and alarmed (R-604, R-530), no-e-mail banner (R-508)
gates / gates (push) Successful in 29s
gates / gates (push) Successful in 29s
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
== RED-PROOF R-135: validateCSRF returns true when there is no cookie (pre-v0.135.0)
|
||||
--- FAIL: TestR135_BasicAuthWithoutHeaderIsRefused (3.41s)
|
||||
r135_csrf_test.go:92: POST /configuration with Basic auth and no X-Felhom-Operator header: 303, want 403
|
||||
r135_csrf_test.go:92: POST /apps/demo/reset-telemetry with Basic auth and no X-Felhom-Operator header: 303, want 403
|
||||
r135_csrf_test.go:92: POST /apps/demo/dismiss-issues with Basic auth and no X-Felhom-Operator header: 400, want 403
|
||||
r135_csrf_test.go:92: POST /offsite/endpoints with Basic auth and no X-Felhom-Operator header: 400, want 403
|
||||
r135_csrf_test.go:92: POST /offsite/endpoints/1/delete with Basic auth and no X-Felhom-Operator header: 404, want 403
|
||||
r135_csrf_test.go:92: POST /appliances/1/bind with Basic auth and no X-Felhom-Operator header: 400, want 403
|
||||
r135_csrf_test.go:92: POST /appliances/1/discard with Basic auth and no X-Felhom-Operator header: 409, want 403
|
||||
r135_csrf_test.go:92: POST /hosts/h1/delete with Basic auth and no X-Felhom-Operator header: 404, want 403
|
||||
r135_csrf_test.go:92: POST /hosts/h1/reveal-recovery-credential with Basic auth and no X-Felhom-Operator header: 404, want 403
|
||||
r135_csrf_test.go:92: POST /hosts/h1/request-logs with Basic auth and no X-Felhom-Operator header: 404, want 403
|
||||
r135_csrf_test.go:92: POST /customers/c1/block with Basic auth and no X-Felhom-Operator header: 404, want 403
|
||||
rc=1
|
||||
|
||||
== restored
|
||||
ok gitea.dooplex.hu/admin/felhom-hub/internal/web (cached)
|
||||
convicted routes: 39
|
||||
@@ -0,0 +1,29 @@
|
||||
== RED-PROOF 1 (R-133): SaveHostRecoveryCredential stores the plaintext (pre-v0.135.0)
|
||||
FAIL gitea.dooplex.hu/admin/felhom-hub/internal/store [build failed]
|
||||
FAIL
|
||||
|
||||
== RED-PROOF 2 (R-133 wiring): main.go does not call SealLegacyRecoverySecrets
|
||||
=== RUN TestR133_MainSealsLegacyRecoverySecrets
|
||||
r133_wiring_test.go:28: cmd/hub/main.go never calls SealLegacyRecoverySecrets — legacy console passwords stay in plaintext
|
||||
--- FAIL: TestR133_MainSealsLegacyRecoverySecrets (0.00s)
|
||||
FAIL
|
||||
FAIL gitea.dooplex.hu/admin/felhom-hub/cmd/hub 0.028s
|
||||
FAIL
|
||||
|
||||
== restored
|
||||
ok gitea.dooplex.hu/admin/felhom-hub/internal/store 0.139s
|
||||
ok gitea.dooplex.hu/admin/felhom-hub/cmd/hub 0.022s
|
||||
|
||||
== RED-PROOF 1 (re-run, compiling): SaveHostRecoveryCredential stores the plaintext (pre-v0.135.0)
|
||||
=== RUN TestR133_RawRowHoldsNoPassword
|
||||
r133_recovery_seal_test.go:29: raw host_recovery.secret is not sealed: "Console-Pw-7741"
|
||||
--- FAIL: TestR133_RawRowHoldsNoPassword (0.04s)
|
||||
FAIL
|
||||
FAIL gitea.dooplex.hu/admin/felhom-hub/internal/store 0.043s
|
||||
FAIL
|
||||
== restored
|
||||
--- PASS: TestR133_RawRowHoldsNoPassword (0.03s)
|
||||
--- PASS: TestR133_SealLegacyRecoverySecrets (0.03s)
|
||||
--- PASS: TestR133_WrongKeyFailsClosed (0.03s)
|
||||
--- PASS: TestR133_NoKeyRefusesToSave (0.03s)
|
||||
ok gitea.dooplex.hu/admin/felhom-hub/internal/store (cached)
|
||||
@@ -0,0 +1,31 @@
|
||||
== RED-PROOF 1 (R-530): alarm block 6 skipped (break out before any host)
|
||||
=== RUN TestAgentAlarm_AfterSevenDaysBehind
|
||||
r530_agent_alarm_test.go:43: the clock must start for the behind box only
|
||||
--- FAIL: TestAgentAlarm_AfterSevenDaysBehind (0.04s)
|
||||
=== RUN TestAgentAlarm_UnknownAndNothingVouchedSayNothing
|
||||
r530_agent_alarm_test.go:76: control: a box on 0.130.0 must start the clock
|
||||
--- FAIL: TestAgentAlarm_UnknownAndNothingVouchedSayNothing (0.04s)
|
||||
FAIL
|
||||
FAIL gitea.dooplex.hu/admin/felhom-hub/internal/osupdates 0.082s
|
||||
FAIL
|
||||
|
||||
== RED-PROOF 2 (R-604): handleSetGlobalFloor does not call reportFloorHeldBack
|
||||
=== RUN TestR604_GlobalRaiseNamesHeldBackBoxes
|
||||
r604_floor_held_back_test.go:64: no log line for the held-back box:
|
||||
--- FAIL: TestR604_GlobalRaiseNamesHeldBackBoxes (0.05s)
|
||||
FAIL
|
||||
FAIL gitea.dooplex.hu/admin/felhom-hub/internal/web 0.067s
|
||||
FAIL
|
||||
|
||||
== RED-PROOF 3 (R-604 wiring): main.go does not call SetEventEmitter
|
||||
=== RUN TestR604_MainWiresTheWebEventEmitter
|
||||
r133_wiring_test.go:49: cmd/hub/main.go never calls webServer.SetEventEmitter — the R-604 mail is never sent
|
||||
--- FAIL: TestR604_MainWiresTheWebEventEmitter (0.00s)
|
||||
FAIL
|
||||
FAIL gitea.dooplex.hu/admin/felhom-hub/cmd/hub 0.025s
|
||||
FAIL
|
||||
|
||||
== restored
|
||||
ok gitea.dooplex.hu/admin/felhom-hub/internal/osupdates 0.132s
|
||||
ok gitea.dooplex.hu/admin/felhom-hub/internal/web 0.301s
|
||||
ok gitea.dooplex.hu/admin/felhom-hub/cmd/hub 0.029s
|
||||
@@ -0,0 +1,21 @@
|
||||
R-509 — "one real mail from either trigger" (the closing condition). Read-only check 2026-10-05.
|
||||
|
||||
Source 1: the hub's own log/timeline lines, copied in earlier sessions' evidence (no secrets):
|
||||
evidence-drill-0243-2026-09-16/phase3-hostdelete.txt:44 2026/09/16 14:22:59 [INFO] self-bind link auto-minted for tester-1 on host delete
|
||||
evidence-drill-0243-2026-09-16/phase3-hostdelete.txt:46 Sep 16 12:22 | selfbind_link_sent | Self-bind link e-mailed (host delete)
|
||||
evidence-backup-promise-2026-09-16/phaseE-teardown.txt:46 2026/09/16 20:17:46 [INFO] self-bind link auto-minted for tester-1 on host delete
|
||||
evidence-drill-new-household-2026-09-30/teardown/layer3-hub.txt:43 2026/09/30 09:23:03 [INFO] self-bind link auto-minted for tester-1 on host delete
|
||||
(hub log times are Europe/Budapest, CEST = UTC+2)
|
||||
|
||||
Source 2: the tester1@felhom.eu mailbox (Gmail connector, metadata only — no bodies, no snippets read):
|
||||
query: to:tester1@felhom.eu after:2026/09/15 subject:dobozodat (subject „[Felhom] Kösd össze a Felhom dobozodat")
|
||||
2026-09-16T12:23:00Z msg 1a0aa2ba7154efec <- 12:22:59 UTC host delete (match, 1 s)
|
||||
2026-09-16T18:17:46Z msg 1a0ab70803fe7275 <- 18:17:46 UTC host delete (match, 0 s)
|
||||
2026-09-30T07:23:04Z msg 1a0f13216bc8fe32 <- 07:23:03 UTC host delete (match, 1 s)
|
||||
also: 2026-09-16T09:59:56Z, 2026-09-17T07:25:15Z, 2026-09-29T18:54:52Z (not matched to a log line here),
|
||||
2026-10-04T19:26:08Z = the operator button (night-2026-10-04/tester1/t0-operator-selfbind.txt 19:26:07Z)
|
||||
|
||||
Verdict: the automatic "host delete" trigger (hub v0.114.0) has delivered real mails three times, each within 1 s
|
||||
of the hub's own send line. The 2026-10-04 Tester 1 install used the button; its link was used (t4-bind-result.txt).
|
||||
The "e-mail set on a waiting customer" trigger has no matched live mail here; it shares the send core
|
||||
(mintAndSendSelfBindLink) with the proven trigger and is unit-proven (TestSelfBind_EmailSetOnWaitingCustomerSendsLink).
|
||||
@@ -0,0 +1,9 @@
|
||||
== RED-PROOF R-508: WaitingNoEmail forced false
|
||||
=== RUN TestR508_NoEmailBannerBranches
|
||||
r508_no_email_banner_test.go:25: no banner for a waiting customer with no e-mail
|
||||
--- FAIL: TestR508_NoEmailBannerBranches (0.05s)
|
||||
FAIL
|
||||
FAIL gitea.dooplex.hu/admin/felhom-hub/internal/web 0.068s
|
||||
FAIL
|
||||
== restored
|
||||
ok gitea.dooplex.hu/admin/felhom-hub/internal/web 0.063s
|
||||
Reference in New Issue
Block a user