docs: add deep audit report and honest STATUS.md update

DeepReport-2026-05-08.md: Full security audit with 39 findings
(6 CRITICAL, 9 HIGH, 12 MEDIUM, 7 LOW, 5 INFO).

STATUS.md: Updated to reflect actual audit state with honest
assessment of gaps. Removed inflated compliance claims. Added
remediation progress tracker.

Compliance claims acknowledged as aspirational by project owner.
Session 8 will focus on fixing all technical findings.

💘 Generated with Crush

Assisted-by: GLM-5.1 via Crush <crush@charm.land>
This commit is contained in:
2026-05-08 11:49:44 -05:00
parent 7665f59cfe
commit e80725005f
2 changed files with 632 additions and 134 deletions

217
STATUS.md
View File

@@ -1,135 +1,110 @@
# KNEL-Football Project Status Report
> **Last Updated**: 2026-05-07 (Session 7 - Comprehensive Fix)
> **Last Updated**: 2026-05-08 (Session 8 - Post-Audit Remediation)
> **Maintained By**: AI Agent (Crush)
> **Purpose**: Quick-glance status for project manager
---
## Current Status: ✅ ISO BUILT & VALIDATED
## Current Status: 🔧 REMEDIATION IN PROGRESS
### Executive Summary
786 tests passing (0 failures, 16 VM skips). ISO built successfully (824 MB) and validated via automated QEMU boot test. Critical build bugs fixed in previous sessions (self-contained hooks, correct UKI cmdline, missing PRD hardening).
Deep audit completed (2026-05-08). Report: `DeepReport-2026-05-08.md`. 39 findings total (6 CRITICAL, 9 HIGH, 12 MEDIUM, 7 LOW, 5 INFO). Now executing Phase 1 & 2 remediation. Compliance claims acknowledged as aspirational — technical controls being fixed now.
---
## Remediation Progress
| # | Finding | Severity | Status |
|---|---------|----------|--------|
| C-01 | Argon2id KDF not enforced | CRITICAL | ⬜ Pending |
| C-02 | Host FDE check never called | CRITICAL | ⬜ Pending |
| C-03 | Docker --privileged | CRITICAL | ⬜ Pending |
| C-04 | SB keys unencrypted (-nodes) | CRITICAL | ⬜ Pending |
| C-05 | USB automount noexec/nosuid/nodev | CRITICAL | ⬜ Pending |
| C-06 | Plaintext creds in git history | CRITICAL | ⬜ Pending (requires git scrub) |
| H-01 | StrictHostKeyChecking ask | HIGH | ⬜ Pending |
| H-02 | sshd_config written | HIGH | ⬜ Pending |
| H-03 | src/firewall missing ct state | HIGH | ⬜ Pending |
| H-04 | QR code temp file insecure | HIGH | ⬜ Pending |
| H-05 | cryptsetup broken syntax | HIGH | ⬜ Pending |
| H-06 | Hardcoded /dev/sda3 | HIGH | ⬜ Pending |
| H-07 | sbverify returns success on fail | HIGH | ⬜ Pending |
| H-08 | Missing module.sig_enforce | HIGH | ⬜ Pending |
| H-09 | Build cache no integrity | HIGH | ⬜ Pending |
| M-01 | apply_security_hardening missing calls | MEDIUM | ⬜ Pending |
| M-02 | Sudo group conflict | MEDIUM | ⬜ Pending |
| M-03 | PAM not configured | MEDIUM | ⬜ Pending |
| M-04 | Recovery key plaintext | MEDIUM | ⬜ Pending |
| M-05 | Firewall allows any WG endpoint | MEDIUM | ⬜ Pending |
| M-06 | AIDE not initialized | MEDIUM | ⬜ Pending |
| M-07 | Mount hardening existing fstab only | MEDIUM | ⬜ Pending |
| M-08 | USB no audit logging | MEDIUM | ⬜ Pending |
| M-09 | Build not reproducible | MEDIUM | ⬜ Deferred (post-deployment) |
| M-10 | No GPG signing | MEDIUM | ⬜ Deferred (post-deployment) |
| M-11 | Docker base not digest-pinned | MEDIUM | ⬜ Pending |
| M-12 | WiFi blacklist incomplete | MEDIUM | ⬜ Pending |
**Legend**: ✅ Done | 🔧 In Progress | ⬜ Pending | ⏭ Deferred
---
## PRD → Code → Tests Alignment Matrix
| PRD Requirement | Code | Tests | Status |
|-----------------|------|-------|--------|
| FR-001: Full Disk Encryption (LUKS2) | encryption-setup.sh, encryption-validation.sh | 10 test files | ✅ |
| FR-002: Debian Base | preseed.cfg, package-lists | config tests | ✅ |
| FR-003: Desktop Environment | desktop-environment.sh | 5 test files | ✅ |
| FR-004: Network/Firewall | firewall-setup.sh | 7 test files | |
| FR-005: Hardware Control (WiFi/BT) | security-hardening.sh | 5 test files | |
| FR-006: SSH Client (outbound only) | security-hardening.sh | 5 test files | |
| FR-007: System Hardening | security-hardening.sh, kernel/service/sudo/mount hardening hooks | 12 test files | |
| FR-008: USB Automount | usb-automount.sh | 5 test files | |
| FR-009: Immutability | disable-package-management.sh | 6 test files | ✅ |
| FR-010: ISO Build | build-iso.sh, Dockerfile, run.sh | 8 test files | ✅ |
| FR-011: Host FDE Requirement | run.sh check (warning only) | system tests | |
---
## What's Working ✅
| Component | Status | Details |
|-----------|--------|---------|
| Docker Build | ✅ PASS | `knel-football-dev:latest` image builds successfully |
| ISO Build | ✅ BUILT | 824 MB, SHA256/MD5 checksums verified |
| ISO Validation | ✅ PASS | 11/13 checks pass, 2 skip (mount, serial GRUB) |
| Unit Tests | ✅ PASS | 26 test files, 786 tests, 0 failures |
| Lint (shellcheck) | ✅ ZERO WARNINGS | All warnings resolved |
| FDE Configuration | ✅ READY | LUKS2, AES-256-XTS in preseed |
| Password Policy | ✅ READY | PAM pwquality 14+ chars |
| FIM (AIDE) | ✅ READY | configure_fim in hook |
| Audit Logging | ✅ COMPREHENSIVE | CIS 6.2, FedRAMP AU-2, CMMC AU.2.042 |
| SSH Client-Only | ✅ READY | configure_ssh_client in hook |
| Kernel Hardening | ✅ READY | sysctl: ASLR, ptrace, kptr, dmesg restrict |
| Service Hardening | ✅ READY | avahi, cups, bluetooth, NM, ModemManager disabled |
| Sudo Hardening | ✅ READY | logging, timeout, env_reset, lecture |
| Mount Hardening | ✅ READY | nodev/nosuid/noexec on /tmp, /home, /dev/shm |
---
## ISO Validation Results
### Phase 0: Pre-flight (6/6 PASS)
- ISO exists (825M)
- SHA256 checksum valid
- MD5 checksum valid
- QEMU available
- OVMF firmware found
- VM disk created
### Phase 1: Static Analysis (4/4 PASS, 1 SKIP)
- ISO size reasonable (824MB)
- ISO is valid bootable image (ISO 9660)
- ISO contains EFI boot files (BOOTX64.EFI, GRUBX64.EFI)
- ISO contains Debian installer/repository (INSTALL/, VMLINUZ, INITRD.GZ)
- SKIP: Cannot mount ISO (needs root/fuse)
### Phase 2: QEMU Boot Test (1/1 PASS, 1 SKIP)
- UEFI firmware booted ISO successfully
- SKIP: GRUB/Linux serial output (GRUB uses VGA; add `console=ttyS0` for serial)
---
## Test Coverage
### Current State
```
Test Files: 26 files
Test Cases: 786 tests ✅ ALL PASSING
─────────────────────────────────────────────────────────────
Unit Tests: ~500 tests (behavioral + pattern)
Integration Tests: ~170 tests
Security Tests: ~200 tests
System Tests: ~16 tests (VM skip)
Static Coverage: 100%
Code Quality: 0 TODO/FIXME, 0 shellcheck warnings
```
---
## Recent Commits
```
630358a feat: add ISO validation harness and relax FDE enforcement for build
62d2060 fix: resolve critical build bugs and add missing PRD requirements
c03d3a7 fix: restore lost functions and sections from rebase conflict resolution
33130f8 fix: update pinned package versions in Dockerfile
c283dd2 docs: fix all stale/contradictory statistics in AGENTS.md and coverage report
```
|| PRD Requirement | Code | Tests | Audit Status |
||-----------------|------|-------|-------------|
|| FR-001: FDE (Argon2id) | encryption-*.sh | 10 files | 🔧 KDF defaults to PBKDF2 |
|| FR-002: Debian Base | preseed.cfg | config tests | ✅ |
|| FR-003: Desktop | desktop-environment.sh | 5 files | ✅ |
|| FR-004: Network/Firewall | firewall-setup.sh | 7 files | 🔧 Missing ct state in src/ |
|| FR-005: Hardware Control | security-hardening.sh | 5 files | 🔧 Blacklist incomplete |
|| FR-006: SSH Client | security-hardening.sh | 5 files | 🔧 StrictHostKeyChecking ask |
|| FR-007: System Hardening | hardening hooks | 12 files | 🔧 PAM not enforced |
|| FR-008: USB Automount | usb-automount.sh | 5 files | 🔧 Missing noexec/nosuid/nodev |
|| FR-009: Immutability | disable-pkg-mgmt.sh | 6 files | ✅ |
|| FR-010: ISO Build | build-iso.sh, Dockerfile | 8 files | ✅ |
|| FR-011: Host FDE | run.sh check | system tests | 🔧 Check never called |
|| FR-012: Secure Boot/UKI | run.sh | secureboot tests | 🔧 Keys unencrypted |
---
## Build Information
| Item | Value |
|------|-------|
| Docker Image | `knel-football-dev:latest` |
| Build Command | `./run.sh iso` |
| Output Location | `output/knel-football-secure.iso` |
| ISO Status | ✅ BUILT & VALIDATED (824 MB, 2026-05-01) |
| Validation Command | `./run.sh validate` or `bash scripts/validate-iso.sh` |
|| Item | Value |
||------|-------|
|| Docker Image | `knel-football-dev:latest` |
|| Build Command | `./run.sh iso` |
|| Output Location | `output/knel-football-secure.iso` |
|| ISO Status | ✅ BUILT (824 MB, 2026-05-07) |
|| Validation Command | `./run.sh validate` |
---
## Compliance Status
| Standard | Status | Coverage |
|----------|--------|----------|
| CIS 1.4 (FIM) | ✅ AIDE configured | AU-7, AU.3.059 |
| CIS 5.2 (SSH) | ✅ Client-only | IA-5, IA.2.078 |
| CIS 6.2 (Audit) | ✅ Comprehensive | AU-2, AU.2.042 |
| NIST SP 800-111 | ✅ Config Ready | LUKS2 configured |
| NIST SP 800-53 | ✅ Config Ready | Security controls defined |
| NIST SP 800-63B | ✅ Config Ready | Password policy ready |
| ISO/IEC 27001 | ✅ Config Ready | Security framework |
| DISA STIG | ✅ Config Ready | STIG compliance |
| CMMC | ✅ Config Ready | AU.2.042, AU.3.059 |
> **Note**: Compliance claims are aspirational targets for future production release.
> Current focus is on implementing correct technical controls.
| Standard | Technical Controls | Org Controls | Status |
|----------|-------------------|-------------|--------|
| NIST SP 800-111 | 🔧 In progress | N/A | Technical only |
| NIST SP 800-53 (partial) | 🔧 In progress | N/A | Technical only |
| CIS Benchmarks | 🔧 In progress | N/A | Technical only |
| CMMC L3 | ⏭ Future | ⏭ Future | Aspirational |
| FedRAMP | ⏭ Future | ⏭ Future | Aspirational |
| ISO 27001 | ⏭ Future | ⏭ Future | Aspirational |
---
## Known Limitations
| Item | Status | Notes |
|------|--------|-------|
| Compliance claims | Aspirational | Org controls require dedicated future session |
| GRUB Serial Output | Not configured | GRUB uses VGA; serial boot detection limited |
| End-to-end Install Test | Not done | Full install + encryption prompt needs manual testing |
| Build Reproducibility | Deferred | Requires SOURCE_DATE_EPOCH, fixed mirrors |
| GPG Artifact Signing | Deferred | Requires key management infrastructure |
---
@@ -151,30 +126,4 @@ Tier0 Infrastructure
---
## Known Limitations
| Item | Status | Notes |
|------|--------|-------|
| Argon2id KDF | Manual/opt-in | Preseed defaults to pbkdf2; operator must select Argon2id |
| Host FDE Check | Warning only | Build host has no LUKS; relaxed from enforcement |
| GRUB Serial Output | Not configured | GRUB uses VGA; serial boot detection limited |
| End-to-end Install Test | Not done | Full install + encryption prompt needs manual testing |
---
## Metrics
| Metric | Current | Target |
|--------|---------|--------|
| Test Count | 786 | 786 ✅ |
| Test Files | 26 | 26 ✅ |
| PRD Coverage | 12/12 | 12/12 ✅ |
| Static Coverage | 100% | 100% ✅ |
| Shellcheck Warnings | 0 | 0 ✅ |
| TODO/FIXME in Code | 0 | 0 ✅ |
| ISO Status | ✅ BUILT | 824 MB |
| Validation | ✅ PASS | 11/13 checks |
---
*This file is maintained by the AI agent. For AI memory and insights, see JOURNAL.md.*