← 모든 취약점 점검 도구// Linux · Docker · PHP · JavaScript · Python

내 서버에서 알려진 취약점이 있는 소프트웨어가 실행되고 있을까?

무료2026. 11. 3. 게시

대부분의 공격에는 새로운 취약점이 필요하지 않습니다. 몇 달 전에 공개되었지만 아무도 업그레이드하지 않은 라이브러리의 취약점을 이용합니다. 외부 스캔으로는 이를 볼 수 없습니다. 내 서버는 내부에서 OS, 그 위의 소프트웨어, 언어, 애플리케이션의 모든 라이브러리를 살펴보고 무엇부터 업그레이드해야 하는지 알려줍니다.

서버 점검

  1. 서버에 wpsbom(오픈 소스, 읽기 전용)을 설치합니다:
    curl -fsSL https://raw.githubusercontent.com/ice-s/wpsbom/main/install.sh | sh
  2. 서버, 애플리케이션 디렉터리, 실행 중인 컨테이너를 스캔합니다:
    sudo wpsbom scan / --path /srv/shop --docker \
      --out-dir scans/ -o cyclonedx-json
  3. scans/host-host.cdx.json을 내 서버에 업로드합니다.
스캔 파일 업로드
My Server 취약점 일러스트

서버 자체를 점검해야 하는 이유

웹사이트 스캔은 서버가 외부에 보여주는 것, 즉 헤더, 노출된 파일, TLS만 볼 수 있습니다. 세 단계 아래의 Composer 패키지, 빌드에 쓰이는 npm 의존성, 백그라운드 워커의 Python 라이브러리에 공개된 CVE가 있는지는 알 수 없습니다. 그리고 익스플로잇이 공개되자마자 공격자가 스캔하는 대상이 바로 이것들입니다.

확실한 방법은 실제로 설치된 것을 나열하고 취약점 데이터베이스와 비교하는 것뿐입니다. 이 점검은 OSV와 실제 악용된 취약점 목록인 CISA KEV를 기준으로 바로 그 작업을 수행합니다.

점검 대상

서버를 아래에서 위로 쌓인 스택으로 읽습니다:

  1. 운영체제: 배포판과 커널.
  2. 시스템 라이브러리와 설치된 소프트웨어: openssl, nginx, docker, redis…
  3. 언어와 프레임워크: PHP와 Laravel, JavaScript와 Vue, Python…
  4. 언어 라이브러리: 각 애플리케이션의 Composer, npm, PyPI 패키지(직접 및 전이 의존성).

--docker를 지정하면 실행 중인 모든 컨테이너도 이미지를 내보내지 않고 그 자리에서 읽습니다.

점검 방법

wpsbom은 Linux와 macOS용 단일 오픈 소스 바이너리입니다. 파일을 읽기만 하며, 요청하지 않는 한 아무것도 전송하지 않습니다.

curl -fsSL https://raw.githubusercontent.com/ice-s/wpsbom/main/install.sh | sh

코드가 어디에 있는지 추측할 수 없으므로, 각 애플리케이션 디렉터리를 --path로 필요한 만큼 지정하세요:

sudo wpsbom scan / --path /srv/shop --path /srv/worker --docker \
  --out-dir scans/ -o cyclonedx-json

몇 초 후 scans/에 서버용 파일 하나와 컨테이너 이미지별 파일이 하나씩 생성됩니다. 그런 다음 로그인하여 계정 메뉴에서 내 서버를 열고, 프로젝트 이름을 입력한 뒤 서버를 선택하고 파일을 끌어다 놓으세요:

내 서버 프로젝트를 생성하고 스캔 파일을 끌어다 놓는 화면
서버 또는 이미지마다 프로젝트 하나. 다시 업로드하면 이전 스캔을 대체합니다.
  • OS 패키지 없이 애플리케이션 라이브러리만: --no-os.
  • 단일 이미지: wpsbom scan --image acme/shop:1.4 -o cyclonedx-json=shop.cdx.json.
  • syft, Trivy, cdxgen으로 만든 파일(CycloneDX 또는 SPDX JSON)도 사용할 수 있습니다.

결과 읽는 법

소프트웨어 스택은 서버를 한눈에 요약합니다. 각 블록에는 패키지와 심각도별 미해결 취약점이 표시되고, 블록의 왼쪽 테두리는 가장 심각한 취약점의 색을 띱니다. 블록을 클릭하면 해당 부분만 볼 수 있습니다.

데모 서버의 소프트웨어 스택: OS, 설치된 소프트웨어, 언어, 라이브러리
데모 데이터. 라이브러리는 해당 언어 바로 위에 놓입니다.

취약점 목록도 같은 방식으로 계층화되어 있습니다. 위치는 패키지가 어느 애플리케이션에 속하는지, 직접 의존성인지 전이 의존성인지를 알려주고, 수정 버전은 버전과 복사할 수 있는 명령을 제공합니다.

스택 계층별로 그룹화된 취약점, 수정 버전과 업그레이드 명령
데모 데이터: CISA KEV에 등재된 취약점이 있는 Vite 릴리스.

무엇부터 수정할까

  1. 악용됨(KEV)과 심각(Critical): 실제 서버를 대상으로 사용되고 있으므로 오늘 업그레이드하세요.
  2. 애플리케이션의 직접 의존성: 이를 업그레이드하면 보통 전이 의존성도 수정된 버전으로 함께 업데이트됩니다.
  3. dev 패키지(빌드 도구)는 프로덕션 서버에서 빌드를 실행하지 않는 한 덜 중요합니다.

업그레이드 후 다시 스캔하고 업로드하면 남은 항목이 표시됩니다. 수동 작업 없이 최신 상태를 유지하려면 통합에서 API 토큰을 생성하고, 예를 들어 매일 실행되는 cron 작업에서 wpsbom이 스캔을 전송하도록 하세요:

export WPSBOM_TOKEN=wp_…
sudo -E wpsbom push / --project demo-web-01 \
  --path /srv/shop --path /srv/worker --docker

자주 묻는 질문

Watchpost가 제 서버에 접속하나요? 아니요. 스캔은 사용자가 실행하며, 업로드한 파일만 읽습니다.

무엇이 전송되나요? 패키지 이름, 버전, 잠금 파일 경로입니다. 소스 코드, 설정, 비밀 정보는 전송되지 않습니다. 호스트 이름은 해시로 대체되고, 업로드한 파일 자체는 보관되지 않으며, 프로젝트는 본인 계정에서만 볼 수 있습니다.

어떤 시스템을 지원하나요? wpsbom은 Debian, Ubuntu, Alpine 패키지와 Composer, npm / yarn, PyPI, Go, RubyGems 라이브러리를 읽습니다. 다른 도구로 만든 파일이라면 Maven과 NuGet 라이브러리도 매칭됩니다. OS 패키지는 목록에 표시되지만 아직 취약점과 매칭되지 않습니다.

Kubernetes는요? wpsbom k8s가 클러스터에서 실행되어 각 워크로드를 해당 이미지의 스캔과 연결합니다.

이 점검 도구는 한 가지 질문에만 답합니다. 무료 스캔은 누구나 볼 수 있는 50가지 이상의 항목(노출된 파일, 유출된 키, TLS, 헤더, DNS)을 점검하며, 도메인을 인증하면 200가지 이상의 심층 점검을 이용할 수 있습니다.

전체 스캔 실행