← Tất cả công cụ kiểm tra lỗ hổng// Linux · Docker · PHP · JavaScript · Python

Máy chủ của bạn có đang chạy phần mềm có lỗ hổng đã biết?

Miễn phíĐăng ngày 3 thg 11, 2026

Phần lớn các vụ tấn công không cần lỗ hổng mới: chúng dùng lỗ hổng đã công bố từ nhiều tháng trước, trong một thư viện không ai nâng cấp. Quét từ bên ngoài không thấy được những thứ đó. Máy chủ của tôi nhìn từ bên trong — hệ điều hành, phần mềm cài trên đó, ngôn ngữ và mọi thư viện của ứng dụng — rồi cho bạn biết cần nâng cấp gì trước.

Kiểm tra máy chủ của bạn

  1. Cài wpsbom (mã nguồn mở, chỉ đọc) lên máy chủ:
    curl -fsSL https://raw.githubusercontent.com/ice-s/wpsbom/main/install.sh | sh
  2. Quét máy chủ, thư mục ứng dụng và các container đang chạy:
    sudo wpsbom scan / --path /srv/shop --docker \
      --out-dir scans/ -o cyclonedx-json
  3. Tải file scans/host-host.cdx.json lên Máy chủ của tôi.
Tải file quét lên
Hình minh hoạ lỗ hổng My Server

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:

  1. Hệ điều hành: bản phân phối và kernel.
  2. Thư viện hệ thống và phần mềm cài trên OS: openssl, nginx, docker, redis…
  3. Ngôn ngữ lập trình và framework: PHP với Laravel, JavaScript với Vue, Python…
  4. 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 | sh

Nó 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-json

Và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:

Tạo dự án Máy chủ của tôi và kéo thả file quét
Mỗi máy chủ hoặc image một dự án. Tải file mới lên sẽ thay lần quét trước.
  • 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 đó.

Ngăn xếp phần mềm của một máy chủ demo: hệ điều hành, phần mềm, ngôn ngữ, thư viện
Dữ liệu demo. Thư viện nằm thẳng trên ngôn ngữ của 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.

Lỗ hổng nhóm theo tầng, kèm phiên bản đã vá và lệnh nâng cấp
Dữ liệu demo: một bản Vite có lỗ hổng nằm trong danh sách CISA KEV.

Xử lý gì trước

  1. Đ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.
  2. 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.
  3. 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 --docker

Câ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ộ