Two companion docs tracing the .specify/scripts evolution from the 5-file spec-kit scaffold shown in the file tree: - CASAN_ARCHITECTURE_BEFORE.md — state brought to the competition (freezefbcef96): base 5 → 37 scripts implementing all 7 harnesses, each file's purpose grouped by H1–H7, + the 8 competition test suites. Honest maturity: demo/PoC (~3.0/5). - CASAN_ARCHITECTURE_AFTER.md — the feat/plan07-track-a-hardening upgrades: 37 → 60 scripts (+23) grouped by Track A / Track C-MVP / Evidence Pack / H5+ / H6+, each new file's purpose + the gap it closes, notes on in-place modifications (strict fail-closed, cost caps, KMS rotate, window breaker), + the 6 new test suites (+96 checks). Honest maturity: Level 4 proven by attack (~4.0/5), not full production. File counts verified against git (ls-treefbcef96vs HEAD). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
7.9 KiB
CASAN — Kiến trúc BEFORE → AFTER (Mốc 2: sau khi thi)
File này = phần nâng cấp SAU khi thi — nhánh
feat/plan07-track-a-hardening. Điểm xuất phát là trạng thái ởCASAN_ARCHITECTURE_BEFORE.md(37 script, mức demo/PoC). Mục tiêu nâng cấp: từ "chặn được trên sân khấu" → "đủ chững chạc để chạy thật, chứng minh bằng tấn công".
0. Nhắc lại điểm xuất phát
| Mốc | Số script bash | Số test | Mức trưởng thành |
|---|---|---|---|
| Base vanilla (ảnh) | 5 | 0 | chỉ sinh khung dự án |
Lúc mang đi thi (fbcef96) |
37 | 8 | demo/PoC tốt (H4/H5/H6 ~3.0/5) |
| Sau khi thi (HEAD) | 60 (+23) | 14 (+6) | production nội bộ, chứng minh bằng tấn công (H4/H5/H6 ~4.0/5) |
Thêm 23 script + 6 bộ test. Không xoá gì của bản thi — chỉ bồi thêm lớp và vá đường lọt. Chia làm 5 nhóm.
1. Track A — Vá khe hở bộ lọc cũ (rủi ro thấp)
Bịt các kỹ thuật né tránh nâng cao mà bộ lọc thi bỏ sót, và làm telemetry không sửa được.
| File MỚI | Tác dụng | Đường lọt nó vá |
|---|---|---|
unicode-normalize.py |
Chuẩn hoá Unicode (NFKC) + gấp ký tự giả (homoglyph) + bóc ký tự tàng hình (zero-width) + gấp chữ toàn phần | Chữ "ignore" viết bằng ký tự Cyrillic giả né được regex |
decode-suspicious.py |
Giải base64/hex đoạn khả nghi rồi quét lại | Payload độc giấu trong mã hoá |
tool-output-scan.sh |
Quét injection trong OUTPUT của tool trước khi nó quay lại ngữ cảnh AI | Kết quả tool bị nhiễm độc rồi "tái nhập" vào model |
telemetry-integrity.sh |
Ràng số liệu chi phí vào manifest ký số — sửa 1 token là MISMATCH | Sửa lén sổ chi phí |
benign-fp-report.sh |
Corpus 95 câu hợp lệ (Anh/Việt/Nhật) + ngân sách dương-tính-giả | Siết chặt mà bắt nhầm người dùng thật |
Ghi chú:
security-check.shđược nâng thêm strict fail-closed (model chết → CHẶN) vàcost-spike-detect.shthêm trần tuyệt đối + ngân sách tích luỹ + cold-start — đây là sửa file cũ, không phải file mới.
2. Track C-MVP — Kiểm soát NGOÀI 3 harness lõi
Bảo mật thật không chỉ nằm ở lọc prompt — còn ở hành động, chuỗi cung ứng, rò rỉ dữ liệu, cô lập chạy.
| File MỚI | Tác dụng | Đường lọt nó vá |
|---|---|---|
action-gate.sh |
Canh theo hành động: ghi .env/khoá, rm -rf, curl|bash, cài dep → chặn/hỏi duyệt |
Tool "hợp lệ" nhưng làm việc phá hoại |
supply-chain-gate.sh |
Cổng chuỗi cung ứng: typosquat / postinstall / danh sách đen + bắt gói mới phải duyệt | AI tự kéo thư viện độc |
supply-chain-scan.py |
Quét khác biệt manifest dependency | (bổ trợ cho gate trên) |
data-exfil-guard.sh |
Chặn secret → cloud; che PII → nhật ký | Tuồn dữ liệu ra ngoài |
sandbox-run.sh |
Sandbox scaffold: chính sách tĩnh (chặn ~/.ssh, egress, fork-bomb) + ulimit/timeout |
Code sinh ra làm bậy — (⚠️ chưa cô lập kernel) |
3. Evidence Pack (Plan-09) — "Vì sao tin output này?"
| File MỚI | Tác dụng |
|---|---|
evidence-pack.sh |
Lệnh pack / verify-pack — đóng gói & xác minh gói bằng chứng |
evidence-pack-build.py |
Dựng gói 12 file chuẩn + manifest hash + ký HEAD |
evidence-pack-verify.py |
Xác minh tamper-evident: sửa 1 byte → gói VÔ HIỆU; certified chỉ khi đủ cổng |
4. H5+ — Quản trị lên hạng (nâng lớp yếu nhất: 76 → 80)
Vá 3 đường lọt lớn nhất của quản trị: duyệt tin bằng biến môi trường · khoá ký nằm local · nhật ký xoá được.
| File MỚI | Tác dụng | Đường lọt nó vá |
|---|---|---|
approval-sign.sh |
Reviewer ký số vào đúng request để duyệt | Khai "người duyệt = X" là qua |
approval-verify.sh |
Xác minh chữ ký + vai trò reviewer; chống giả chữ ký / sai vai / dùng lại (replay) / tự duyệt | như trên |
audit-ship.sh |
Ship HEAD audit ra sổ ngoài append-only (WORM) | Xoá nhật ký ở máy để phi tang |
worm-ledger.py |
Sổ ngoài chỉ-ghi-thêm, móc xích hash | như trên |
verify-audit-gap.sh |
Đối chiếu → phát hiện rollback (AUDIT_GAP_DETECTED) + giả mạo sổ (AUDIT_LEDGER_TAMPERED) |
như trên |
Ghi chú:
vault-kms.shđược nâng thêm rotate (xoay khoá) + assert-nonexportable (chìa không rời két) — sửa file cũ.
5. H6+ — Vận hành lên hạng (nâng lớp yếu nhất kế: 79 → 80)
Vá 3 gap của chính báo cáo chấm điểm (alerting chỉ ghi file · telemetry nhập tay · dashboard tĩnh) + kỹ thuật né cầu dao (V15).
| File MỚI | Tác dụng | Đường lọt nó vá |
|---|---|---|
alert-dispatch.sh |
Gửi cảnh báo live ra webhook + gộp trùng (dedup) + hàng chờ (dead-letter) + gửi lại | Sự cố chỉ ghi vào file, 3h sáng không ai biết |
provider-usage-fetch.sh |
Kéo usage từ API nhà cung cấp + kiểm định dạng all-or-nothing + fail-loud | Không có nguồn chi phí "ground truth" |
telemetry-reconcile.sh |
Đối soát số ở máy vs số nhà cung cấp → khai thiếu = TELEMETRY_DISCREPANCY |
Khai gian chi phí để giấu hành động lén |
dashboard-serve.sh |
Serve dashboard qua HTTP + /healthz stale-aware |
Bảng tĩnh không biết khi telemetry chết lặng |
dashboard-server.py |
HTTP server: fresh → 200 ok, số liệu cũ → 503 stale | như trên |
Ghi chú:
circuit-breaker-check.shđược nâng thêm cầu dao theo tỷ lệ hỏng trong khoảng (sliding-window) — chống né bằng xen kẽ thành công. Sửa file cũ.
6. Test thêm sau khi thi (6 bộ · +96 kiểm thử)
| Bộ test MỚI | Số | Kiểm cái gì |
|---|---|---|
phase1-track-a-tests.sh |
25 | Track A (chuẩn hoá Unicode, base64, fail-closed, telemetry ký, FP=0) |
phase2-track-c-tests.sh |
29 | Track C-MVP (action-gate, supply-chain, exfil, sandbox) |
phase3-evidence-pack-tests.sh |
7 | Gói bằng chứng (tamper 1 byte → vô hiệu, certified gate) |
phase-h5-approval-tests.sh |
8 | Approval-identity (ký + vai trò + chống replay/tự-duyệt) |
phase-h5-infra-tests.sh |
7 | KMS (rotate/non-exportable, live-aware) + WORM |
phase-h6-agentops-tests.sh |
20 | Alerting live + provider-API + dashboard hosted + window breaker |
7. Tóm tắt Mốc 2 (một dòng)
37 script "chặn được demo" → 60 script "đủ chững chạc chạy thật". Ba lớp H4/H5/H6 từ ~3.0/5 lên ~4.0/5; lớp yếu nhất nhích 76 → 79 → 80 — không còn lớp nào dưới chuẩn. Tổng 175 kiểm thử đối kháng, 0 lỗi.
Trung thực (đã ghi rõ trong
CASAN_HARDENING_STATUS.md): đây là mức CASAN Level 4 — chứng minh bằng tấn công, chưa phải production hoàn chỉnh. Còn cần: hệ danh tính doanh nghiệp (IdP/OIDC live), kho WORM thật (S3 Object Lock), KMS mặc định + HSM, cô lập kernel thật, dashboard triển khai chính thức + kênh alert managed, billing-API thật. Sức mạnh là phòng thủ nhiều tầng + trung thực, không phải "viên đạn bạc".
Sơ đồ số một dòng
Base 5 file (spec-kit)
└─(+32 script, +8 test) → LÚC THI: 37 script · ~79 test · demo/PoC (H4/H5/H6 ~3.0/5)
└─(+23 script, +6 test) → SAU THI: 60 script · 175 test · production nội bộ (H4/H5/H6 ~4.0/5, không lớp nào <80)