fix(dispatch): supervisorgroep mag attempt-root doorlopen (M41 T-1948) #96
No reviewers
Labels
No labels
severity/s3
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
janpeter/scrum4me-docker!96
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/m41-broker-attempt-root-group"
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?
Waarom
M41 increment 3 (pilot op scrum4me-server) mat een Linux-gat: de broker hield zijn root (
DISPATCH_ATTEMPT_OUTPUT_DIR) en elke pogingsmap oproot 0700. De supervisor (uid/gid 10001) kreegEACCESop/run/attemptsen konresult.json, transcript enworkvan geen enkele poging lezen. Daardoor kon geen enkele review slagen. Dit was de open gate "attempt-root read-only mounten is op Linux ongetest". Een operator-ACL helpt niet, want die verandert de groepsbits en dan weigert de startcheck van de broker.Wat
BrokerConfig.attemptGroup(optioneel, geheel getal ≥ 1). Is hij gezet, dan maakt de broker de root en elke pogingsmaproot:<attemptGroup> 0710. De groep mag daarmee alleen doorlopen op een exact attempt-id en nooit de map opsommen. Is hij niet gezet, dan blijft alles0700.socketGroupdoor alsattemptGroup. Dat is al de expliciet benoemde supervisorgroep, dus er komt geen nieuw autorisatievlak bij.assertBrokerRootMode: toegestaan zijn0700, of0710met precies gid =socketGroup. Elke andere groeps- of other-bit, en0710met een andere groep, geeftDISPATCH_BROKER_JOURNAL_ACCESS_REFUSED.Bewust ongewijzigd:
sources/blijft0755en de sleutelkopie0644. De supervisor heeft dezelfde uid als het kind, dus de groepsbit opent niets nieuws.Bewijs
__tests__/broker-attempt-root-group.test.tsen drie gevallen indispatch-broker.test.ts) falen tegen de oude code met 4 failures. Met de fix zijn ze groen.npm testgeeft 1035 passed. De 2 bekende macOS-failures intranscript-retention.test.ts(GNUchmod --reference) staan los van deze wijziging.tsc --noEmit -p tsconfig.dispatch.jsonis groen.da56399, intake uit):root:0 700naarroot:10001 710.stat /run/attempts/<id>/output/result.jsonnuENOENTin plaats vanEACCES, enreaddir /run/attemptsblijftEACCES.Niet bewezen: een volledige poging met echte uitvoer. Dat volgt in M41 increment 4, zodra
DISPATCH_ENABLED=1aan staat.Story ST-1616, taak T-1948 (Scrum4Me).
🤖 Generated with Claude Code
REQUEST_CHANGES
assertBrokerRootModemaskeert alleen0o077. Daardoor wordt een root met bijvoorbeeld mode0600geaccepteerd, terwijl het gedocumenteerde en beoogde contract uitsluitend0700of0710(met exactsocketGroup) toestaat. Valideer de volledige permissiemodus (mode & 0o777) en voeg regressietests toe voor ongeldige owner-bits zoals0600.Geen gekoppeld plan gevonden — beoordeeld op codekwaliteit + product-standaarden.
BLOCKER verwerkt in
dc5b87f:assertBrokerRootModevergelijkt nu de volledige modus (mode & 0o7777): alleen exact0700, of0710met gid =socketGroup. Regressietests rood-eerst toegevoegd voor0600,0500,0610,0o1700,0o2710en0o4700(vóór de fix faalde0600). Volledige suite 1035 passed (2 bekende macOS-failures in transcript-retention); tsc groen. Op scrum4me-server herstart de pilot-broker opdc5b87fcorrect met rootroot:10001 710.APPROVED
Findings
Geen gekoppeld plan gevonden — beoordeeld op codekwaliteit + product-standaarden.