본문으로 건너뛰기
로그인 둘러보기
개발·코딩·데이터베이스 · 보안·개인정보 · 윈도우즈 유틸

ojo

0

ojo는 의존성, 비밀 정보, 설정 오류, 코드의 취약점을 점검하는 오픈 소스 보안 스캐너입니다. colibrisec에서 개발한 CLI 도구로, 단일 Go 바이너리 형태로 배포되며 데몬이나 별도의 로컬 데이터베이스 없이 실행됩니다.

보안보안 스캐너취약점 스캐너

소개

ojo는 의존성, 비밀 정보, 설정 오류, 코드의 취약점을 점검하는 오픈 소스 보안 스캐너입니다. colibrisec에서 개발한 CLI 도구로, 단일 Go 바이너리 형태로 배포되며 데몬이나 별도의 로컬 데이터베이스 없이 실행됩니다. 파일 시스템, 소스 저장소, 컨테이너 이미지를 대상으로 스캔할 수 있도록 설계되었습니다.

상세정보

의존성 취약점 스캔 (Vulnerability)

저장소의 의존성 manifest에서 알려진 CVE를 탐지하며, Alpine, Debian, Ubuntu 기반 컨테이너 OS 패키지의 취약점도 점검합니다. 데이터 소스로 OSV.dev를 활용하며, 기본적으로 활성화되어 있습니다.

비밀 정보 스캔 (Secret)

하드코딩된 자격 증명, API 키, 토큰, 개인 키 등 코드에 포함된 민감 정보를 식별합니다. 이 스캐너는 --scanners secret 옵션으로 명시적으로 활성화해야 합니다.

설정 오류 스캔 (Misconfiguration)

Dockerfile, Kubernetes 매니페스트, Terraform 등 IaC(Infrastructure as Code) 파일에서 보안 설정 오류를 찾습니다. --scanners misconfig 옵션으로 활성화하며, AWS, Azure, GCP, CloudFormation 자산을 대상으로 확장되어 왔습니다.

코드 정적 분석 (SAST)

소스 코드 수준에서 인젝션, 약한 암호화 등의 보안 결함을 정적 분석으로 탐지합니다. Go는 go/ast 기반으로 분석하며, Python, JavaScript/TypeScript, PHP, Ruby, Java는 tree-sitter 기반으로 분석합니다. --scanners sast 옵션으로 활성화합니다.

SBOM 출력 지원

모든 스캔 명령은 -f sbom 옵션을 통해 CycloneDX 형식의 SBOM(소프트웨어 자재 명세서)을 출력할 수 있습니다.

설치 방법

다양한 운영체제별 설치 경로가 공식 README에 안내되어 있습니다.

  • Windows: winget을 통한 설치 (MSI 설치 프로그램은 Wix 형식).
  • macOS: Homebrew tap을 통한 설치.
  • Debian/Ubuntu: .deb 패키지 설치.
  • Fedora/RHEL: .rpm 패키지 설치.
  • Linux: Snap 스토어에서 설치 (명령은 ojo-scanner).
  • 컨테이너: Docker 이미지(ghcr.io/colibrisec/ojo:latest) 실행.
  • Go 환경: go install을 통한 설치.

미리 빌드된 바이너리(Linux/macOS/Windows, amd64 및 arm64)와 체크섬은 GitHub Releases 페이지에서 제공됩니다. 전체 설치 안내와 MSI/deb/rpm 다운로드 링크는 공식 문서의 installation 가이드에 정리되어 있습니다.

기본 사용법

설치 후 터미널에서 ojo 명령으로 스캔을 실행합니다. 대표적인 사용 예는 다음과 같습니다.

  • ojo fs .: 현재 저장소에서 의존성 취약점을 스캔합니다.
  • ojo image python:3.14-slim: 지정한 컨테이너 이미지의 OS 패키지 취약점을 스캔합니다.
  • -f sbom: 어떤 명령과 함께든 CycloneDX SBOM을 출력합니다.

상세한 CLI 레퍼런스와 스캐너별 가이드, 지원 범위 매트릭스는 공식 문서 사이트(docs/)에 정리되어 있으며, MkDocs Material로 빌드된 문서를 로컬에서 mkdocs serve로 열람할 수 있습니다.

활용 예시

  • 저장소 단위 의존성 점검: ojo fs .로 프로젝트 루트를 스캔해 manifest에 명시된 라이브러리의 알려진 CVE를 확인합니다.
  • 컨테이너 이미지 점검: ojo image <이미지 태그>로 컨테이너 OS 패키지의 취약점을 진단합니다.
  • SBOM 발급: -f sbom 옵션을 더해 CycloneDX 형식의 자재 명세서를 생성합니다.
  • IaC 점검: Dockerfile, Kubernetes 매니페스트, Terraform 코드를 --scanners misconfig로 점검합니다.

소스에서 빌드하기

README에 안내된 빌드 절차는 다음과 같습니다.

  1. 저장소를 클론합니다: git clone https://github.com/colibrisec/ojo.git.
  2. Go 1.22 이상을 설치한 뒤 go build -o ojo .를 실행합니다.

제한 및 확인 사항

  • README에서 ojo는 아직 초기 단계의 소프트웨어로 명시되어 있으며, rpm 기반 컨테이너 이미지와 의존성 라이선스 스캔 등은 현재 지원되지 않습니다.
  • Secret, Misconfiguration, SAST 스캐너는 기본적으로 비활성화되어 있어 --scanners 플래그로 명시적으로 켜야 합니다.
  • 설정은 CLI 플래그로만 제공되며, 별도의 설정 파일 기반 구성은 README에 안내되어 있지 않습니다.
  • 라이선스는 GPL-2.0이며, 자세한 조건은 저장소의 LICENSE 파일에서 확인할 수 있습니다.

시스템 요구사항

GitHub 저장소의 README에 따르면 빌드에는 Go 1.22 이상이 필요합니다. winget 패키지 설치 시 Windows에서 동작하며, winget이 설치된 Windows 10 이상의 환경을 가정합니다.