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:
co-authored by
Claude Opus 4.8
parent
fabd5f8783
commit
fbcef967e5
@@ -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."
|
||||
Reference in New Issue
Block a user