Access Hub Scanner
Đang phát triểnĐồng bộ từ mã nguồn lúc 10:57, 03/10/2026
Skip to content
ADR 0007Chấp nhận

ADR 0007. Engine so khớp mỏng tự viết, nguồn dữ liệu cắm được, công cụ mã nguồn mở chỉ làm chuẩn đối chiếu ​

1. Tự viết phần lõi: parser DB gói trên máy, so sánh phiên bản dpkg, rpm, apk, ánh xạ dữ liệu distro sang lược đồ secdb, thuật toán so khớp, chấm điểm. 2. Dùng lại thư viện nhỏ, giấy phép dễ dãi cho phần định dạng phức tạp (ứng viên đọc rpmdb), sau khi xem xét giấy phép, kích thước, bảo trì ở P0. 3. Trivy, Grype, OpenSCAP, Vuls chỉ chạy trong môi trường kiểm thử làm chuẩn đối chiếu độ chính xác (11 mục 3), không nhúng, không phân phối. 4. Nguồn cắm được: mỗi nguồn là một adapter trong secdb-build (giao diện Source: tải tăng dần, chuẩn hóa, thống kê) sinh bản ghi advisory theo nguồn đã chuẩn hóa: (source, ecosystem, package, vuln_id, status, fixed_version, channel, severity, advisory_ids, source_record_id, published_at, modified_at, first_seen_at). Bản ghi của các nguồn không ghi đè nhau khi dựng; thêm nguồn mới không đổi bộ so khớp. 5. Chính sách ưu tiên theo distro (cấu hình đã ký trong secdb, ví dụ ubuntu: [ubuntu-osv, ubuntu-oval], debian (đang hỗ trợ): [debian-tracker, osv-debian], debian (hết hỗ trợ): [debian-elts-tracker, osv-debian]) chọn nguồn quyết định cho mỗi (ecosystem, package, vuln_id). 6. Nhanh nhất thắng, nguồn khác xác nhận: khi một nguồn chính thống trong danh sách của distro có bản ghi mới hoặc thay đổi mà nguồn ưu tiên cao hơn chưa có, bản ghi đó được dùng ngay với cờ unconfirmed; khi nguồn ưu tiên cao hơn có bản ghi, nó quyết định và cờ chuyển thành đồng ý hoặc không đồng ý. Nguồn chỉ làm giàu (NVD, KEV, EPSS, CVE List) không bao giờ quyết định trạng thái gói OS (ADR 0004). 7. Nguồn gốc trên mọi finding: decided_by (nguồn quyết định), confirmed_by[], disputed_by[] (nguồn có kết luận khác: trạng thái hoặc phiên bản sửa khác), sources_agree (bool), unconfirmed (bool). secdb mang đủ bản ghi theo nguồn để secmatch tính các trường này lúc so khớp. 8. Đối chiếu là chỉ số chất lượng: secdb-build xuất tỉ lệ đồng ý giữa các nguồn theo distro và độ trễ theo nguồn; tỉ lệ đồng ý giảm đột ngột chặn phát hành chờ duyệt (như kiểm tra số bản ghi giảm, ADR 0005 điểm 5).

Ngày quyết định
02/10/2026
Chấp nhận
02/10/2026
Phạm vi
Scanner
Người chấp nhận
Chưa ghi
  1. Đề xuất02/10/2026
  2. Chấp nhận02/10/2026
  • Trạng thái: Chấp nhận (2026-10-02, chủ dự án duyệt Q5) có sửa đổi: bộ so khớp được thiết kế với nguồn dữ liệu cắm được để thêm nhiều nguồn và đối chiếu song song (điểm 4 đến 8 dưới đây).
  • Bằng chứng: engine Go tĩnh không CGO đã cài (internal/dpkgver, internal/secmatch); so sánh phiên bản khớp dpkg --compare-versions trên 13.867 cặp; S3: trùng Trivy và Grype về phiên bản sửa trên mọi finding có bản sửa, recall 99,9% so với hợp hai công cụ; Trivy và Grype chỉ dùng ngoài sản phẩm làm chuẩn đối chiếu (tools/accuracy)
  • Ngày: 2026-10-02

Bối cảnh ​

Có các công cụ quét mã nguồn mở trưởng thành: Trivy (Apache-2.0), Grype (Apache-2.0), OpenSCAP (LGPL-2.1, thư viện C), Vuls (GPL-3.0). Sản phẩm có ràng buộc: binary tĩnh không CGO (ADR 0001 của Access Hub Agent), so khớp tập trung (ADR 0002), DB có chữ ký do nền tảng dựng (ADR 0005), gói Dedicated phân phối on-prem cho khách hàng.

