Vì sao phải kiểm tra từ bên trong máy chủ
Quét website chỉ thấy những gì máy chủ để lộ ra ngoài: header, file bị lộ, TLS. Nó không thấy được một gói Composer nằm sâu ba tầng, một thư viện npm dùng khi build hay thư viện Python của tiến trình chạy nền đang có CVE — trong khi đó chính là thứ kẻ tấn công dò tìm ngay khi có mã khai thác công khai.
Cách chắc chắn duy nhất là liệt kê những gì thực sự đang cài và đối chiếu với các cơ sở dữ liệu lỗ hổng. Công cụ này làm đúng việc đó, với OSV và danh sách lỗ hổng đang bị khai thác của CISA (KEV).
Kiểm tra những gì
Máy chủ được đọc như một ngăn xếp, từ dưới lên:
- Hệ điều hành: bản phân phối và kernel.
- Thư viện hệ thống và phần mềm cài trên OS: openssl, nginx, docker, redis…
- Ngôn ngữ lập trình và framework: PHP với Laravel, JavaScript với Vue, Python…
- Thư viện của ngôn ngữ: các gói Composer, npm, PyPI của từng ứng dụng, trực tiếp và gián tiếp.
Với --docker, mọi container đang chạy cũng được đọc tại chỗ, không cần xuất image.
Cách kiểm tra
wpsbom là một file chạy mã nguồn mở cho Linux và macOS. Nó chỉ đọc file và không gửi gì đi nếu bạn không yêu cầu.
curl -fsSL https://raw.githubusercontent.com/ice-s/wpsbom/main/install.sh | shNó không tự đoán được mã nguồn nằm ở đâu, nên hãy chỉ từng thư mục ứng dụng bằng --path, bao nhiêu cũng được:
sudo wpsbom scan / --path /srv/shop --path /srv/worker --docker \
--out-dir scans/ -o cyclonedx-jsonVài giây sau, thư mục scans/ có một file cho máy chủ và một file cho mỗi image container. Sau đó đăng nhập, mở Máy chủ của tôi từ menu tài khoản, đặt tên dự án, chọn Máy chủ và kéo thả file vào:

- Chỉ lấy thư viện ứng dụng, bỏ gói hệ điều hành:
--no-os. - Quét một image:
wpsbom scan --image acme/shop:1.4 -o cyclonedx-json=shop.cdx.json. - File từ syft, Trivy hay cdxgen cũng dùng được (CycloneDX hoặc SPDX JSON).
Đọc kết quả
Ngăn xếp phần mềm tóm tắt cả máy chủ: mỗi ô ghi số gói và số lỗ hổng theo mức độ, viền trái mang màu của lỗ hổng nặng nhất. Bấm vào một ô để chỉ xem phần đó.

Danh sách lỗ hổng lồng nhau theo cùng cách. Cột Vị trí cho biết gói thuộc ứng dụng nào, là thư viện trực tiếp hay gián tiếp; cột Đã vá ở ghi phiên bản và lệnh để sao chép.

Xử lý gì trước
- Đang bị khai thác (KEV) và Nghiêm trọng: đang được dùng để tấn công máy chủ thật; nâng cấp ngay hôm nay.
- Thư viện trực tiếp của ứng dụng: nâng cấp chúng thường kéo theo bản đã vá của thư viện gián tiếp.
- Gói dev (công cụ build) ít quan trọng hơn trên máy chủ production, trừ khi bạn build ngay trên đó.
Sau khi nâng cấp, quét và tải lên lại: danh sách cho thấy những gì còn sót. Để luôn cập nhật mà không phải làm tay, hãy tạo API token ở mục Tích hợp để wpsbom tự gửi kết quả, ví dụ bằng cron chạy hằng ngày:
export WPSBOM_TOKEN=wp_…
sudo -E wpsbom push / --project demo-web-01 \
--path /srv/shop --path /srv/worker --dockerCâu hỏi thường gặp
Watchpost có kết nối vào máy chủ của tôi không? Không. Bạn tự chạy lệnh quét; chỉ file bạn tải lên được đọc.
Những gì được gửi đi? Tên gói, phiên bản và đường dẫn file lock. Không có mã nguồn, cấu hình hay mật khẩu. Tên máy được thay bằng mã băm, file tải lên không được lưu, và dự án chỉ tài khoản của bạn xem được.
Hỗ trợ hệ thống nào? wpsbom đọc gói Debian, Ubuntu, Alpine và thư viện Composer, npm / yarn, PyPI, Go, RubyGems; thư viện Maven và NuGet cũng được đối chiếu nếu file đến từ công cụ khác. Gói hệ điều hành được liệt kê nhưng chưa được đối chiếu lỗ hổng.
Kubernetes thì sao? wpsbom k8s chạy trong cluster và liên kết từng workload với bản quét image của nó.
Công cụ này chỉ trả lời một câu hỏi. Lượt quét miễn phí kiểm tra thêm hơn 50 vấn đề ai cũng nhìn thấy được — file lộ, khoá bị lộ, TLS, header, DNS — và khi xác minh tên miền, bạn mở thêm hơn 200 bước kiểm tra sâu.
Quét toàn bộ