Skip to content

fix(security): fail closed on campaign metadata - #580

Merged
pdfinn merged 1 commit into
masterfrom
fix/infr-440-442
Aug 31, 2026
Merged

pdfinn merged 1 commit into
masterfrom
fix/infr-440-442

Conversation

@pdfinn

@pdfinn pdfinn commented Aug 31, 2026 •

Copy link
Copy Markdown
Member

Summary

  • make nsaudit reject missing or malformed NODEVS metadata and wallet budgets fail closed
  • replace substring-based recursive-rm approval detection with token-aware parsing
  • make unattended campaigns deny gated calls immediately with an audited headless-denied result
  • require exactly three red-team children and driver-owned followthrough

Security rationale

The R3 campaign showed that arbitrary non-empty metadata could suppress high-severity findings. It also showed that malformed9p plus 9p-delegation-race accidentally matched the old rm/-r substring gate and blocked an unattended child indefinitely.

Headless mode remains deny-only: it cannot preauthorize an operation or widen a namespace.

Tests

  • lucibridge_approval_test.dis: 25 passed
  • tests/host/nsaudit_metadata_test.sh: 16 passed
  • tests/host/nsaudit_rules_test.sh: 22 passed
  • tests/host/nsaudit_profiles_test.sh: passed
  • tests/host/nsaudit_path_semantics_test.sh: passed
  • tests/host/grind_escape_test.sh: passed
  • git diff --check

Fixes INFR-440
Fixes INFR-441
Fixes INFR-442

Validate NODEVS and wallet budget declarations semantically, and report their validity in nsaudit machine output. Prevent unattended red-team campaigns from blocking on approval dialogues while preserving deny-only behavior and audited decisions.

Fixes INFR-440

Fixes INFR-441

Fixes INFR-442
@pdfinn
pdfinn requested a review from Ticed August 31, 2026 22:04
@pdfinn

pdfinn commented Aug 31, 2026

Copy link
Copy Markdown
Member Author

Merge status: focused host tests, dis-build, style, ring-fence, source hardening, CodeQL, cppcheck, Flawfinder, and SBOM checks pass. The ClusterFuzzLite failure is the pre-existing libinterp/load.c link failure (undefined reference to freejitcode) in code untouched by this PR. Platform jobs remain in progress. Requesting review before the next live campaign; no candidate campaign will run until this is merged.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant