Kết quả spike P0 (rút gọn: S2, S3, S4, S5)
Ngày đo: 2026-10-02, trên máy thử duy nhất (Ubuntu 24.04, 4 vCPU, 16 GB, đồng thời chạy Access Hub production). Dữ liệu nguồn tải cùng ngày. Bản thô đã xóa sau khi đo (giới hạn đĩa); muốn đo lại thì tải lại theo URL dưới đây.
S2. Nguồn dữ liệu Debian và Ubuntu
| Nguồn | Tải về | Giải nén | Bản ghi | Độ tươi | Giấy phép |
|---|---|---|---|---|---|
Debian Security Tracker JSON (security-tracker.debian.org/tracker/data/json) | 12,9 MB gzip, 3,3 s | 80 MB, parse 0,7 s | 4.053 gói nguồn; bookworm 64.596, trixie 63.107 bản ghi (gói, CVE) | Sinh lại khoảng mỗi giờ (cache-control: max-age=3600) | Repo tracker không có tệp giấy phép (đã kiểm qua API salsa): cần pháp chế (Q9) |
Debian OSV (osv-vulnerabilities/Debian/all.zip) | 74 MB | 237 MB, 69.401 bản ghi | Debian 12: 55.948 mục affected | Dẫn xuất từ tracker | Theo nguồn |
Ubuntu OSV (osv-vulnerabilities/Ubuntu/all.zip) | 771 MB, 106 s | 7,8 GB (do liệt kê versions), 69.421 bản ghi | 22.04: 865.796 mục (167.933 có bản sửa); 24.04: 473.938 (118.268) | Bản ghi đổi lúc 05:45Z có trong zip lúc 06:02Z; có modified_id.csv (3,4 MB) để tải tăng dần | CC BY-SA 4.0 (repo canonical/ubuntu-security-notices) |
Ubuntu OVAL CVE (security-metadata.canonical.com/oval/) | 8 đến 12 MB bz2 mỗi bản phát hành | 207 MB XML (noble) | noble 33.126 định nghĩa | Sinh hằng ngày (bản 2026-10-01T22:29) | "Copyright Canonical", không ghi giấy phép trong tệp |
Ubuntu VEX (security-metadata.canonical.com/vex/vex-all.tar.xz) | 65 MB xz | khoảng 20 GB JSON | 76.994 tệp | Hằng ngày | CC BY-SA 4.0; trang có thông báo sẽ đổi nền tảng ("TBD") |
So sánh OSV và OVAL (cặp CVE, gói nguồn):
| Bản phát hành | Cặp OVAL | Cặp OSV | Trùng | Cùng bản sửa | Khác |
|---|---|---|---|---|---|
| 24.04 | 128.643 | 472.231 | 128.643 | 128.641 | 2 (OSV mới hơn: USN ra lúc 05:57Z, OVAL sinh lúc 22:29Z hôm trước) |
| 22.04 | 180.421 | 862.444 | 180.421 | 180.419 | 2 (cùng lý do) |
| 20.04 | 112.146 | 626.456 | 88.161 | 88.161 | OVAL focal gộp bản sửa ESM (23.985 cặp), OSV để ở Ubuntu:Pro:20.04:LTS |
Phần OSV có thêm chủ yếu là biến thể kernel chưa sửa. Không nguồn nào trong OSV, OVAL phân biệt được needed, needs-triage, deferred, ignored với mục chưa sửa; VEX phân biệt được (câu action_statement) nhưng quá nặng.
Quyết định cho P1 (ADR 0004 điểm 3 được đáp ứng): Debian dùng tracker JSON (đầy đủ trạng thái no-dsa, ignored, postponed, unimportant, nhỏ). Ubuntu dùng OSV UBUNTU-CVE-* (bản sửa trùng OVAL 99,998%, tươi hơn vài giờ, có kênh Pro/ESM). VEX để P3 làm giàu wont_fix. Lưu ý:
- Debian 11 (bullseye) đã rời LTS ngày 2026-08-31 và không còn trong tracker của Debian. Bản đầu ghi
SUPPORT_EOLkhông dữ liệu. Sửa theo chính sách 2026-10-02 ("lỗ hổng vẫn là lỗ hổng"): dữ liệu Debian 10, 11 lấy từ Freexian ELTS tracker (cùng định dạng, vẫn cập nhật trạng tháiopen); fixture Debian 11 có 148 lỗ hổng cộng findingrelease_eol(Trivy 146, Grype 111 trên cùng fixture). - Dữ liệu lỗi đã gặp: Ubuntu OSV có
fixed: "2024-08-16"cho CVE-2024-6716 (tiff). secdb-build từ chối phiên bản sửa dạng ngày và đếm vàobad_versions. - Sự cố: giải nén VEX ra đĩa làm đầy ổ production (xem
docs/12-roadmap.mdmục Trạng thái tạm dừng). Mọi nguồn lớn phải đọc theo luồng.
secdb v1 dựng từ hai nguồn (không NVD): 63.526 lỗ hổng, 2.309.931 mục affected, tệp secdb.pb.zst 13,6 MB (290 MB giải nén); bản đầu dựng 68 s, RSS 2,8 GB; nạp và lập chỉ mục ở secmatch 4,2 s, RSS 1,9 GB. Phần lớn mục là biến thể kernel chưa sửa của Ubuntu. Sau tối ưu (2026-10-02 tối, dữ liệu cùng ngày): secdb-build 58 s, RSS đỉnh 0,75 GB (lưu gọn, ghi theo luồng); secmatch nạp và lập chỉ mục 4 s, RSS đỉnh 0,30 GB (đọc theo luồng, chỉ mục gọn); nội dung DB và kết quả so khớp giống hệt bản trước.
S3. Chuẩn đối chiếu (ground truth)
Công cụ đã tải (bản ghim, kiểm SHA-256 với checksums.txt của bản phát hành; đã xóa khỏi ~/.local/opt khi tạm dừng):
| Công cụ | Tệp | SHA-256 |
|---|---|---|
| Trivy v0.74.0 | trivy_0.74.0_Linux-64bit.tar.gz | 2ae6fe3ee734b7fdf11335663e18c75ea12dccc76062f09f164a3b0f8be4371a |
| Grype v0.119.0 | grype_0.119.0_linux_amd64.tar.gz | 3fa2dc4b924621ab65404cf08d0b8438d896d80ab949c9d5a4ca283c36004c9b |
DB của công cụ: Trivy 1,4 GB (cập nhật 2026-10-02T06:55Z), Grype 3,0 GB (build 2026-10-02T06:31Z). Chỉ quét thư mục gốc giả chứa var/lib/dpkg/status và os-release (không quét /): 5 fixture ảnh gốc (Ubuntu 20.04.5, 22.04.5, 24.04.3, Debian 11, 12) và bản sao dpkg/status của máy này (741 gói, không commit). Quy trình: tools/accuracy chuẩn hóa về (CVE, gói nguồn), bỏ gói kernel không chạy (chính sách 04 mục 5).
| Fixture | Ours | Trivy | Grype | Trùng Trivy | Trùng Grype | Chỉ ours | Chỉ công cụ |
|---|---|---|---|---|---|---|---|
| Ubuntu 22.04 | 198 | 143 | 179 | 143 | 179 | 55 / 19 (chưa phân loại từng mục) | 0 / 0 |
| Ubuntu 24.04 | 169 | 127 | 150 | 127 | 150 | 42 / 19, đều no_fix | 0 / 0 |
| Debian 12 | 102 | 101 | 100 | 101 | 100 | 1 / 2 (undetermined, wont_fix) | 0 / 0 |
| Máy này (24.04) | 4.366 | 3.855 | 4.270 | 3.855 | 4.265 | 612: 610 no_fix, 2 là lỗi dữ liệu tiff ở trên | 0 / 5 (libheif, libxpm chưa có trong OSV) |
| Ubuntu 20.04 | 187 | 35 | 167 | 35 | 167 | bản sửa ESM (+esm), công cụ khác không dùng dữ liệu Pro | 0 / 0 |
| Debian 11 | 0 (148 sau khi đổi chính sách) | 146 | 111 | Lúc đo: release_eol không finding; nay giữ finding (ELTS tracker) |
Với finding có bản sửa, mọi cặp trùng đều cùng phiên bản sửa; recall so với hợp của hai công cụ trên bản phát hành đang hỗ trợ là 99,9% (thiếu 5 mục Grype có, OSV chưa có). Khác biệt còn lại thuộc nhóm "có chủ đích" (11 mục 3): mục chưa sửa (OSV không phân biệt needs-triage), kênh ESM, bản phát hành hết hỗ trợ. Ground truth phân loại thủ công chưa làm (cần người duyệt), nên chưa công bố precision theo SNFR-40.
S4. Quyền và hardening systemd
- Unit
packaging/systemd/accesshub-scanner.service:User=accesshub-scanner, chỉCAP_DAC_READ_SEARCH(ambient và bounding),RestrictAddressFamilies=AF_UNIX,IPAddressDeny=any,ProtectSystem=strict,ProtectHome=yes,ProtectProc=invisible,SystemCallFilter=@system-service ~@privileged @resources,Nice=19,IOSchedulingClass=idle,CPUSchedulingPolicy=idle,MemoryMax=192M,CPUQuota=50%,LimitCORE=0. systemd-analyze security --offline(systemd 255): 1,1 (Access Hub Agent hiện tại 1,7). Các điểm còn lại là có chủ đích: capability đọc,AF_UNIX, khôngPrivateNetwork(P5 cần/proc/netcủa namespace máy).- Chạy thật trong hộp cát của user manager (seccomp,
AF_UNIX,NoNewPrivileges,MemoryMax): quét thành công;curltrong cùng hộp cát không tạo được socket mạng. - Spool là thư mục setgid (
2750), thư mục trạng thái0710. Lúc spike nhóm đọc làaccesshub-agent; sau quyết định Q25 là nhómaccesshub-scan-uploadercủa bộ gửi trong chính gói Scanner: bộ gửi đọc được báo cáo mà bộ đọc không cần là thành viên nhóm nào khác. - Chưa làm (cần root hoặc máy khác): ambient capability thật, CentOS 7 và systemd cũ,
IPAddressDeny(cần BPF).
S5. Kích thước inventory và chi phí
| Đo | Kết quả |
|---|---|
| Quét máy này (741 gói) | 10 đến 20 ms CPU, RSS 9,3 MB, spool 14,2 KB (--print JSON 167 KB, gzip 14,5 KB) |
| Tổng hợp 3.000 gói | 30 ms, RSS 11,9 MB, spool 17,5 KB |
| Tổng hợp 20.000 gói | 0,27 s CPU, RSS 22 MB, 105 KB |
| Tổng hợp 45.000 gói | 0,61 s CPU, RSS 40 MB, 3 phần, 213 KB |
Tháo khi không đổi (unchanged) | dưới 5 ms, RSS 5,5 MB |
Binary accesshub-scanner | 5,2 MB (đích SNFR-08: 25 MB) |
| So sánh phiên bản dpkg | 186 ns mỗi cặp |
Ngân sách SNFR-01 (3 s CPU cho 3.000 gói), SNFR-04 (128 MB) và SNFR-11 (150 KB) đạt với dư địa lớn.
So khớp lại 10.000 máy: chưa đo. Lần chạy thử đã làm đầy đĩa production và bị dừng. Theo yêu cầu của chủ dự án, phép đo đầy đủ chỉ chạy trên máy thử riêng. Ước tính: mỗi máy 3.000 gói, khoảng 1.000 gói có trong DB, trung bình khoảng 30 mục mỗi gói, nên khoảng 30.000 phép so sánh, tức 6 ms CPU mỗi máy. 10.000 máy khoảng 60 s CPU, cộng đọc và ghi kho. Ghi nhớ theo inventory_hash gom các máy giống hệt nhau. Đích SNFR-43 (30 phút trên 4 vCPU) có vẻ dư, nhưng phải đo. Rủi ro thật là khối lượng finding chưa sửa (biến thể kernel, gói nhiều CVE): trạng thái và sự kiện có thể lên tới hàng GB. Cần giới hạn và nén trạng thái trước khi mở rộng.