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

Yêu cầu ​

Mã yêu cầu: SFR- chức năng, SNFR- phi chức năng. Cột P là giai đoạn dự kiến (xem 12-roadmap, đánh số mới P0 đến P10). Số đo có nhãn đích là mục tiêu đề xuất, phải kiểm chứng ở spike P0 trước khi chốt.

17 phút đọcCập nhật 03/10/2026access-hub-scanner, docs/01-requirements.md

Yêu cầu chức năng ​

Kiểm kê trên máy ​

MãYêu cầuP
SFR-01Đọc danh sách gói dpkg (/var/lib/dpkg/status): tên, phiên bản đầy đủ (epoch, upstream, revision), kiến trúc, gói nguồn và phiên bản nguồn, trạng thái cài1
SFR-02Đọc thông tin hệ điều hành từ /etc/os-release (ID, VERSION_ID, VERSION_CODENAME) và kernel đang chạy (uname), danh sách gói kernel đã cài1
SFR-03Đọc cơ sở dữ liệu rpm (BerkeleyDB trên RHEL 7 và 8 họ, SQLite trên RHEL 9 họ, NDB trên SUSE) bằng thư viện Go thuần, không gọi rpm3
SFR-04Đọc /lib/apk/db/installed (Alpine)3
SFR-05Phát hiện Ubuntu Pro hoặc ESM, luồng RHEL EUS khi đọc được từ tệp cấu hình kho (xem Q15)3
SFR-06Băm chuẩn hóa inventory (inventory_hash) để không gửi lại khi không đổi1
SFR-07Phát hiện thay đổi DB gói rẻ (so mtime và kích thước tệp DB gói) để quét sớm sau khi cài hoặc gỡ gói1

Kiểm kê mở rộng ​

MãYêu cầuP
SFR-50Dịch vụ: unit systemd (tên, trạng thái bật, trạng thái chạy, gói sở hữu unit), SysV init trên distro cũ6
SFR-51Phần mềm ngoài trình quản lý gói: snap, flatpak, binary trong /usr/local và /opt (tên, đường dẫn, kích thước, băm)6
SFR-52Thư viện ngôn ngữ ở vị trí hệ thống và thư mục quản trị viên chọn: dist-info Python, npm toàn cục, .jar, build info của binary Go; định danh purl6
SFR-53So khớp lỗ hổng cho hệ sinh thái ngôn ngữ bằng dữ liệu OSV (PyPI, npm, Maven, Go, RubyGems, Composer)6
SFR-54Kiểm kê tệp: thống kê theo gốc và danh sách tệp đáng chú ý (14 mục 6), chỉ siêu dữ liệu; danh sách đầy đủ ở lại trong chỉ mục cục bộ2, 6
SFR-55Tìm máy theo dịch vụ hoặc phần mềm trong phạm vi công ty6

So khớp lỗ hổng (tập trung) ​

MãYêu cầuP
SFR-10So khớp gói Ubuntu và Debian với dữ liệu distro (Debian Security Tracker, Ubuntu OSV hoặc OVAL), theo phiên bản phát hành1
SFR-11So khớp gói RHEL, AlmaLinux, Rocky với dữ liệu Red Hat CSAF/VEX hoặc OVAL và errata của Alma, Rocky3
SFR-12So sánh phiên bản đúng quy tắc từng hệ (dpkg, rpm, apk), có bộ kiểm thử từ dữ liệu thật1, 3
SFR-13Gộp bí danh (CVE, USN, DSA, RHSA, GHSA) về một mã chuẩn, ưu tiên CVE1
SFR-14Phân biệt trạng thái: có bản sửa, chưa có bản sửa (no_fix), distro không sửa (wont_fix), không ảnh hưởng1
SFR-15So khớp lại toàn bộ inventory đã lưu khi DB lỗ hổng cập nhật, chỉ phát delta1
SFR-16Làm giàu bằng CVSS (distro, NVD), EPSS, KEV3
SFR-17Kernel: so khớp gói kernel đang chạy, báo riêng trường hợp đã cài bản sửa nhưng chưa khởi động lại1

Kiểm tra cấu hình ​