Quyết định ​

  1. Tự viết phần lõi: parser DB gói trên máy, so sánh phiên bản dpkg, rpm, apk, ánh xạ dữ liệu distro sang lược đồ secdb, thuật toán so khớp, chấm điểm.
  2. Dùng lại thư viện nhỏ, giấy phép dễ dãi cho phần định dạng phức tạp (ứng viên đọc rpmdb), sau khi xem xét giấy phép, kích thước, bảo trì ở P0.
  3. Trivy, Grype, OpenSCAP, Vuls chỉ chạy trong môi trường kiểm thử làm chuẩn đối chiếu độ chính xác (11 mục 3), không nhúng, không phân phối.
  4. Nguồn cắm được: mỗi nguồn là một adapter trong secdb-build (giao diện Source: tải tăng dần, chuẩn hóa, thống kê) sinh bản ghi advisory theo nguồn đã chuẩn hóa: (source, ecosystem, package, vuln_id, status, fixed_version, channel, severity, advisory_ids, source_record_id, published_at, modified_at, first_seen_at). Bản ghi của các nguồn không ghi đè nhau khi dựng; thêm nguồn mới không đổi bộ so khớp.
  5. Chính sách ưu tiên theo distro (cấu hình đã ký trong secdb, ví dụ ubuntu: [ubuntu-osv, ubuntu-oval], debian (đang hỗ trợ): [debian-tracker, osv-debian], debian (hết hỗ trợ): [debian-elts-tracker, osv-debian]) chọn nguồn quyết định cho mỗi (ecosystem, package, vuln_id).
  6. Nhanh nhất thắng, nguồn khác xác nhận: khi một nguồn chính thống trong danh sách của distro có bản ghi mới hoặc thay đổi mà nguồn ưu tiên cao hơn chưa có, bản ghi đó được dùng ngay với cờ unconfirmed; khi nguồn ưu tiên cao hơn có bản ghi, nó quyết định và cờ chuyển thành đồng ý hoặc không đồng ý. Nguồn chỉ làm giàu (NVD, KEV, EPSS, CVE List) không bao giờ quyết định trạng thái gói OS (ADR 0004).
  7. Nguồn gốc trên mọi finding: decided_by (nguồn quyết định), confirmed_by[], disputed_by[] (nguồn có kết luận khác: trạng thái hoặc phiên bản sửa khác), sources_agree (bool), unconfirmed (bool). secdb mang đủ bản ghi theo nguồn để secmatch tính các trường này lúc so khớp.
  8. Đối chiếu là chỉ số chất lượng: secdb-build xuất tỉ lệ đồng ý giữa các nguồn theo distro và độ trễ theo nguồn; tỉ lệ đồng ý giảm đột ngột chặn phát hành chờ duyệt (như kiểm tra số bản ghi giảm, ADR 0005 điểm 5).

Hệ quả ​

  • Kiểm soát hoàn toàn độ chính xác, lược đồ DB, nhịp phát hành, giấy phép.
  • Công sức ban đầu lớn hơn (đã tính trong 12), rủi ro độ chính xác giảm bằng benchmark liên tục.
  • Không phụ thuộc lịch phát hành hay điều khoản DB của bên thứ ba.
  • Lược đồ secdb cần thêm bản ghi theo nguồn và chính sách ưu tiên (secdb v2, SDB-2); bản P1 hiện tại (một bản ghi đã gộp mỗi khóa, trường source) là trường hợp riêng một nguồn mỗi distro và tiếp tục chạy cho tới khi SDB-2 xong.
  • Kích thước DB tăng theo số nguồn (ước tính thêm 30 đến 60% với hai nguồn mỗi distro); bộ nhớ secmatch tăng tương ứng nhưng vẫn trong ngân sách nhờ chỉ mục gọn.
  • Access Hub hiển thị nguồn gốc và cờ đồng ý trên chi tiết finding (08 mục 11, phần P3).

Phương án đã cân nhắc ​

Phương ánLý do không chọn
Nhúng Trivy hoặc Grype làm thư viện trong secmatchGiấy phép mã dùng được (giữ NOTICE), nhưng gắn với lược đồ và cách phát hành DB của bên thứ ba (điều khoản thương mại của DB do bên đó phát hành: cần kiểm chứng), API thư viện không cam kết ổn định, khó tách phần so khớp khỏi phần quét trên máy, khó dựng DB ký số của riêng mình. Có thể xem lại nếu P1 trễ nặng (Q5)
OpenSCAPThư viện C cần CGO, trái binary tĩnh; LGPL đòi cho phép người dùng thay thư viện; mạnh ở kiểm tra cấu hình theo SCAP nhưng nặng
VulsGPL-3.0: phân phối trong gói Dedicated kéo theo nghĩa vụ mở mã phần kết hợp
Trang này có giúp được bạn không?
Sửa trang này

Nội dung đồng bộ từ kho mã access-hub-scanner lúc 10:57, 03/10/2026. Khi tài liệu và mã khác nhau, mã thắng.