지난주 저는 제 홈랩(homelab)에서 trivy를 대체하기 위해 sieve를 작성했습니다. 몇몇 분들이 실제로 어떻게 실행하는지 물어보셔서 이 짧은 버전을 작성하게 되었습니다. 긴 버전의 가이드는 저장소의 docs/SETUP.md를 참고해 주세요.
이번에는 제가 다르게 한 점이 있습니다: 이 가이드가 테스트되었다는 것입니다. GitHub 작업(job)이 SETUP.md에서 명령어를 가져와 매주 완전히 새로운 Ubuntu 머신에서 실행합니다. 만약 단계 중 하나라도 문제가 생기면, 여러분이 어렵게 알아내기 전에 작업이 빨간색으로 표시됩니다.
sieve's setup steps running on a fresh GitHub runner: install with pipx, scan the host, scan a running Debian 12 container
이것은 오늘 실행된 실제 결과입니다. 재미있는 점은, 신선한 GitHub runner도 깨끗하지 않다는 것입니다: 32,445개의 발견 사항 중 9개는 현재 활발하게 악용되고 있는(아직 패치가 없는 모든 커널 도구 패키지), 31개는 수정 가능한 항목입니다.
설치 (Install)
Linux와 Python 3.10 이상이 필요합니다. 데이터베이스, 서버, API 키는 필요하지 않습니다.
pipx install git+https://github.com/casareanderson/sieve
sieve --version
만약 command not found가 표시되면, pipx ensurepath를 실행하고 새 터미널을 여세요.
현재 사용 중인 박스 스캔 (Scan the box you're on)
첫 실행은 느립니다. CISA 알려진 악용 목록(known-exploited list)과 EPSS 점수를 다운로드하고 모든 패키지에 대해 OSV.dev에 문의하기 때문입니다. 그 이후부터는 캐시됩니다.
위에서 아래로 읽어보세요. KEV 열에 ⚠ 표시가 있다는 것은 누군가가 지금 그것을 악용하고 있다는 의미입니다.
sieve collector | ssh root@dockerhost python3 - > packages.tgz
sieve containers --from-tar packages.tgz
스케줄링 설정하기
제가 실제로 사용할 라인은 수정 가능한 항목에 대해서만 경고합니다:
0 7 * * 1 sieve all --fixable-only --min-severity high
가이드에는 Docker 이미지와 GitHub Action도 있습니다.
CI(지속적 통합)가 증명할 수 없는 것
이 부분은 그렇지 않습니다. 주간 실행은 설치(install), 호스트 스캔(host scan), JSON 출력, 실제 컨테이너 스캔, 그리고 Docker 이미지를 다룹니다. 하지만 사용자가 사용하는 배포판(distro)의 피드 동작 방식까지는 알려주지 못합니다: Fedora, RHEL, Arch는 OS 자체 패키지가 아닌 Python 및 컨테이너 언어 패키지만 검사됩니다.
전체 가이드: github.com/casareanderson/sieve/blob/main/docs/SETUP.md
집에서 타이머로 스캐너를 실행하는 다른 분 계신가요? "아직 수정 불가(no fix yet)" 항목은 어떻게 처리하시나요?
🤖 개인 홈랩 노트, 로그 및 리포지토리에서 AI의 도움을 받아 초안 작성 후, 출판 전에 검토하고 편집했습니다.