MãYêu cầuP
SFR-20Chạy các kiểm tra AHS-* ở 05, chỉ đọc, kết quả pass, fail, error, not_applicable, unknown5
SFR-21Bật tắt từng kiểm tra theo công ty, theo tag máy (cấu hình từ Access Hub, chỉ chọn trong danh sách đã biên dịch)5
SFR-22Danh sách cổng nghe dự kiến theo máy, theo vai trò hoặc tag, so sánh tập trung5
SFR-23Kiểm tra TLS (hạn chứng chỉ, giao thức, bộ mã yếu) trên dịch vụ cục bộ5

Quét nội dung (ADR 0009) ​

MãYêu cầuP
SFR-60Lượt nội dung là unit và timer riêng (accesshub-scanner-content), chỉ chạy trong khung giờ yên tĩnh, dừng và lưu điểm dừng khi hết khung hoặc hết ngân sách2
SFR-61Phạm vi theo vị trí đích, hồ sơ gốc, gốc tùy chọn từ trung tâm (tối đa 16), danh sách cấm cứng, loại trừ của công ty, deny_roots và allow_central_roots cục bộ thắng cấu hình trung tâm2
SFR-62Lọc tệp: chỉ tệp thường, không theo symlink, không vượt điểm gắn, bỏ hệ thống tệp ảo và mạng, trần kích thước theo loại quét, nhận nhị phân bằng đuôi và magic, UTF-16 có BOM2
SFR-63Chỉ mục cục bộ tăng dần: chỉ đọc lại tệp đổi (dev, inode, size, mtime, ctime) hoặc khi phiên bản quy tắc đổi; baseline trải nhiều đêm2
SFR-64Nhường tài nguyên theo PSI (hoặc loadavg khi không có PSI), posix_fadvise, giới hạn tốc độ đọc2
SFR-65Báo cáo độ phủ: tệp hợp lệ, đã quét, bị bỏ theo lý do, baseline xong hay chưa, rules_version2

Bí mật bị lộ (14 mục 3, 4) ​

MãYêu cầuP
SFR-70Quét vị trí đích theo từng thư mục nhà và đường dẫn hệ thống (SSH, cloud CLI, Docker, kubeconfig, git, kho gói, CSDL, lịch sử shell và client CSDL, Wi-Fi, VPN)2
SFR-71Detector AHK-* biên dịch sẵn: khóa riêng, khóa cloud, token kho mã, chat, cổng thanh toán, chuỗi kết nối CSDL, gán bí mật trong .env và tệp cấu hình, JWT, Terraform state, kho khóa nhị phân, dump và sao lưu trong thư mục web2
SFR-72Bộ xác thực ngoại tuyến (checksum, phân tích PEM và OpenSSH, Luhn, cấu trúc); không xác thực sống qua mạng2
SFR-73Mức độ theo lớp detector và mức phơi nhiễm, hạ bậc ở vị trí dự kiến (14 mục 2)2
SFR-74Fingerprint có khóa hai phạm vi; Access Hub hiện "cùng bí mật trên N máy" trong một công ty2
SFR-75Bật, tắt detector theo công ty; ngoại lệ theo detector cộng mẫu đường dẫn hoặc fingerprint2, 7
SFR-76Hướng dẫn khắc phục dạng văn bản, ưu tiên xoay vòng bí mật (14 mục 8)2

Dữ liệu cá nhân (14 mục 5) ​

MãYêu cầuP
SFR-80Detector AHP-* cho CCCD, CMND, số điện thoại di động và cố định Việt Nam, email, số thẻ thanh toán (IIN, Luhn), hộ chiếu, có ngữ cảnh tiếng Việt có và không dấu4
SFR-81Gom theo tệp, match_count, độ tin cậy, ngưỡng số lượng, không preview4
SFR-82Định dạng cấu trúc: CSV, TSV, JSON, NDJSON, YAML, dump SQL văn bản; tên cột, khóa làm ngữ cảnh4
SFR-83OOXML (.xlsx, .docx) có giới hạn giải nén4
SFR-84Tắt mặc định; công ty bật, chọn hồ sơ và gốc, ngưỡng4
SFR-85Bản đồ dữ liệu cá nhân trong Access Hub: theo máy, tệp, loại, chỉ số đếm4

Báo cáo finding nội dung (ADR 0011) ​

