From a1d29c48e12489d8afefae1f1673b5f8979f1a1e Mon Sep 17 00:00:00 2001 From: JOY Date: Thu, 17 Sep 2026 00:38:34 +0700 Subject: [PATCH] docs(audit): record Round 5 - non-root runner and secret-proof dockerignore (PR #74) --- docs/audit/2026-09-08-audit-report.html | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/audit/2026-09-08-audit-report.html b/docs/audit/2026-09-08-audit-report.html index e486e936069..d6b614b6820 100644 --- a/docs/audit/2026-09-08-audit-report.html +++ b/docs/audit/2026-09-08-audit-report.html @@ -100,8 +100,9 @@

Trạng thái xử lý - cập nhật đến Round 4 (2026-09-16)

ĐÃ FIX (Round 3)HI-06, HI-11, HI-14 (phần hardening), HI-02/03, HI-21, HI-22, MD-10/11/12, MD-13/14/15, MD-01Cron auth timing-safe fail-closed (7 routes); reminder re-check booking + cancel stale reminders; rate limit 6 auth mutations + HSTS/CSP headers; MCP tenant scoping + fromReschedule + conflict guard; SSRF self-hosted + opt-out; video token fail-closed; timing-safe webhook compares ĐÃ FIX (Round 4 - verify lại 2026-09-16)MD-03, MD-05/06, LO-02, LO-03, MD-29MD-03: PBAC checkPermission giờ query membership thật, throw FORBIDDEN (aa68fd3acc). MD-05/06: partial expression index trên metadata dosOrgId/dosTeamId + WebhookScheduledTriggers drain take:100 + await + deleteMany sau dispatch (efb232e52f). LO-02: 3 barrels chết đã xoá (a058d89d53). LO-03: restore membership ADMIN/OWNER check (aa68fd3acc). MD-29: fork env vars vào turbo globalEnv (ccf9b85785) ĐÃ FIX (Round 4 - 2026-09-16)HI-09, CR-08 (hoàn tất), LO-13 (một phần)HI-09: workflow mới fork-ci.yml (type-check + lint + unit test) chạy trên PR + push dev/main của DOS/Crove-Cal; deploy-docker.yml thêm job ci-gate (type-check) mà build-and-push phải chờ. CR-08: Dockerfile/docker-compose bỏ default secret từ Round trước; Round 4 thay 4 giá trị secret thật trong apps/api/v2/.env.example bằng placeholder. LO-13: JWT example trong README-PLATFORM.md thay bằng placeholder + ĐÃ FIX (Round 5 - 2026-09-16, PR #74)HI-12 phần runnerRunner stage chạy USER node (app tree copy với --chown=node:node, không tạo layer copy-up) sau bước apt chạy root; .dockerignore chặn .env*/*.pem/*.key/*.p12/*.pfx/.husky - bảo vệ cả image web lẫn api/v2 (cùng context root). Verify: docker build --check sạch (4 warning là ARG build-time placeholder đã xử lý ở CR-08), image build + publish sau gate thành công trên dev (run 35127273831) CHỜ QUYẾT ĐỊNHHI-13, HI-14, HI-16, HI-10HI-13: 61 migrations cần biết DB prod dùng schema nào (lưu ý: upstream đã đóng source 2026-04 nên áp lực sync giảm). HI-14: wire workflows dispatcher là quyết định feature - tham khảo Cal.com Workflows 2.0 (v6.9) trong report feature-gap cùng ngày. HI-16: branding hardcode - giờ upstream đóng source nên việc giữ branding riêng có chủ đích là phương án hợp lý, cần chốt. HI-10: bật crons cần cấu hình secrets riêng (CRON_SECRET v.v.) trước. Khi deploy: rotate secret Supabase + env mới (CRON_SECRET, OIDC_*, BREVO/CROVE/DOS_SYNC_WEBHOOK_SECRET, DATABASE_SSL_REJECT_UNAUTHORIZED=false nếu pooler cần) + prisma migrate deploy - CÒN LẠI (TAIL)Docker phần dở + perf/cosmeticHI-12 phần dở (USER non-root, .dockerignore thiếu .env/*.pem/*.key), LO-13 phần dở (prisma/.env symlink, pin trigger.dev), MD-16…22 (frontend perf), MD-27/28 (CI supply-chain hygiene), MD-30 (Stripe png), MD-31/32 (latent), LO-01/04/05/06/07 (một phần)/08/09/11/14 + CÒN LẠI (TAIL)Docker phần dở + perf/cosmeticHI-12 phần còn lại (pin actions theo SHA - trùng MD-28; turbo prune để bỏ dev deps khỏi image), LO-13 phần dở (prisma/.env symlink, pin trigger.dev), MD-16…22 (frontend perf), MD-27/28 (CI supply-chain hygiene), MD-30 (Stripe png), MD-31/32 (latent), LO-01/04/05/06/07 (một phần)/08/09/11/14 @@ -444,7 +445,7 @@

Danh sách phát hiện

"CR-08":"Round 2 bỏ ARG defaults + comment studio; Round 4 (2026-09-16) thay 4 giá trị thật trong apps/api/v2/.env.example bằng placeholder.", "HI-09":"Round 4 (2026-09-16): fork-ci.yml (type-check + lint + unit) chạy trên PR/push dev/main; deploy-docker.yml thêm ci-gate. Cron xem HI-10.", "HI-10":"Cần cấu hình secrets riêng cho fork (CRON_SECRET…) rồi mới bật được - không bật khi thiếu secret.", - "HI-12":"Đã fix: studio disable, cache-to mode=min, bỏ ARG defaults. Còn mở: USER non-root + .dockerignore thiếu .env/*.pem/*.key.", + "HI-12":"Đã fix: studio disable, cache-to mode=min, bỏ ARG defaults, API v2 URL; Round 5 (PR #74): USER node + .dockerignore chặn secrets. Còn mở: pin actions theo SHA (MD-28) + turbo prune bỏ dev deps khỏi image.", "HI-13":"Upstream đã đóng source (2026-04) nên áp lực sync giảm; vẫn cần chốt schema DB prod trước khi đụng 61 file.", "HI-14":"scheduleRemindersForBooking vẫn 0 production caller. Tham khảo hướng đi: Cal.com Workflows 2.0 (v6.9) - xem report feature-gap ngày 2026-09-16.", "HI-16":"Upstream đóng source (2026-04) nên lý do 'revert cho dễ sync' yếu đi - giờ là quyết định giữ branding riêng có chủ đích hay không.",