Fix FSS audit rules for aarch64 and add root-cause diagnostic tooling#1819
Open
juliuskoskela wants to merge 3 commits intotiiuae:mainfrom
Open
Fix FSS audit rules for aarch64 and add root-cause diagnostic tooling#1819juliuskoskela wants to merge 3 commits intotiiuae:mainfrom
juliuskoskela wants to merge 3 commits intotiiuae:mainfrom
Conversation
kajusnau
reviewed
Mar 17, 2026
Collaborator
|
git history could use a cleanup before this PR is actually ready for merge 🙂 🫡 |
Signed-off-by: Julius Koskela <julius.koskela@unikie.com>
Contributor
There was a problem hiding this comment.
Pull request overview
This PR refactors Forward Secure Sealing (FSS) journal verification to use a shared journalctl --verify output classifier, updates the verification service and test tooling to follow that policy, and refreshes FSS documentation to reflect the updated semantics.
Changes:
- Add a shared Bash library (
fss-verify-classifier.sh) for classifyingjournalctl --verifyfailures (active system vs archived/user/temp vs key/filesystem issues). - Update the FSS verify service and
fss-testscript to use the classifier and emit consistent tags/messages. - Expand the NixOS VM tests to validate classifier behavior across multiple synthetic failure branches; adjust docs formatting/wording.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
tests/logging/test_scripts/fss_verification.nix |
Switches verification checks to use the classifier and adds branch coverage for classification policy. |
tests/logging/test_scripts/fss-test.nix |
Embeds the shared classifier library and uses it to drive pass/warn/fail reporting for on-target validation. |
tests/logging/default.nix |
Installs the classifier into the VM test environment under /etc/ for sourcing. |
modules/common/logging/fss.nix |
Refactors the journal-fss-verify service logic to use classifier-based severity/tags and stricter key handling. |
modules/common/logging/fss-verify-classifier.sh |
Introduces the shared classifier/log helpers for journalctl --verify output. |
docs/src/content/docs/ghaf/scs/fss.mdx |
Updates tables/wording to better describe integrity/corruption semantics and warning vs critical cases. |
Signed-off-by: Julius Koskela <julius.koskela@unikie.com>
Signed-off-by: Julius Koskela <julius.koskela@unikie.com> Signed-off-by: Julius Koskela (Digimuoto Oy) <julius.koskela@digimuoto.com>
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.
Description of Changes
Fix aarch64 audit rule failures caused by references to x86-only syscalls, and add structured FSS diagnostic tooling to replace ad-hoc binary pass/fail verification with a shared failure classifier and repeatable root-cause capture workflows.
Audit rules (aarch64 fix):
chown,chmod,delete,accessfamilies) so rules are valid on both x86_64 and aarch64open/creat-based OSPP rules behind!isAarch64conditionalsShared classifier library:
fss-verify-classifier.sh— single source of truth for failure classification policy (active system journals = critical, archived/user = warning, temp = ignore, key errors = critical)fss-runtime-layout.sh— standardized FSS state discovery (machine-id, journal dir, sealing/verification keys)builtins.readFileby the verify service,fss-test,fss-debug, andfss-rootcauseNew diagnostic tools:
fss-debug— collects a timestamped evidence packet (identity, layout, journal inventory, mounts, service state, full verify output, classified summary)fss-rootcause— wrapsfss-debuginto labeled checkpoint sessions with host-side VM lifecycle capture and cross-checkpoint diffing for isolating idle-vs-suspend corruptionInvestigation artifacts:
gui-vm-rootcause-runbook.mdandpost-rebuild-runbook.mdfor the activefss-bad-message-2026-02-25incidentpost-rebuild-collect.shautomation scriptTests & docs:
fss-debugend-to-end testType of Change
Related Issues / Tickets
Investigation:
fss-bad-message-2026-02-25— intermittent FSS verification failures on aarch64 targets and gui-vm journal corruption.Checklist
make-checksand it passesTesting Instructions
Applicable Targets
aarch64aarch64x86_64x86_64x86_64Installation Method
nixos-rebuild ... switchTest Steps To Verify:
journalctl -u auditdfss-teston both x86_64 and aarch64 — verify classified output shows severity tags and no false-positive critical failures from archived/user/temp journalsfss-debug— verify evidence packet is created under/var/tmp/fss-debug-*/withsummary/summary.mdcontaining correct classificationfss-rootcausecheckpoint workflow:/var/tmp/test/compare/baseline-vs-after-idle/summary.mdnix build .#checks.x86_64-linux.fss-verification(or equivalent) — confirm all classifier branches pass