snyk : 오픈 소스 취약점 진단 툴

■관련 용어
  ·IaC: 코드형 인프라(Infrastructure as Code, IaC)
    하드웨어 및 수동 프로세스가 아닌 소프트웨어 및 자동화된 프로세스를 통해 인프라를 관리하고 프로비저닝하는 방식.
    Snyk에서는 외부 Git(SCM)과 연동하여 소스코드를 자동으로 내려받아 진단해 주는 프로세스를 의미.
    https://www.vmware.com/kr/topics/glossary/content/infrastructure-as-code.html
    https://osbc.co.kr/page/oss_snyk_iac

  ·SBOM(Software Bill Of Materials):
    소프트웨어의 구성 요소를 나타내는 메타데이터를 의미.

■snyk 기본 설명:
  https://snyk.io/product/open-source-security-management/

■지원하는 언어 목록
  https://docs.snyk.io/scan-using-snyk/supported-languages-and-frameworks

■Snyk CLI 실행을 위한 환경 설정
  https://docs.snyk.io/snyk-cli/configure-the-snyk-cli/environment-variables-for-snyk-cli

■Snyk CLI 기본 옵션 정리
  https://docs.snyk.io/snyk-cli/commands

■Snyk SaaS 서비스를 위한 방화벽 설정
  https://docs.snyk.io/snyk-cli/security-concept-of-operations-for-snyk/access-requirements

■결과 출력 포맷
  https://docs.snyk.io/snyk-cli/scan-and-maintain-projects-using-the-cli/cli-tools
  Text: 기본
  JSON: --json 옵션 사용
  HTML: snyk-to-html 플러그인 사용

■라이선스
  https://snyk.io/plans/
  ·Free: $0
    Open Source: 200번 진단/월
    SAST: 100번 진단/월
  ·Team: 개발자 1인당 $52/월
    Open Source: 무제한
    SAST: 무제한
    ※Jira 통합
  ·Enterprise: IaC, Container(docker, Kubernetes) 통합 추가 선택 가능

-----------------------------------------------------------

■기본 사용법 및 테스트

  1.Download & Install Snyk CLI
    https://docs.snyk.io/snyk-cli/install-or-update-the-snyk-cli

    >>윈도우 버전 다운로드:
    https://static.snyk.io/cli/latest/snyk-win.exe

    >>리눅스 버전 다운로드
    https://static.snyk.io/cli/latest/snyk-linux

    단일 실행파일로 설치과정은 필요없으나 PATH에는 잡혀 있어야 한다.

  2.사용자 인증
    https://docs.snyk.io/snyk-cli/commands/auth
    snyk auth
    웹브라우저가 뜨면 Snyk에 로그인 한다.

    인증 토큰 저장소
      ·Linux: ~/.config/configstore/snyk.json
      ·Windows: %USERPROFILE%\.config\configstore\snyk.json
    데이터 디렉토리
      ·%LOCALAPPDATA%\snyk\snyk-cli\<버전> 이다.

  3.설치 및 정상작동 테스트
    snyk test ionic

  4.SAST 진단 방법
    https://docs.snyk.io/snyk-cli/getting-started-with-the-snyk-cli
    https://docs.snyk.io/snyk-cli/commands/code

      # 윈도우 커맨드 창의 코드를 UTF-8로 변경
      CHCP 65001 1> NUL 2> NUL
      cd webgoat1
      snyk code test > result.txt

  5.오픈소스 취약점 진단
    https://docs.snyk.io/snyk-cli/commands/test

    오픈소스 진단을 위해서는 해당 소스코드 폴더에 아래와 같은 package manifest 파일이 존재해야 하며, maven, gradle 등의 빌드툴도 미리 준비되어 있어야 한다.
    package.json(npm-node.js), pom.xml(Maven), composer.lock(composer)
    manifest 파일이 준비 되었으면 snyk test 커맨드로 진단을 시작한다.

    ※만일 manifest 파일이 존재하지 않으면 지원하지 않는 언어라는 메세지를 표시하며 중지된다.
    ※빌드가 실패해도 진단이 실패한다.

      CHCP 65001 1> NUL 2> NUL
      snyk -d test > result.txt

  6.결과를 SaaS 서버에 업로드
    snyk monitor
    https://docs.snyk.io/snyk-cli/commands/monitor

    오픈 소스 취약성 및 라이선스 문제에 대해 지속적으로 모니터링할 Snyk 계정에 프로젝트를 생성한다. 프로젝트 페이지의 웹 UI에서 최신 스냅샷 및 스캔 결과를 확인.
      --all-projects
        작업 디렉토리의 모든 프로젝트를 자동 감지.
      --org=<ORG_ID>
        ·특정 조직에 대해 Snyk 명령을 실행할 조직 ID를 지정한다.
        ·모니터 명령을 실행한 후 새 프로젝트가 생성되는 위치를 지정.
        ·조직의 설정 페이지(Settings > General)에서 조직 ID를 찾을 수 있다.
      예) snyk monitor --all-projects --org=81c394fb-995b-4d5d-8741-ebaaa14709d0

  7. 진단 결과 snyk 웹사이트에서 확인
    https://app.snyk.io/

-----------------------------------------------------------

■snyk options
  snyk container
    취약성에 대한 docker 컨테이너 이미지를 테스트합니다.

  snyk code
    현재 디렉토리에서 정적 코드 분석 진행

  snyk sbom
    SBOM을 생성한다. (Snyk Enterprise 라이선스만 가능)
    https://docs.snyk.io/snyk-cli/commands/sbom

  snyk log4shell
    Log4Shell 취약점을 찾는다.
    https://docs.snyk.io/snyk-cli/commands/log4shell

  snyk config
    Snyk API 인증 토큰과 CLI 설정을 보여준다.
    https://docs.snyk.io/snyk-cli/commands/config

  snyk policy
    정책 파일은 --policy-path=/path/test.snyk 형태로 지정할 수 있다.
    YAML 포맷의 .snyk 로 저장된 정책 파일이 있으면 보여준다.
    https://docs.snyk.io/manage-risk/policies
    https://docs.snyk.io/manage-risk/policies/the-.snyk-file

    .snyk 정책으로 할 수 있는 일
      소스의 특정 파일 또는 폴더 제외
      언어의 버전 정의
      특정 취약점 예외 처리

  snyk ignore
    특정 이슈를 무시하도록 설정한다. (포티파이에서 Suppress 같은 것)
    https://docs.snyk.io/snyk-cli/commands/ignore

  Debug logs: -d
위로 스크롤