■관련 용어
·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