MãYêu cầuP
SFR-90Finding nội dung chỉ mang các trường của ADR 0011 mục 2; kiểm tra ở scanner (tầng kiểu), Access Hub Collector, secmatch, Access Hub2
SFR-91Quyền security.secrets.view, security.pii.view, security.content.manage; người chỉ có security.view thấy số đếm2, 4
SFR-92Thông báo, webhook, xuất không mang đường dẫn, preview, fingerprint (xuất có đường dẫn khi người xuất có quyền tương ứng)2, 7
SFR-93Audit khi mở chi tiết finding bí mật và khi xuất2

Chấm điểm, báo cáo, quy trình ​

MãYêu cầuP
SFR-30Điểm rủi ro cho mỗi finding, máy, công ty, giải thích được từng thành phần3
SFR-31SLA theo mức ưu tiên, cấu hình theo công ty, cảnh báo sắp quá hạn và quá hạn3
SFR-32Dashboard công ty: máy dễ tổn thương nhất, theo mức độ, theo gói, KEV, xu hướng 30, 90, 365 ngày, MTTR3, 7
SFR-33Tìm máy theo gói và phiên bản ("máy nào có openssl dưới 3.0.2-0ubuntu1.15") trong phạm vi công ty3
SFR-34Ngoại lệ: chấp nhận rủi ro, dương tính giả, có biện pháp bù; có lý do, người duyệt, hạn dùng, tự mở lại khi hết hạn7
SFR-35Thông báo và webhook: finding ưu tiên cao mới, CVE trở thành KEV, SLA sắp quá hạn, ngoại lệ sắp hết hạn, máy lâu không quét7
SFR-36Xuất CSV, XLSX, PDF báo cáo theo công ty7
SFR-37API v1 cho toàn bộ chức năng, theo quy ước API của Access Hub3, 7
SFR-38Thống kê tổng hợp ẩn danh cho nền tảng (không tên công ty, không tên máy, ngưỡng k)7
SFR-39Hướng dẫn khắc phục dạng văn bản (lệnh gợi ý để người dùng tự chạy), không có nút thực thi3

Vận hành ​

MãYêu cầuP
SFR-40Gói .deb, .rpm cho scanner, systemd service và timer, gỡ sạch1
SFR-41DB lỗ hổng dựng hằng ngày, ký, phát hành; secmatch tự kéo và xác minh1
SFR-42Dedicated offline: nhập gói DB bằng tay, cảnh báo DB cũ10
SFR-43Xóa toàn bộ dữ liệu quét khi xóa vĩnh viễn máy hoặc công ty1
SFR-44Windows: kiểm kê bản cài và KB, so khớp với dữ liệu Microsoft8
SFR-45Container: kiểm kê image của container đang chạy trên máy9

Yêu cầu phi chức năng ​

Ngân sách tài nguyên trên máy ​

Access Hub Agent có ngân sách CPU trung bình dưới 1% một lõi, RSS dưới 50 MB (ANFR-01, ANFR-02 của Agent) và giới hạn cứng MemoryMax=96M, CPUQuota=25% trong unit. Scanner là tiến trình chạy rồi thoát (systemd timer, Type=oneshot), nên ngân sách tính theo mỗi lần chạy và theo trung bình ngày.

MãYêu cầuSố đo (đích)
SNFR-01CPU một lần quét inventory (máy 3.000 gói)Không quá 3 giây CPU
SNFR-02CPU một lần quét đầy đủ (lượt siêu dữ liệu: inventory cộng mọi kiểm tra P5, phạm vi duyệt lstat mặc định)Không quá 60 giây CPU, thời gian thực không quá 10 phút
SNFR-03CPU trung bình ngàyKhông quá 0,1% một lõi (khoảng 86 giây CPU mỗi ngày)
SNFR-04Bộ nhớ đỉnhRSS không quá 128 MB, giới hạn cứng MemoryMax=192M
SNFR-05IODuyệt tệp tối đa 200.000 inode mỗi lần, đọc không quá 300 MB, IOSchedulingClass=idle, Nice=19. Vượt giới hạn thì dừng duyệt, đánh dấu truncated
SNFR-06ĐĩaSpool tối đa 5 MB, giữ tối đa 2 báo cáo, log xoay vòng tối đa 10 MB
SNFR-07Khi rảnhKhông có tiến trình thường trú, RSS bằng 0 giữa hai lần chạy
SNFR-08Kích thước binaryKhông quá 25 MB (chờ spike S1 đo thư viện đọc rpmdb)
SNFR-09Không mạngScanner chạy với RestrictAddressFamilies=AF_UNIX, IPAddressDeny=any (ngoại lệ có kiểm soát cho TLS cục bộ, xem 05 và Q17)
SNFR-10Không ghi ngoài thư mục của mìnhProtectSystem=strict, ReadWritePaths chỉ gồm spool và log
SNFR-11Băng thôngBáo cáo đầy đủ không quá 150 KB sau nén cho 3.000 gói. Không đổi thì chỉ gửi băm (dưới 1 KB)

