Lộ trình
Ước lượng tính bằng người-ngày (pd) cho đội giả định giống lộ trình của Access Hub Collector (access-hub-collector/docs/11-roadmap.md): 2 kỹ sư Go, 1 kỹ sư Laravel, DevOps bán thời gian. Mỗi giai đoạn có dự phòng rủi ro riêng (25% đến 40% tùy mức chưa chắc chắn; phần quét nội dung là lĩnh vực mới nên 35%). Lịch tính cho đội trên, làm tuần tự; mọi con số phải xem lại sau P0 khi có kết quả spike.
Phạm vi của Access Hub Scanner (00): (a) kiểm kê gói, dịch vụ, phần mềm và tệp; (b) lỗ hổng trong phần đã cài; (c) bí mật bị lộ trên đĩa; (d) dữ liệu cá nhân lưu trong tệp; cộng kiểm tra cấu hình và hardening. Lộ trình này thay bản trước (P0 đến P7, 441 pd): giai đoạn được đánh số lại, thêm P2 (bí mật), P4 (dữ liệu cá nhân), P6 (kiểm kê mở rộng).
Tổng quan giai đoạn
| Giai đoạn | Mục tiêu | Cơ sở (pd) | Dự phòng | Tổng (pd) | Lịch (ước tính) |
|---|---|---|---|---|---|
| P0 | Spike và quyết định (gồm bộ máy quét nội dung, quy tắc, dữ liệu cá nhân Việt Nam, ảnh hưởng máy sản xuất) | 30 | 25% | 38 | 3 đến 4 tuần |
| P1 | Lõi scanner, bộ gửi và ingest riêng của Scanner, kiểm kê gói Linux, lỗ hổng Ubuntu, Debian, đầu cuối tới Access Hub | 82 | 30% | 107 | 7 đến 9 tuần |
| P2 | Bộ máy quét nội dung có ngân sách, phát hiện bí mật trên Linux | 75 | 35% | 101 | 7 đến 9 tuần |
| P3 | Họ RHEL, Alpine, KEV, EPSS, nhiều nguồn đối chiếu và nguồn nhanh mỗi giờ, chấm điểm, SLA, dashboard | 73 | 30% | 95 | 6 đến 8 tuần |
| P4 | Phát hiện dữ liệu cá nhân (CCCD, CMND, điện thoại, email, thẻ) | 52 | 35% | 70 | 5 đến 7 tuần |
| P5 | Kiểm tra cấu hình và hardening AHS-* | 44 | 30% | 57 | 4 đến 6 tuần |
| P6 | Kiểm kê mở rộng: dịch vụ, phần mềm ngoài gói, tệp, hệ sinh thái ngôn ngữ | 48 | 35% | 65 | 5 đến 7 tuần |
| P7 | Ngoại lệ, báo cáo, thông báo, thống kê nền tảng | 39 | 25% | 49 | 3 đến 4 tuần |
| P8 | Windows (chờ xác nhận nhu cầu) | 70 | 40% | 98 | 9 đến 12 tuần |
| P9 | Container và image (chờ xác nhận nhu cầu) | 54 | 40% | 76 | 7 đến 9 tuần |
| P10 | DB lỗ hổng offline cho Dedicated | 18 | 30% | 23 | 2 đến 3 tuần |
| Cộng | 585 | 779 |
Ánh xạ từ bản trước: P2 cũ thành P3, P3 cũ thành P5, P4 cũ thành P7, P5 cũ thành P8, P6 cũ thành P9, P7 cũ thành P10.
Mốc gợi ý
| Mốc | Giai đoạn | Tổng (pd) | Lịch (tuần tự) | Khách hàng nhận được |
|---|---|---|---|---|
| M1. Bản dùng được đầu tiên | P0, P1, P2 | 246 | 17 đến 22 tuần (4 đến 5 tháng) | Máy Ubuntu, Debian: kiểm kê gói, lỗ hổng CVE so khớp tập trung, bí mật bị lộ trên đĩa (khóa, token, .env, lịch sử shell) với mức độ theo phơi nhiễm; danh sách finding cơ bản, tab Bảo mật; cô lập tenant và bộ "không giá trị rời máy" đạt. Đủ cho khách hàng thí điểm |
| M2. Sản phẩm Linux đầy đủ | P0 đến P7 | 582 | 38 đến 52 tuần (9 đến 12 tháng) | Thêm họ RHEL, Alpine, chấm điểm, SLA, dashboard, dữ liệu cá nhân, hardening, kiểm kê dịch vụ và phần mềm, ngoại lệ, báo cáo, thông báo, thống kê nền tảng |
| M3. Mở rộng nền tảng | P8, P9 | 174 | 16 đến 21 tuần, theo nhu cầu | Windows; container và image. Chỉ bắt đầu khi chủ dự án xác nhận nhu cầu (Q18, Q19) |
| P10 (độc lập) | P10 | 23 | 2 đến 3 tuần | DB offline cho Dedicated không Internet; làm được bất kỳ lúc nào sau P1 khi có khách hàng cần |
Rút ngắn lịch: P2 phần trên máy (SCN-10 đến SCN-16) không phụ thuộc secmatch, có thể bắt đầu song song nửa sau P1 nếu có thêm một kỹ sư Go (rút khoảng 3 tuần cho M1). P4 và P5 ít đụng nhau, chạy song song được khi đủ người (rút 4 đến 6 tuần cho M2). Thứ tự P3 và P4 có thể đổi nếu khách hàng thí điểm cần dữ liệu cá nhân trước họ RHEL.
P0: Spike và quyết định
Mục tiêu: trả lời các câu hỏi chặn, chốt ADR 0001 đến 0011, chốt hợp đồng SecurityReport v1 và v2, có số đo thật cho ngân sách quét nội dung.
| Mã | Việc | pd |
|---|---|---|
| S1 | Đọc rpmdb (BDB, SQLite, NDB) bằng Go thuần: độ đúng trên fixture RHEL 7, 8, 9, kích thước binary, giấy phép thư viện | 3 |
| S2 | Tải và đo các nguồn 03: kích thước, độ phủ, độ trễ; so OSV với nguồn gốc của Debian, Ubuntu, Red Hat; nháp bảng giấy phép (Q9) | 4 |
| S3 | Chạy Trivy, Grype, OpenSCAP trên 4 máy thử, dựng quy trình ground truth (11 mục 3) | 3 |
| S4 | Mô hình quyền: ambient capability, chỉ thị systemd, CentOS 7, systemd-analyze security; thêm ProtectHome=read-only, LimitCORE=0 cho unit nội dung | 2 |
| S5 | Hiệu năng: kích thước inventory thật, chi phí quét, nguyên mẫu so khớp lại 10.000 máy tổng hợp | 3 |
| S6 | Bộ máy quét nội dung: nguyên mẫu Aho-Corasick cộng RE2 cộng entropy trên 1 GiB văn bản thật, đo MiB/s mỗi lõi, RSS; chọn kho chỉ mục cục bộ (bbolt hay tự viết), đo kích thước chỉ mục cho 500.000 tệp | 3 |
| S7 | Quy tắc bí mật: nguyên mẫu bộ chuyển đổi cấu hình gitleaks, rà soát giấy phép (gitleaks MIT, Nosey Parker Apache-2.0, trufflehog AGPL-3.0), định dạng khóa cổng thanh toán Việt Nam, dựng bộ mẫu ban đầu và chạy chuẩn đối chiếu trong phòng thí nghiệm | 3 |
| S8 | Dữ liệu cá nhân Việt Nam: bộ xác thực CCCD (mã tỉnh sau 2025), đầu số di động, Luhn của thẻ NAPAS, checksum mã số thuế; bộ mẫu tổng hợp; khảo sát dương tính giả trên máy sạch (tài liệu gói, log, fixture); khởi động rà soát pháp lý (Q42) | 3 |
| S9 | Ảnh hưởng máy sản xuất: PSI theo distro, posix_fadvise, hành vi atime với relatime, giới hạn băng thông IO trên cgroup v1 và v2, đo p99 của tải web chuẩn khi quét nội dung | 2 |
| S10 | Nguồn kiểm kê mở rộng: đọc trạng thái unit qua D-Bus chỉ đọc trong hộp cát (RestrictAddressFamilies=AF_UNIX), snap, flatpak, build info của binary Go, manifest .jar, dist-info của Python | 1 |
| P0-D | Duyệt ADR 0001 đến 0011, nháp .proto v1 và v2 của Scanner, nhận trả lời câu hỏi chặn | 3 |
| Cộng | 30 |
Tiêu chí ra: câu hỏi có cột "Chặn" bằng P0 ở 13 đã trả lời; ADR 0001 đến 0011 chuyển sang Chấp nhận hoặc được thay; nháp SecurityReport (gồm phần nội dung) được chốt trong repo này; bảng SNFR (gồm SNFR-12 đến SNFR-19, SNFR-47 đến SNFR-50) và ước lượng P1, P2 được cập nhật theo số đo.
Phụ thuộc: chủ dự án (câu hỏi), pháp chế (Q9, Q42 khởi động).
P1: Lõi, kiểm kê gói Linux, lỗ hổng Ubuntu, Debian
Mục tiêu: máy Ubuntu, Debian cài gói Scanner (không cần Access Hub Agent, Q25) hiện finding lỗ hổng trên tab Bảo mật của Access Hub, CVE mới xuất hiện mà không cần quét lại.
| Mã | Việc | pd |
|---|---|---|
| SCN-1 | Khung scanner: CLI (scan, scan --print, status, version), đọc config.pb, ghi spool nguyên tử, chia phần | 4 |
| SCN-2 | Parser dpkg, os-release, kernel, băm inventory, phát hiện thay đổi rẻ | 3 |
| SCN-3 | Gói .deb, .rpm, người dùng hệ thống, unit và timer hardening | 3 |
| SCN-4 | Bộ gửi accesshub-scan-uploader (ADR 0001): enroll bằng mã enroll Scanner, khóa Ed25519 sinh tại máy, ký request, đọc và kiểm khung spool, FULL, HASH_ONLY, need_full, backoff, GET /scan/v1/config ghi config.pb, xoay khóa, status, unit hardening không capability, đóng gói chung gói Scanner. Mẫu enroll, backoff chép từ repo Agent (ghi nguồn) | 9 |
| SMT-6 | Vai trò ingest của secmatch: POST /scan/v1/enroll, /scan/v1/report, GET /scan/v1/config, xác minh chữ ký, bản sao registry máy Scanner từ Access Hub, kiểm giấy phép (security_scanning, hạn mức scan_hosts, 403 licence_inactive), giới hạn, khử trùng, outbox tới matcher, ma trận hai tenant và fuzz | 8 |
| SDB-1 | secdb-build v1: Debian tracker, Ubuntu (OSV hoặc OVAL theo S2), tóm tắt từ NVD, chuẩn hóa, kiểm tra hợp lý, ký, phát hành | 10 |
| SMT-1 | Secmatch: ingest, kho inventory, so sánh dpkg, so khớp, finding delta, outbox sang Access Hub | 9 |
| SMT-2 | Kéo và xác minh DB, chuyển nguyên tử, so khớp lại, API nội bộ (gói, xóa, trạng thái, resync) | 6 |
| HUB-SEC-1, 2, 3, 4, 6 (cơ bản), 13, 15 (phần) | Quyền, bảng security_findings, security_finding_events, security_server_scans, security_vulnerabilities, API matcher, tab Bảo mật, danh sách finding cơ bản, purge, trang tài liệu | 14 |
| HUB-SEC-21 | Máy Scanner: scan_hosts, scan_enrolment_codes, quyền security.hosts.manage, trang mã enroll và danh sách máy Scanner, API enroll và registry cho ingest, hạn mức scan_hosts, gắn vào Server chung (trang máy chủ hiện cả Agent và máy Scanner nếu có) | 6 |
| T-1 | Fixture và golden Ubuntu 20.04, 22.04, 24.04, Debian 11, 12; lần đo độ chính xác đầu tiên | 7 |
| T-1b | Khung kiểm thử "không giá trị rời máy": bộ canary, thu mọi đầu ra (spool, log, stdout, stderr, scan --print), chạy trong CI cho mọi PR | 3 |
| Cộng | 82 |
Tiêu chí ra: máy thử duy nhất chạy 14 ngày (quyết định 2026-10-02; cổng 20 máy thật Ubuntu, Debian giữ cho trước phát hành, xem mục Trạng thái tạm dừng); độ chính xác trên ground truth đạt SNFR-40; ngân sách SNFR-01, 03, 04 đạt trên ma trận; CVE mới trong DB hiện trên Access Hub dưới 2 giờ; kiểm thử hai tenant đạt ở ingest, matcher, Access Hub; máy không cài Agent chạy đủ đường; khung "không giá trị rời máy" chạy trong CI; scan --print không có dữ liệu ngoài danh sách 09 mục 5.
Phụ thuộc: Access Hub có HUB-SEC P1 gồm HUB-SEC-21; không phụ thuộc repo Agent hay Collector (Q25); gói .deb, .tar.gz riêng không cần kho gói (quyết định 2026-10-02); khóa ký tệp ngoại tuyến (Q23).
Trạng thái P1 (cập nhật 2026-10-02 tối)
Ngày 2026-10-02 chủ dự án tạm dừng Access Hub Scanner sau hai lần thử nghiệm của scanner làm đầy ổ đĩa của máy đang chạy Access Hub production. Lần 1 khoảng 15:10: giải nén Ubuntu VEX ra khoảng 20 GB. Lần 2 từ 16:22 đến 16:25: benchmark so khớp lại ghi trạng thái ra đĩa. Cả hai lần MySQL phải chờ ghi binlog, VictoriaMetrics chuyển sang chỉ đọc, rồi tự phục hồi khi đĩa được giải phóng. Công việc tiếp tục cùng ngày sau khi đĩa được nâng lên 146 GB.
Quy tắc trên máy dùng chung (vẫn áp dụng): không benchmark, phép đo quy mô lớn, fuzz quá vài phút. Mọi lệnh Go chạy với nice -n 19 ionice -c3, GOMAXPROCS=2, GOMEMLIMIT=512MiB (riêng secdb-build được 3 GiB). Cache ~/.cache/accesshub-scan dưới 5 GB, xóa tệp tải lớn sau khi dùng. Công cụ dừng khi đĩa trống dưới 30 GiB (secdb-build --min-free-gib mặc định 30). Đo 10.000 máy chỉ trên máy thử riêng.
Đã xong
| Việc | Trạng thái |
|---|---|
| P0 S2, S3, S4, S5 (phần trên máy) | Kết quả ở spikes/README.md |
| Hợp đồng | proto/accesshub/scan/v1/report.proto (gói accesshub.scan.v1: SecurityReport v1, SpoolHeader, SecurityConfig; chuyển từ nháp accesshub.agent.v1 sau Q25), proto/accesshub/secmatch/v1 (ForwardedReport), proto/accesshub/secdb/v1 |
| SCN-1, SCN-2 | accesshub-scanner scan, scan --print, status, version; đọc lại config.pb; spool nguyên tử, chia phần; dpkg, os-release, kernel, băm inventory có giá trị golden; phát hiện thay đổi bằng stat |
| SCN-3 | Unit và timer hardening (điểm 1,1), sysusers, tmpfiles, scripts/package.sh dựng .deb và .tar.gz riêng (amd64, arm64), không dùng kho gói chung |
| SDB-1 | secdb-build (Debian tracker, Ubuntu OSV, NVD tùy chọn), kiểm tra hợp lý, ký Ed25519 bằng khóa tệp ngoại tuyến secdb-2026-a (giao diện Signer để thay bằng KMS), phát hành thư mục cục bộ |
| SMT-1, SMT-2 | accesshub-secmatch: ingest, kho theo tenant, so sánh dpkg (khớp 13.867 cặp với dpkg), so khớp, delta, outbox, so khớp lại khi DB đổi, xác minh chữ ký, chuyển nguyên tử, API nội bộ |
| T-1b | Bộ canary "không giá trị rời máy" trong go test ./... (make test-canary) |
| Kiểm thử | Bảng, golden hash, hai tenant, fuzz ngắn cho parser dpkg, os-release, spool, so sánh phiên bản, manifest, ingest |
| Kiểm thử kho | Bộ kiểm thử chung chạy mọi bài cho cả FileStore và MemStore; sửa lỗi FileStore xóa bia mộ khi công ty có dữ liệu mới |
| T-1 | tools/secdb-subset cắt nguồn theo gói của fixture (testdata/secdb, 625 KB, tái lập byte-by-byte); TestGoldenFixtures so 5 fixture với testdata/golden, trên cả chỉ mục dựng trong bộ nhớ và chỉ mục nạp từ DB đã ký |
| Hợp đồng | contract/security-report-v1.md, nay là hợp đồng cho bộ gửi SCN-4 và ingest SMT-6; 07 sửa tên tệp spool và quy tắc gói sai |
| Bộ nhớ | secdb-build: RSS đỉnh 3,0 GB xuống 0,75 GB (lưu gọn, mã hóa theo luồng, kết quả byte-by-byte như cũ). Secmatch nạp DB: 1,44 GB xuống 0,30 GB (đọc theo luồng, chỉ mục gọn), kết quả so khớp giống hệt |
| HUB-SEC | Đặc tả chi tiết P1 ở 08 mục 11 |
| ADR | 0001 (sửa theo Q25: bộ gửi riêng) và 0005 chấp nhận |
| Q25 | Gói Scanner không phụ thuộc Agent: hợp đồng chuyển sang accesshub.scan.v1, ForwardedReport.host_id, config.pb ở /var/lib/accesshub-scan-uploader/, gói tạo tài khoản accesshub-scan-uploader, bỏ Recommends: accesshub-agent |
| SCN-4 (2026-10-03) | accesshub-scan-uploader: enroll khóa Ed25519 tại máy, ký request, chọn bộ spool hợp lệ mới nhất, FULL hoặc HASH_ONLY, need_full, config.pb theo ETag, backoff full jitter, Retry-After, xoay khóa; unit và timer gia cố (điểm 1,2) trong gói |
| SMT-6 (2026-10-03) | accesshub-secmatch ingest: xác thực chữ ký, danh tính chỉ từ registry, giấy phép và hạn mức, giới hạn hợp đồng, giới hạn tốc độ theo máy, khử trùng, hàng đợi bền vững tới matcher, need_full, cấu hình theo máy, client API Access Hub |
| Đầu cuối (2026-10-03) | internal/e2e: bộ đọc, spool, bộ gửi qua HTTPS, ingest, matcher, outbox, Access Hub giả, hai công ty; số finding khớp golden. Canary mở rộng tới mọi request của bộ gửi |
| Chất lượng | golangci-lint sạch (0 vấn đề) |
Còn lại của P1
- Chủ dự án đã trả lời ngày 2026-10-02: Q1, Q2, Q3, Q5, Q6 duyệt theo khuyến nghị, Q25 (Scanner độc lập với Agent), Q9 (chủ dự án tự lo pháp chế), báo lỗ hổng cho bản phát hành hết hỗ trợ (giữ finding, thêm khuyến nghị nâng cấp) (
13). Còn mở: Q15, khóa API NVD. - Secmatch chưa gửi
PUT /vulnerabilities(tóm tắt, điểm CVE cho Access Hub) vàPOST /heartbeat: làm cùng P3 hoặc khi Access Hub cần. đã xong (2026-10-03). Còn: nhóm Access Hub làm HUB-SEC P1 gồm HUB-SEC-21 (SCN-4,SMT-608mục 11, dạng JSON ở07mục 3.0); sau đó chạy ingest thật với registry Access Hub. ViệcAGT-SEC-*,COL-SEC-*cũ đã bỏ (Q25).- Máy đo riêng (Q47, đồng ý 2026-10-03): chạy các phép đo ở 15-benchmarks.md, trước hết B1 (S5, SNFR-43), B2 (SNFR-40), B3, B5.
- Thí điểm một máy (tiêu chí dưới đây), sau khi có
SCN-4,SMT-6và HUB-SEC-21. - Nguồn nhiều và nguồn nhanh (
SDB-5,SDB-6, P3): thiết kế đã chốt ở ADR 0007, ADR 0012 và03mục 6.
Đã làm sau quyết định 2026-10-02: báo cáo chuyển sang accesshub.scan.v1, gói không còn phụ thuộc Agent, tài khoản accesshub-scan-uploader (commit Q25); bản phát hành hết hỗ trợ giữ finding với nguồn Freexian ELTS tracker, cờ no_distro_fix, kênh elts, finding release_eol (golden Debian 11: 148 lỗ hổng cộng finding release_eol); NOTICE và 03 mục 4 ghi chính xác từng nguồn; nghiên cứu nguồn nhanh ở 03 mục 6. Bản dựng đầy đủ có ELTS: 2.428.996 bản ghi, 14,2 MB, 62 s, RSS đỉnh 0,67 GB.
Tiêu chí ra P1 (sửa theo quyết định 2026-10-02)
Thay "20 máy thật chạy 14 ngày" bằng: máy thử duy nhất (Ubuntu 24.04, cũng chạy Access Hub) chạy gói Scanner theo timer 14 ngày trong giới hạn tài nguyên của unit, báo cáo đi qua bộ gửi, ingest, matcher tới Access Hub; mọi tiêu chí còn lại giữ nguyên. Cổng thí điểm 20 máy (Ubuntu, Debian) giữ làm cổng sau, trước khi phát hành cho khách hàng.
P2: Bộ máy quét nội dung và phát hiện bí mật (Linux)
Mục tiêu: trên máy Linux đã có P1, lượt nội dung chạy trong khung giờ yên tĩnh, phát hiện bí mật theo 14 mục 3, 4, finding bí mật hiện trên Access Hub với mức độ theo phơi nhiễm, không giá trị nào rời máy.
| Mã | Việc | pd |
|---|---|---|
| SCN-10 | Bộ duyệt nội dung: hồ sơ gốc, gốc tùy chọn, danh sách cấm cứng, local.conf (deny_roots, allow_central_roots, content_window), lọc hệ thống tệp, không vượt điểm gắn; chỉ mục cục bộ tăng dần; điểm dừng và đi tiếp giữa các lượt; ngân sách CPU, byte, số mục; PSI và loadavg; posix_fadvise; khung giờ yên tĩnh | 8 |
| SCN-11 | Phân loại tệp: đuôi và magic, phát hiện nhị phân, UTF-16 có BOM, trần kích thước, bộ đọc luồng có chồng lấn, chống đổi tệp giữa lstat và open | 4 |
| SCN-12 | Bộ máy phát hiện: lọc trước Aho-Corasick, RE2, entropy, allowlist, ngữ cảnh, ranh giới che giấu ở tầng kiểu dữ liệu (kết quả không có trường giá trị), định dạng quy tắc nhúng | 7 |
| SCN-13 | Bộ quy tắc bí mật v1: các mục AHK-* ở 14 mục 4, chuyển 40 đến 80 quy tắc nhà cung cấp từ gitleaks (giữ NOTICE), bộ xác thực ngoại tuyến (PEM, OpenSSH, PuTTY, CRC32 GitHub, checksum npm, base64 Docker, cấu trúc JWT), phơi nhiễm và ma trận mức độ, vị trí dự kiến | 12 |
| SCN-14 | Vị trí đích theo thư mục nhà và đường dẫn hệ thống, quy tắc riêng cho lịch sử shell và client CSDL | 4 |
| SCN-15 | Preview, fingerprint (K_host sinh lúc cài, K_company từ cấu hình), gom nhóm, giới hạn và cắt, phần nội dung của SecurityReport v2, content_hash, dựng báo cáo từ chỉ mục | 4 |
| SCN-16 | Tệp đáng chú ý và thống kê tệp theo gốc (14 mục 6, các loại của P2) | 2 |
| SCN-17 | Unit và timer accesshub-scanner-content, ProtectHome=read-only, LimitCORE=0, đóng gói local.conf mẫu, CLI scan --content, detectors list, status có độ phủ | 2 |
| SCN-18 | Bộ gửi chuyển nguyên trạng SecurityConfig mở rộng (khóa content, K_company) ra config.pb với quyền 0640; bật schema_version 2 cùng bộ đọc | 1 |
| SMT-10 | Ingest kiểm tra lớp hai cho phần nội dung (07 mục 3.4): mã detector, định dạng fingerprint, mẫu và độ dài preview, giới hạn số lượng; metric; ma trận hai tenant | 3 |
| SMT-5 | Secmatch: lưu trạng thái finding nội dung theo (company_id, server_id), so sánh, sự kiện kind = secret, lý do đóng (content_removed, file_deleted, out_of_scope, fingerprint_reset), xóa theo máy và công ty | 5 |
| HUB-SEC-17 | Access Hub: quyền security.secrets.view, security.content.manage; cột nội dung trên security_findings; sinh, mã hóa ENC-2, phát xuống và xoay K_company; cài đặt quét nội dung (hồ sơ, gốc tùy chọn có audit, khung giờ, loại trừ, detector tắt); danh sách và chi tiết finding bí mật, "cùng bí mật trên N máy", hướng dẫn khắc phục; audit khi xem chi tiết; thông báo không đường dẫn, không preview; trang tài liệu vi, en | 12 |
| T-4 | Bộ mẫu bí mật (ca dương, âm, allowlist cho mọi detector), đo precision và recall so với gitleaks, trufflehog trong phòng thí nghiệm; bộ "không giá trị rời máy" đầy đủ cho bí mật (biến thể base64, hex, URL-encode, kiểm thử thuộc tính); fuzz bộ đọc, bộ phân tích PEM, OpenSSH, JSON, YAML | 8 |
| T-4b | Kiểm thử tài nguyên: máy 1 triệu tệp, 5 GiB nội dung hợp lệ; tải web chuẩn chạy song song đo p99 (10 mục 6.3) | 3 |
| Cộng | 75 |
Tiêu chí ra: 20 máy thật chạy 14 đêm, baseline xong trong 5 đêm trên máy có tới 5 GiB nội dung hợp lệ; ngân sách SNFR-12 đến SNFR-19 đạt; p99 của tải chuẩn tăng không quá 5% khi quét; độ chính xác đạt SNFR-47 trên bộ mẫu; bộ "không giá trị rời máy" đạt và là cổng CI; kiểm thử hai tenant đạt ở ingest, matcher, Access Hub cho finding nội dung; người không có security.secrets.view chỉ thấy số đếm.
Phụ thuộc: P1 xong (spool, bộ gửi, ingest, matcher, tab Bảo mật); quyết định Q29 đến Q34, Q38, Q40, Q41; CompanyCrypto (ENC-2, nhánh feat/biz-0) có trong Access Hub cho K_company.
P3: Họ RHEL, KEV, EPSS, chấm điểm, dashboard
| Mã | Việc | pd |
|---|---|---|
| SCN-8 | rpmdb (BDB, SQLite), VENDOR, MODULARITYLABEL, parser apk | 6 |
| SDB-2 | Red Hat CSAF/VEX hoặc OVAL, errata AlmaLinux, Rocky, Alpine secdb, KEV (theo dõi mỗi giờ), EPSS, CVSS từ NVD, bảng vòng đời OS | 12 |
| SDB-5 | Nhiều nguồn (ADR 0007 đã sửa): secdb v2 với bản ghi theo nguồn, chính sách ưu tiên theo distro (ký trong DB), "nhanh nhất thắng, nguồn khác xác nhận", nguồn gốc và cờ đồng ý trên finding, tỉ lệ đồng ý chặn phát hành; nguồn đối chiếu đầu tiên: OSV Debian, Ubuntu OVAL | 10 |
| SDB-6 | Nguồn nhanh (ADR 0012): adapter delta mỗi giờ (OSV modified_id.csv, CSAF changes.csv, CVE List delta, KEV), USN JSON làm tín hiệu sớm, phát hành chỉ khi đổi, chỉ số độ trễ và độ tươi theo nguồn | 6 |
| SMT-3 | So sánh rpm và apk, module stream, sự kiện làm giàu, ưu tiên đổi | 8 |
| HUB-SEC-5, 6, 8 (ưu tiên P1, SLA), 9 (CSV, XLSX), 10 (phần), 11, 16 | Tổng quan, xu hướng, danh sách đầy đủ, tìm theo gói, thông báo ưu tiên P1 và SLA, xuất, API, gói và hạn mức, tính điểm và SLA | 20 |
| HUB-SEC-16b | Điểm, ưu tiên, SLA cho finding bí mật (ma trận 14 mục 2.3, 06 mục 1.6), ô bí mật trên tổng quan và tab máy | 3 |
| T-2 | Fixture họ RHEL, benchmark trên toàn ma trận (gồm lượt nội dung trên RHEL) | 8 |
| Cộng | 73 |
Tiêu chí ra: độ chính xác đạt SNFR-40 trên mọi distro chính thức; điểm và ưu tiên giải thích được trên giao diện cho cả lỗ hổng và bí mật; dashboard p95 dưới 1 giây với 100.000 finding một công ty; khóa gói mới có hiệu lực theo QuotaService.
Phụ thuộc: nhánh gói (feat/biz-0) đã hợp nhất; quyết định Q8, Q10, Q15, Q26, Q39.
P4: Phát hiện dữ liệu cá nhân
Mục tiêu: công ty bật dữ liệu cá nhân và chọn gốc; scanner tìm CCCD, CMND, số điện thoại, email, số thẻ, hộ chiếu trong tệp văn bản và dữ liệu có cấu trúc; Access Hub cho bản đồ "dữ liệu cá nhân nằm ở đâu" theo máy và tệp, chỉ số đếm, không giá trị.
| Mã | Việc | pd |
|---|---|---|
| SCN-20 | Detector AHP-* phiên bản đầu (14 mục 5.3): bộ tách token chữ số và email, bộ xác thực CCCD, đầu số, Luhn và IIN, ngữ cảnh có và không dấu, allowlist | 10 |
| SCN-21 | Gom theo tệp, match_count, độ tin cậy, ngưỡng số lượng, ma trận mức độ, fingerprint h, preview rỗng | 3 |
| SCN-22 | Định dạng cấu trúc: tên cột CSV, TSV; khóa JSON, NDJSON, YAML; cột trong dump SQL dạng văn bản | 6 |
| SCN-23 | OOXML (.xlsx, .docx) có giới hạn giải nén, chống bom nén | 6 |
| SCN-24 | Hồ sơ gốc và ngân sách riêng cho dữ liệu cá nhân, trần mỗi tệp, tệp large_unscanned_data | 3 |
| SMT-11 | Ingest kiểm tra lớp hai: sensitive_data phải có preview rỗng, fingerprint phạm vi h | 1 |
| SMT-9 | Trạng thái và sự kiện kind = sensitive_data | 3 |
| HUB-SEC-18 | Quyền security.pii.view; bật theo công ty, chọn hồ sơ, ngưỡng; bản đồ dữ liệu cá nhân theo máy, tệp, loại; finding gom theo tệp; thông báo; trang tài liệu vi, en (gồm phần nghĩa vụ của khách hàng) | 10 |
| T-5 | Bộ mẫu dữ liệu cá nhân tổng hợp (không dùng dữ liệu thật), đo precision và recall theo detector, khảo sát dương tính giả trên máy sạch, bộ "không giá trị rời máy" cho dữ liệu cá nhân, fuzz bộ đọc OOXML | 8 |
| LEG-1 | Phối hợp rà soát pháp lý (Nghị định 13/2023/NĐ-CP, Luật Bảo vệ dữ liệu cá nhân 2025), tài liệu cho khách hàng về dữ liệu nào được xử lý trên máy và dữ liệu nào rời máy | 2 |
| Cộng | 52 |
Tiêu chí ra: precision của detector độ tin cậy high đạt SNFR-48 trên bộ mẫu; ngân sách đạt khi bật cả bí mật và dữ liệu cá nhân (SNFR-15); không finding sensitive_data nào có preview khác rỗng ở bất kỳ tầng nào; ý kiến pháp lý đã có và được phản ánh trong tài liệu, mặc định (tắt hay bật).
Phụ thuộc: P2 (bộ máy, chỉ mục, đường ống finding nội dung); quyết định Q35, Q36, Q37, Q42; ý kiến pháp chế.
P5: Kiểm tra cấu hình và hardening
| Mã | Việc | pd |
|---|---|---|
| SCN-5 | Khung kiểm tra: danh sách trắng bằng chứng, check_version, ngưỡng, unknown | 5 |
| SCN-6 | Các kiểm tra AHS-* ở 05 (khoảng 33 mục, cộng fixture mỗi distro), dùng lại bộ duyệt và chỉ mục của P2 cho nhóm AHS-FS | 18 |
| SCN-7 | Kiểu kiểm tra tls_probe trong bộ gửi của gói Scanner, chỉ tới địa chỉ cục bộ của máy (05 mục 6), kết quả trong SecurityReport.checks | 6 |
| HUB-SEC-14 và phần kiểm tra | Cài đặt, cổng dự kiến, so AHS-NET-001 tập trung, giao diện kết quả kiểm tra | 10 |
| T-3 | Bộ "không giá trị rời máy" mở rộng cho bằng chứng kiểm tra, đối chiếu oscap xccdf | 5 |
| Cộng | 44 |
Tiêu chí ra: mọi kiểm tra có fixture bốn trạng thái; bộ không giá trị rời máy đạt; quét siêu dữ liệu đầy đủ đạt SNFR-02, SNFR-05 trên máy lớn; tỷ lệ unknown dưới 10% trên ma trận.
Phụ thuộc: Q9 (giấy phép CIS), Q12, Q16, Q17; bộ gửi SCN-4 đã có (cho tls_probe).
P6: Kiểm kê mở rộng
Mục tiêu: biết trên mỗi máy có dịch vụ nào, phần mềm nào ngoài trình quản lý gói, tệp nào đáng chú ý; tìm "máy nào chạy dịch vụ X, có phần mềm Y"; so khớp lỗ hổng cho thư viện ngôn ngữ ở vị trí hệ thống.
| Mã | Việc | pd |
|---|---|---|
| SCN-30 | Dịch vụ: unit systemd (tệp unit, trạng thái bật qua liên kết, trạng thái chạy qua D-Bus chỉ đọc nếu S10 và Q44 đồng ý, nếu không từ /run/systemd), SysV init trên distro cũ, gói sở hữu unit | 4 |
| SCN-31 | Phần mềm ngoài gói: snap, flatpak, binary trong /usr/local, /opt (tên, đường dẫn, kích thước, băm), build info của binary Go, .jar (manifest, pom.properties), dist-info Python, package.json của npm toàn cục; purl | 10 |
| SCN-32 | Kiểm kê tệp: unpackaged_executable, thống kê theo gốc đầy đủ, giới hạn báo cáo | 4 |
| SDB-3 | Nguồn OSV cho PyPI, npm, Maven, Go, RubyGems, Composer trong secdb | 8 |
| SMT-7 | So sánh phiên bản semver, PEP 440, Maven; so khớp purl; lưu phần mềm và dịch vụ trong kho inventory; API tra cứu | 8 |
| HUB-SEC-19 | Tab Phần mềm và Dịch vụ của máy, tìm máy theo dịch vụ hoặc phần mềm, thống kê tệp, tệp đáng chú ý | 8 |
| T-6 | Fixture hệ sinh thái, golden, độ chính xác so với Trivy, Grype ở chế độ hệ thống tệp | 6 |
| Cộng | 48 |
Tiêu chí ra: kiểm kê dịch vụ khớp systemctl list-unit-files trên ma trận; precision của so khớp hệ sinh thái ngôn ngữ không dưới 90% trên ground truth; ngân sách SNFR-01 đến SNFR-05 vẫn đạt với phần kiểm kê mới.
Phụ thuộc: P2 (bộ duyệt, chỉ mục), P3 (khung so khớp nhiều hệ); Q19, Q44.
P7: Ngoại lệ, báo cáo, thông báo, thống kê nền tảng
| Mã | Việc | pd |
|---|---|---|
| HUB-SEC-7 | Ngoại lệ: phạm vi (gồm detector cộng mẫu đường dẫn, fingerprint cho finding nội dung), duyệt, tự duyệt gói cá nhân, hết hạn, mở lại | 12 |
| HUB-SEC-8 (còn lại) | Digest, ngoại lệ, máy không quét, DB cũ, baseline nội dung chưa xong | 4 |
| HUB-SEC-9 (PDF) | Báo cáo PDF (cần duyệt phụ thuộc), có mục bí mật và dữ liệu cá nhân chỉ dạng số đếm | 5 |
| HUB-SEC-5 (phần) | security_stats_daily, MTTR, tuân thủ SLA | 4 |
| HUB-SEC-12, SMT-4 | Thống kê nền tảng ẩn danh, stats/global, chỉ số nội dung theo họ detector có ngưỡng k | 7 |
| HUB-SEC-10 (còn lại) | API, mẫu, tài liệu | 5 |
| OPS-1 | Runbook đầy đủ (gồm quét nội dung) | 2 |
| Cộng | 39 |
Tiêu chí ra: ngoại lệ hết hạn tự mở lại và thông báo; báo cáo xuất chỉ chứa dữ liệu công ty và không có preview nếu người xuất thiếu quyền; thống kê nền tảng không có định danh công ty, đường dẫn hay fingerprint (kiểm thử); trang tài liệu vi, en hoàn chỉnh.
Phụ thuộc: Q13, Q14, Q20.
P8: Windows (chờ xác nhận nhu cầu)
| Mã | Việc | pd |
|---|---|---|
| WIN-1 | Spike dữ liệu Microsoft và mô hình so khớp theo bản build | 5 |
| WIN-2 | Kiểm kê bản cài và KB không CGO | 10 |
| WIN-3 | Tập con hardening Windows | 10 |
| SDB-4 | secdb-build nguồn Microsoft | 8 |
| SMT-8 | So khớp ở secmatch | 8 |
| WIN-4 | Bộ gửi Windows của gói Scanner (dịch vụ không đặc quyền), đóng gói MSI | 6 |
| WIN-5 | Quét nội dung trên Windows: bộ duyệt NTFS, phơi nhiễm theo ACL, mô hình quyền đọc (đặc quyền backup hay tài khoản dịch vụ, ADR riêng) | 6 |
| WIN-6 | Vị trí đích Windows: lịch sử PowerShell, web.config, unattend.xml, applicationHost.config, thư mục hồ sơ người dùng | 5 |
| T-7 | Ma trận kiểm thử Windows, bộ "không giá trị rời máy" trên Windows | 12 |
| Cộng | 70 |
Phụ thuộc: khóa ký Authenticode, Q18. Không phụ thuộc Agent Windows (Q25); mẫu dịch vụ Windows của Agent chỉ được chép.
P9: Container và image (chờ xác nhận nhu cầu)
| Mã | Việc | pd |
|---|---|---|
| CTR-1 | Quyết định và spike | 4 |
| CTR-2 | Kiểm kê image của container đang chạy cùng ADR về quyền (socket Docker, containerd tương đương root, có thể thay ADR 0001) | 12 |
| CTR-3 | Quét image trong registry từ trung tâm, chỉ lỗ hổng (tùy chọn) | 12 |
| CTR-4 | Bí mật và dữ liệu cá nhân trong lớp image và hệ thống tệp container trên máy (đọc thư mục lớp chỉ đọc, ánh xạ lớp sang image từ siêu dữ liệu trên đĩa) | 8 |
| HUB-SEC-20 | Giao diện container, image | 8 |
| T-8 | Kiểm thử | 10 |
| Cộng | 54 |
Bí mật và dữ liệu cá nhân trong image không quét ở trung tâm (sẽ phải kéo nội dung image của khách hàng về nền tảng, trái tinh thần ADR 0011); chỉ quét trên máy hoặc bằng công cụ khách hàng tự chạy. Phụ thuộc: Q19.
P10: DB lỗ hổng offline cho Dedicated
| Mã | Việc | pd |
|---|---|---|
| OFF-1 | Lệnh db import, xác minh, chống hạ phiên bản, trải nghiệm DB cũ | 6 |
| OFF-2 | Cổng tải cho khách hàng Dedicated xác thực bằng DeploymentLicense | 5 |
| OFF-3 | Quy trình xoay khóa, tài liệu, diễn tập môi trường kín | 4 |
| T-9 | Kiểm thử | 3 |
| Cộng | 18 |
Bộ quy tắc phát hiện nằm trong binary scanner nên không cần kênh phân phối riêng cho môi trường kín. Phụ thuộc: Q23, triển khai Dedicated của Access Hub.
Phụ thuộc chéo
| Việc | Chặn bởi |
|---|---|
| SCN-4, SMT-6 | HUB-SEC-21 (mã enroll, registry máy Scanner) cho đường đầu cuối; trước đó thử bằng registry tĩnh |
| SMT-10, SMT-5 | Phần nội dung của SecurityReport v2 (07 mục 3.4) chốt trong repo này |
| Phát hành gói Scanner ra khách hàng | Khóa ký gói riêng của Scanner; artifact .deb, .tar.gz riêng (Q21) |
| SDB-1 | Khóa ký DB trong KMS (Q23), API key NVD (Q24), giấy phép nguồn (Q9) |
| SCN-13 | Rà soát giấy phép bộ quy tắc gitleaks (S7, Q34) |
HUB-SEC-17 (K_company) | CompanyCrypto (ENC-2) đã hợp nhất vào Access Hub |
| HUB-SEC-11 | Nhánh gói feat/biz-0 đã hợp nhất vào Access Hub |
| P4 bật cho khách hàng | Ý kiến pháp chế (Q42) |
| P5 TLS | SCN-4 (bộ gửi) |
| P6 trạng thái dịch vụ qua D-Bus | S10, Q44 |
Định nghĩa hoàn thành chung
Như Collector (docs/11-roadmap.md): mã hợp nhất qua CI (lint, kiểm thử, quét bảo mật), kiểm thử phù hợp (đơn vị, golden, tích hợp, hợp đồng), tài liệu cập nhật (repo này và trang tài liệu trong Access Hub, vi và en), metric và log cần thiết, kiểm thử cô lập tenant, cộng: không giảm chỉ số độ chính xác (lỗ hổng và detector), bộ "không giá trị rời máy" đạt, ngân sách tài nguyên trên máy không xấu đi so với bản trước.