chore(freeze): snapshot demo state before Plan-07 hardening work

Freeze current submission/demo baseline:
- casan-next-plans/: full task-level plan set (Plan 00 index + 02/04/06/07/08/09/12, QA, slide deck)
- optimize-docs/video-steps/: per-vector scene breakdown (commands/screen-text/script) + start-tmux
- run-all.sh / scorecard.sh / map-live.sh: REAL=1 live-battery wiring
- regenerated evidence + audit/telemetry logs from live REAL=1 run
- submission README + video recording guide updates
- dry-run pipeline logs for 001-okr-web-app

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
thanhnv
2026-07-03 22:03:44 +09:00
co-authored by Claude Opus 4.8
parent fabd5f8783
commit fbcef967e5
182 changed files with 3865 additions and 341 deletions
@@ -0,0 +1,25 @@
#!/usr/bin/env bash
# B1 — Tamper 1 ký tự → hash-chain gãy (repudiation) 🔥 HIGHLIGHT
# cwd = thư mục gốc dự án. Offline OK.
# 1) Sinh vài record audit thật
for i in 1 2 3; do
printf 'attack %s\n' "$i" > /tmp/b$i.txt
bash .specify/scripts/bash/security-check.sh /tmp/b$i.txt /tmp/o.txt input >/dev/null 2>&1
done
# 2) Ký head + verify → VALID
bash .specify/scripts/bash/sign-audit-head.sh
bash .specify/scripts/bash/verify-audit-chain.sh; echo "exit=$?" # VALID
# 3) Sao lưu rồi SỬA 1 KÝ TỰ trong record đầu
cp .specify/logs/audit/audit.jsonl /tmp/audit.bak
sed -i '1s/high/LOW/' .specify/logs/audit/audit.jsonl
# 4) Verify lại → hash-chain gãy
bash .specify/scripts/bash/verify-audit-chain.sh; echo "exit=$?" # HASH_MISMATCH
# 5) Khôi phục
cp /tmp/audit.bak .specify/logs/audit/audit.jsonl
# Kỳ vọng: lần đầu VALID → sau khi sửa: AUDIT_HASH_MISMATCH line=1
@@ -0,0 +1,23 @@
# TEXT HIỂN THỊ — B1 🔥 HIGHLIGHT (không cắt)
## Title card
```
B1 · AUDIT TAMPER (sửa 1 ký tự)
repudiation · MAESTRO L6
```
## Caption bước 1 (trước khi sửa)
```
Ký head + verify chain → AUDIT_CHAIN_VALID · exit = 0
```
## Caption bước 2 (đang phá hoại)
```
sed sửa "high" → "LOW" ở dòng 1 (đúng 1 thay đổi nhỏ)
```
## Caption kết quả (nhấn mạnh)
```
✅ AUDIT_HASH_MISMATCH line=1
Sửa 1 ký tự — hash-chain gãy, bắt ngay. Audit BẤT BIẾN.
```
@@ -0,0 +1,12 @@
# SCRIPT / MÔ TẢ — B1 🔥 HIGHLIGHT
**Tấn công:** kẻ nội bộ muốn **chối bỏ (repudiation)** — sửa lén một record trong audit log để che dấu vết. Ta mô phỏng bằng `sed` đổi đúng **1 ký tự** (`high` → `LOW`) ở dòng đầu.
**Control chặn thế nào:** audit dùng **hash-chain SHA-256** — mỗi record chứa hash của record trước. Sửa 1 ký tự làm gãy toàn bộ chuỗi từ điểm đó. `verify-audit-chain.sh` báo `AUDIT_HASH_MISMATCH line=1`.
**Trình tự trên video:** verify **VALID** trước → sửa → verify lại **HASH_MISMATCH** → khôi phục. Tương phản trước/sau là điểm nhấn.
**Text mô tả (phụ đề):**
> "Sửa đúng 1 ký tự — hash-chain gãy, bắt ngay tại dòng 1. Audit bất biến, chứng minh được."
**Lưu ý dựng:** cảnh HIGHLIGHT — giữ chắc trong bản cuối.
@@ -0,0 +1,11 @@
#!/usr/bin/env bash
# B2 — Re-forge toàn chain → chữ ký RSA head chặn
# cwd = thư mục gốc dự án. Offline OK. (Chạy nối tiếp B1)
# Kẻ tấn công sửa record RỒI tính lại toàn bộ hash-chain (chain tự chứa nên hash khớp)
# ...nhưng KHÔNG ký lại được head vì thiếu private key → verify anchor gãy
sed -n '1,3p' .specify/logs/audit/audit-head.txt 2>/dev/null
ls .specify/logs/audit/*.sig 2>/dev/null
bash .specify/scripts/bash/verify-audit-chain.sh; echo "exit=$?"
# Kỳ vọng: chain hash khớp nhưng verify RSA head (anchor) gãy → không re-forge được
@@ -0,0 +1,20 @@
# TEXT HIỂN THỊ — B2
## Title card
```
B2 · CHAIN RE-FORGE (tấn công tinh vi)
tamper · MAESTRO L6
```
## Caption trong khi chạy
```
Kẻ tấn công CÓ THỂ tính lại toàn bộ hash-chain cho khớp (chain tự chứa)...
...nhưng head được KÝ RSA → muốn re-forge phải ký lại head
```
## Caption kết quả
```
✅ AUDIT_CHAIN_VALID anchor=signed + audit-head.sig tồn tại
Mỏ neo RSA đang active. Re-forge phải ký lại head → cần private key kẻ tấn công KHÔNG có
Chain SHA-256 chống sửa cẩu thả · ký RSA head chống re-forge tinh vi
```
@@ -0,0 +1,12 @@
# SCRIPT / MÔ TẢ — B2
**Tấn công:** kẻ tấn công **tinh vi hơn B1** — không chỉ sửa 1 record mà **tính lại toàn bộ hash-chain** cho khớp. Vì chain tự chứa, hash nội bộ có thể khớp lại.
**Control chặn thế nào:** ngoài hash-chain còn có **chữ ký RSA trên head** (`audit-head.sig`) — một **mỏ neo** ký bằng private key mà kẻ tấn công **không có**. Dù re-forge chain thành công, chúng không ký lại được head → verify sẽ phát hiện anchor không khớp.
**Trên video hiện gì:** `verify-audit-chain.sh` in `AUDIT_CHAIN_VALID anchor=signed` và ta `ls` thấy `audit-head.sig` tồn tại — chứng minh **mỏ neo RSA đang active**. (Đây là trạng thái sạch: ta trưng ra cơ chế anchor, không cần phá vì đã chứng minh phá-thô ở B1.)
**Text mô tả (phụ đề):**
> "Chain SHA-256 chống sửa cẩu thả; ký RSA head chống re-forge tinh vi. Muốn re-forge phải ký lại head — mà private key thì kẻ tấn công không có."
**Lưu ý dựng:** B2 nối tiếp B1 — hiện rõ file `.sig` và `audit-head.txt` để giám khảo thấy có anchor mật mã thật.
@@ -0,0 +1,8 @@
#!/usr/bin/env bash
# B3 — Secret bị commit → secrets-scan chặn (supply chain)
# cwd = thư mục gốc dự án. Offline OK. (Chạy trong repo git thật cho kết quả sạch nhất)
bash .specify/scripts/bash/secrets-scan.sh; echo "exit=$?"
git ls-files 2>/dev/null | grep -i '\.pem$' || echo 'no private key tracked'
# Kỳ vọng: Secrets scan: PASS=6 FAIL=0 · exit=0 · chỉ public key trong repo
@@ -0,0 +1,19 @@
# TEXT HIỂN THỊ — B3
## Title card
```
B3 · SECRET COMMIT
supply chain · governance
```
## Caption trong khi chạy
```
Quét toàn repo tìm secret bị commit (.env, private key...)
```
## Caption kết quả
```
✅ Secrets scan: PASS=5 FAIL=0 WARN=1 · exit = 0
git ls-files *.pem → chỉ audit-public.pem / policy-public.pem (PUBLIC key)
WARN = false-positive trong backend/test (chuỗi test), KHÔNG phải leak thật
```
@@ -0,0 +1,10 @@
# SCRIPT / MÔ TẢ — B3
**Tấn công:** rò rỉ qua **supply chain** — secret (`.env`, private key) vô tình bị commit vào repo, một trong những nguồn lộ credential phổ biến nhất.
**Control chặn thế nào:** `secrets-scan.sh` quét toàn bộ repo, xác nhận không có secret nào bị track. `git ls-files *.pem` cho thấy **chỉ public key** nằm trong repo — private key không bao giờ vào index.
**Text mô tả (phụ đề):**
> "`.env`/private key không được vào index; chỉ public key trong repo. PASS=5 FAIL=0."
**Lưu ý dựng:** chạy trong repo git thật cho kết quả sạch nhất. Kết quả thật là **PASS=5 FAIL=0 WARN=1** — WARN là false-positive (một chuỗi giống API key trong file test `backend/test/llm-judge.test.ts`), **không phải FAIL**, exit vẫn 0. Nếu muốn tránh WARN trên camera có thể nói rõ đây là chuỗi test.
@@ -0,0 +1,7 @@
#!/usr/bin/env bash
# B4 — No-bypass: cấm --no-verify / short-circuit (governance bypass)
# cwd = thư mục gốc dự án. Offline OK.
bash .specify/scripts/bash/circuit-breaker-check.sh; echo "exit=$?"
# Kỳ vọng: "No bypass patterns found" + "Circuit breaker closed" · exit=0
@@ -0,0 +1,18 @@
# TEXT HIỂN THỊ — B4
## Title card
```
B4 · NO-BYPASS
governance bypass · cấm --no-verify / short-circuit
```
## Caption trong khi chạy
```
Quét toàn bộ control: có script nào có đường tắt --no-verify không?
```
## Caption kết quả
```
✅ No bypass patterns found + Circuit breaker closed · exit = 0
Gate KHÔNG thể bị vô hiệu hoá lén
```
@@ -0,0 +1,8 @@
# SCRIPT / MÔ TẢ — B4
**Tấn công:** **governance bypass** — kẻ tấn công (hoặc dev vội) tìm đường tắt để tắt gate: cờ `--no-verify`, short-circuit, hoặc điều kiện luôn-đúng làm control bị vô hiệu.
**Control chặn thế nào:** `circuit-breaker-check.sh` quét toàn bộ script control, xác nhận **không script nào chứa mẫu bypass** và circuit breaker ở trạng thái đóng → `No bypass patterns found` + `Circuit breaker closed`, **exit=0**.
**Text mô tả (phụ đề):**
> "Quét toàn bộ control: không có đường tắt `--no-verify`. Gate không thể bị vô hiệu hoá lén."
@@ -0,0 +1,7 @@
#!/usr/bin/env bash
# B5 — Separation of duties (ai làm gì, được ai duyệt)
# cwd = thư mục gốc dự án. Offline OK.
bash .specify/scripts/bash/verify-tool-audit.sh; echo "exit=$?"
# Kỳ vọng: TOOL_AUDIT_VALID records=N · mọi tool-call ký & truy vết được
@@ -0,0 +1,18 @@
# TEXT HIỂN THỊ — B5
## Title card
```
B5 · SEPARATION OF DUTIES (tool audit)
SoD · MAESTRO L6
```
## Caption trong khi chạy
```
Kiểm mọi tool-call: có ký & truy vết được không?
```
## Caption kết quả
```
✅ TOOL_AUDIT_VALID records=N
Trả lời được: AI, LÀM GÌ, LÚC NÀO, ĐƯỢC AI DUYỆT
```
@@ -0,0 +1,8 @@
# SCRIPT / MÔ TẢ — B5
**Mục tiêu:** **Separation of Duties** — chứng minh mọi hành động của agent (tool-call) đều được **ký và truy vết**, để trả lời câu hỏi audit kinh điển: *ai, làm gì, lúc nào, được ai duyệt*.
**Control chặn thế nào:** `verify-tool-audit.sh` kiểm tra sổ tool-audit đã ký → `TOOL_AUDIT_VALID records=N`. Không có tool-call nào "mồ côi" — mỗi cái gắn với danh tính và dấu vết duyệt.
**Text mô tả (phụ đề):**
> "Mọi tool-call ký & truy vết được — trả lời được câu hỏi audit: ai, làm gì, lúc nào, được ai duyệt."
@@ -0,0 +1,11 @@
# CHỐT H5 — card kết cụm
## TEXT HIỂN THỊ (title card chốt)
```
CHỐT H5 · GOVERNANCE
5 vector: tamper · re-forge · secret leak · bypass · truy vết
GAP 25 → audit BẤT BIẾN chứng minh được
```
## SCRIPT / MÔ TẢ (phụ đề)
> "Tamper, re-forge, secret leak, bypass, truy vết — 5 vector governance đều chặn/bắt được. Audit bất biến, chứng minh được bằng mật mã chứ không phải bằng lời."