Lượt nội dung (ADR 0009) có ngân sách riêng, chạy bằng unit riêng trong khung giờ yên tĩnh:

MãYêu cầuSố đo (đích)
SNFR-12CPU mỗi lượt nội dungCPUQuota=25%, Nice=19, tối đa 300 giây CPU mỗi lượt
SNFR-13Bộ nhớ lượt nội dungRSS đỉnh không quá 192 MB, MemoryMax=256M
SNFR-14IO lượt nội dungIOSchedulingClass=idle, tốc độ đọc tối đa 16 MiB/s, tối đa 1 GiB mỗi lượt (miền 128 MiB đến 4 GiB), tối đa 1.000.000 mục duyệt, POSIX_FADV_DONTNEED sau mỗi tệp
SNFR-15CPU trung bình ngày khi bật quét nội dung, sau baselineKhông quá 0,5% một lõi (khoảng 432 giây CPU mỗi ngày) gồm cả lượt siêu dữ liệu
SNFR-16BaselineMáy có tới 5 GiB nội dung hợp lệ sau lọc: xong trong 5 đêm
SNFR-17Nhường tài nguyênPSI some avg10 CPU trên 40% hoặc IO trên 20% thì dừng 30 giây; p99 của tải chuẩn tăng không quá 5% khi lượt nội dung chạy (10 mục 6.3)
SNFR-18Đĩa cho trạng thái nội dungChỉ mục cục bộ tối đa 64 MiB; phần nội dung của báo cáo tối đa 256 KB sau nén
SNFR-19Không core dumpLimitCORE=0 cho cả hai unit

Tần suất quét ​

MãYêu cầuMặc định đề xuất
SNFR-20Timer kiểm tra thay đổi DB góiMỗi giờ, RandomizedDelaySec=30min, chi phí chỉ là stat
SNFR-21Inventory đầy đủKhi DB gói đổi, và ít nhất mỗi 24 giờ
SNFR-22Kiểm tra cấu hìnhMỗi 24 giờ, giờ chạy lệch ngẫu nhiên theo máy
SNFR-23Trần tần suất theo góiTham số security_scan_min_interval_hours (Q10)
SNFR-24So khớp lại tập trungMỗi lần DB lỗ hổng đổi (thường mỗi ngày), không cần máy làm gì
SNFR-25Độ trễ phát hiệnCVE mới có trong DB thì finding xuất hiện trên Access Hub không quá 2 giờ sau khi secmatch nạp DB
SNFR-26Khung giờ yên tĩnh của lượt nội dungMặc định 01:00 đến 05:00 giờ máy, khởi động lệch ngẫu nhiên trong 60 phút đầu; công ty và quản trị viên máy chỉnh được (Q38)
SNFR-27Độ trễ phát hiện nội dungBí mật hoặc dữ liệu cá nhân mới xuất hiện trên Access Hub sau lượt nội dung kế tiếp (thường trong 24 giờ) khi baseline đã xong

Chế độ offline ​

MãYêu cầuSố đo
SNFR-30Máy mất mạngScanner vẫn chạy, spool giữ báo cáo mới nhất (bản sau thay bản trước), Agent gửi khi có mạng
SNFR-31Dedicated không InternetNhập gói DB ký số bằng tay (USB, kho nội bộ), secmatch xác minh chữ ký và chống quay lui phiên bản
SNFR-32DB cũAccess Hub hiện cảnh báo khi DB cũ hơn 3 ngày (cloud) hoặc ngưỡng cấu hình (Dedicated, mặc định 14 ngày); finding vẫn hiển thị kèm ngày DB
SNFR-33Secmatch mất kết nối Access HubOutbox bền vững giữ delta ít nhất 24 giờ (giống NFR-08 của Collector)

Chất lượng và an toàn ​

MãYêu cầuSố đo (đích)
SNFR-40Độ chính xác gói OS (distro chính thức)Trên bộ ground truth đã đối soát (11): recall không dưới 95%, precision không dưới 95%
SNFR-41Cô lập tenantKhông có đường nào đọc, ghi, xóa dữ liệu quét của công ty khác. Kiểm thử hai công ty ở scanner spool, Collector, secmatch, Access Hub
SNFR-42Không giá trị rời máy (yêu cầu cứng)Bộ kiểm thử "không giá trị rời máy" (11 mục 2.1, ADR 0011 mục 8) đạt ở mọi bản phát hành: không canary nào (hoặc biến thể base64, hex, URL-encode) xuất hiện trong spool, log, stdout, stderr, scan --print, chỉ mục, payload sau Collector và secmatch, sự kiện gửi Access Hub; preview không dài hơn mức cho phép; sensitive_data không có preview; K_host không xuất hiện ngoài tệp khóa. Thất bại là chặn phát hành
SNFR-43Sức chứa secmatch10.000 máy, 3.000 gói mỗi máy: so khớp lại toàn bộ dưới 30 phút trên 4 vCPU, 16 GB (đích, spike S5)
SNFR-44Tương thíchSecmatch nhận schema_version N và N-1 của báo cáo ít nhất 12 tháng
SNFR-45Quan sát đượcSecmatch có /metrics, /healthz, /readyz, log JSON có request_id; scanner ghi scan_stats trong báo cáo
SNFR-46Trang Access HubDanh sách finding 100.000 dòng của một công ty: p95 dưới 1 giây với bộ lọc có chỉ mục
SNFR-47Độ chính xác bí mậtDetector độ tin cậy high: precision và recall không dưới 90% trên bộ mẫu (11 mục 2.2)
SNFR-48Độ chính xác dữ liệu cá nhânDetector độ tin cậy high (CCCD có ngữ cảnh, thẻ đạt Luhn): precision không dưới 95% trên bộ mẫu; tỷ lệ finding low trên máy sạch được đo và công bố
SNFR-49Thông lượng phát hiệnKhông dưới 30 MiB/s mỗi lõi cho bộ quy tắc bí mật đầy đủ, không dưới 60 MiB/s mỗi lõi cho bộ tách dữ liệu cá nhân (S6)
SNFR-50Cô lập tenant cho dữ liệu mớiFinding nội dung, phần mềm, dịch vụ, thống kê tệp có company_id ở mọi kho; kiểm thử hai công ty như SNFR-41; fingerprint của hai công ty không so được với nhau

Ma trận hệ điều hành ​

Hệ điều hànhInventoryDữ liệu lỗ hổngKiểm tra cấu hìnhP
Ubuntu 20.04, 22.04, 24.04 LTSdpkgUbuntu (OSV hoặc OVAL), USNCó1, 5
Ubuntu 18.04dpkgNhư trên, phần lớn bản sửa chỉ ở ESMCó, cộng cảnh báo hết hỗ trợ1
Debian 10, 11, 12dpkgDebian Security Tracker, DSA, DLACó1, 5
RHEL, AlmaLinux, Rocky 8, 9rpm (BDB, SQLite)Red Hat CSAF/VEX hoặc OVAL, ALSA, RLSACó3, 5
RHEL, CentOS 7rpm (BDB)Red Hat; CentOS 7 đã hết vòng đờiCó, cộng cảnh báo hết hỗ trợ3
Amazon Linux 2, 2023rpmALAS (cần khảo sát nguồn, Q15)Có3 hoặc sau
SUSE, openSUSErpm (NDB)SUSE OVAL hoặc CSAFBest-effortSau P5
AlpineapkAlpine secdbMột phần3 (chủ yếu cho P9 container)
WindowsRegistry, KBMicrosoft (MSRC)Tập con8

Agent hỗ trợ Ubuntu 18.04 trở lên, Debian 10 trở lên, RHEL họ 7 trở lên, Amazon Linux 2 trở lên (docs/02-requirements.md của Agent). Scanner chỉ chạy khi Agent đã cài (ADR 0001), nên ma trận scanner là tập con của ma trận Agent.

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.