JavaScript
JavaScript는 Snyk Code 및 Snyk 오픈소스(Open Source)에서 지원됩니다.
Snyk Code용 JavaScript
지원되는 보안 규칙에 대한 개요는 JavaScript 및 TypeScript 규칙을 참조하십시오.
지원되는 프레임워크 및 라이브러리
지원되는 프레임워크 및 라이브러리는 다음과 같습니다:
@Google Drive/generative-ai
@anthropic-ai/sdk
@huggingface/inference
@mistralai/mistralai
axios
Angular
apollo-server
bcrypt-nodejs
cross-spawn
crypto-js
date-fns
dayjs
dompurify
electron
ejs
execa
express
express-mongo-sanitize
express-graphql
express-jwt
fastMCP
fs
fs-extra
fs-plus
graceful-fs
graphql-js
grpc-js
hapi.js
jQuery
js-yaml
jzip
koa
koa-graphql
libxml
libxmljs
lodash
luxon
minimongo
minimist
modelcontextprotocol/typescript-sdk
mongodb
Mongoose
mercurius
Nestjs
Node Crypto
node-buffer
node-cmd
Node Crypto
node-dir
node-forge
node-pty
node-serialize
octokit
openai
pg
pg-promise
React - Partial
request-promise
restler
rimraf
sanitize-html
shelljs
Stanford JS Crypto
superagent
tar-stream
TSOA
unirest
unzip
underscore
url
vm
webstomp-client
WebCryptoAPI
xpath
yargs
지원되는 파일 형식
지원되는 파일 형식은 다음과 같습니다: .ejs, .es, .es6, .htm, .html, .js, .jsx, .ts, .cts, .mts, .tsx, .vue, .mjs, .cjs
사용 가능한 기능
보고서(Reports)
파일 간 분석(Interfile analysis)
Snyk 오픈소스용 JavaScript
지원되는 패키지 관리자 및 패키지 레지스트리
Snyk은 다음 패키지 관리자 및 버전을 지원합니다:
npm:
npm 5,npm 6,npm 7,npm 8,npm 9,npm 10+지원되는 Lockfile 버전:
Lockfile v1,Lockfile v2,Lockfile v3pnpm:
pnpm 7,pnpm 8,pnpm 9,pnpm 10Yarn:
Yarn 1,Yarn 2,Yarn 3
Snyk의 기본 패키지 레지스트리는 npmjs.org입니다. 비공개 패키지 레지스트리도 지원됩니다. 자세한 내용은 패키지 리포지토리 통합을 참조하십시오.
사용 가능한 통합
SCM 가져오기
CLI 및 IDE: 앱 테스트 또는 모니터링
지원되는 파일 형식
지원되는 파일 형식은 다음과 같습니다:
npm:
package.json및package-lock.jsonpnpm:
pnpm-lock.yamlyarn:
yarn.lock
Lerna는 부분적으로 지원됩니다.
사용 가능한 기능
Fix PRs
라이선스 스캐닝(License scanning)
보고서(Reports)
SBOM 테스트 명령을 사용하여
pkg:npmPURL을 기반으로 앱의 SBOM 및 패키지 테스트
언어 및 패키지 관리자 고려 사항
공식 릴리스만 추적됩니다. 기본 브랜치로의 커밋을 포함하여 공식 릴리스나 태그에 포함되지 않은 커밋은 식별되지 않습니다.
JavaScript 패키지의 경우, 이는 npmjs.org 패키지 레지스트리에 대한 릴리스를 의미합니다.
devDependencies 분석
devDependencies 분석은 일반적으로 프로덕션에 배포되지 않으며 보안 및 개발 측면 모두에서 "노이즈"로 간주되기 때문에 기본적으로 비활성화되어 있습니다. 개발 종속성 테스트를 활성화하려면:
CLI 및 CI/CD 통합의 경우
--dev매개변수를 사용하십시오.SCM 통합의 경우 관련 구성 항목의 Settings > Languages에서 설정하십시오.
optionalDependencies 분석
CLI, CI/CD 및 SCM 통합에서 optionalDependencies는 기본적으로 포함됩니다.
비관리형(Unmanaged) JavaScript
엔터프라이즈(Enterprise) 플랜을 사용하여 Snyk API에 액세스할 수 있는 경우, API를 사용하여 종속성 및 전이 종속성의 전체 목록을 가져올 수 있습니다.
취약점을 테스트하려면 다음 API 엔드포인트를 사용할 수 있습니다:
동기화되지 않은 락파일(Lockfiles)
락파일과 패키지 파일의 동기화 여부에 따른 동작을 다음을 사용하여 제어할 수 있습니다:
CLI 추가 값:
--strict-out-of-sync,--fail-onSCM 스캔용 웹 UI: Settings > Language > JavaScript
npm 지원
지원되는 모든 락파일 버전에 대해 다음 기능을 사용할 수 있습니다:
CLI 지원
SCM 지원
라이선스 스캐닝
Fix PRs
Snyk은 락파일 유무에 관계없이 종속성 트리를 빌드할 수 있습니다. 락파일이 있는 경우 Snyk은 다음과 같이 사용합니다:
로컬 및 CI/CD 사용 시: 락파일이 없고 CLI 또는 IDE로 스캔을 수행하는 경우, Snyk은
node_modules를 확인하여 설치된 항목을 결정합니다.SCM 통합 사용 시: 락파일이 없는 경우, Snyk은 빌드 시점의 트리 구조를 근사화합니다. 이는 개발 중인 프로젝트나 락파일이 없을 때 다음 빌드가 어떤 모습일지 파악하는 데 매우 유용합니다.
종속성 작업을 할 때 언제든지 npm-audit을 사용할 수 있지만, Snyk은 개인과 기업 모두를 위해 설계된 다음과 같은 기능을 제공합니다:
오픈소스뿐만 아니라 자체 코드(first-party code)를 보호하는 데 도움이 됩니다. 코드형 인프라(IaC) 및/또는 컨테이너를 사용하는 경우 Snyk은 가시성과 수정 조언도 제공합니다.
오픈소스 측면에서:
Snyk 보안 팀이 추가하는 큐레이션, 업데이트 및 추가 가치(예: 알려진 익스플로잇(Known Exploit) 및 X(구 Twitter) 트렌딩 정보)의 혜택을 모두 누릴 수 있습니다.
자동화된 해결(Automated Remediation) 기능을 제공합니다.
중앙 집중식 보고
Git 코드 리포지토리 통합뿐만 아니라 파이프라인 전반의 통합 및 프로덕션에 대한 가시성을 제공합니다.
프로그래밍 언어 및 패키지 관리자에 대한 광범위한 지원.
무시(Ignore) 기능.
Peer dependencies
npm v7 이상에서는 피어 종속성(peer dependencies)이 기본적으로 설치되도록 동작이 변경되었습니다. 이를 반영하여 npm v7+ 프로젝트에서 Snyk은 피어 종속성이 설치된 것으로 가정하고 기본적으로 스캔합니다.
npm v7+ 프로젝트는 package.json의 peerDependenciesMeta 객체에 명시적으로 선택 사항(optional)으로 표시된 경우에만 피어 종속성을 무시합니다. 다음은 cache-manager에 대한 예시입니다:
npm v6 이하에서는 패키지 관리자가 피어 종속성을 기본적으로 설치하지 않으므로 기본적으로 스캔되지 않습니다. 피어 종속성을 스캔하려면 설치되어 있는지 확인한 다음 --peer-dependencies 옵션과 함께 CLI를 실행하십시오.
락파일(Lockfile) 버전
Snyk은 프로젝트의 종속성 트리를 생성하기 위해 package-lock.json 락파일이 있는 경우 이를 사용합니다. 이러한 락파일에는 여러 버전이 있습니다.
Lockfile v1은 npm v5 및 v6에서 사용되었습니다. npm v7에서 두 가지 새로운 형식인 lockfile v2와 lockfile v3가 도입되었습니다. 자세한 내용은 lockfileVersion을 참조하십시오.
package-lock.json에서 다음과 같이 사용 중인 락파일 형식을 확인할 수 있습니다:
npm이 특정 락파일 버전을 생성하도록 강제하려면 npm --lockfile-version 매개변수를 사용하십시오.
pnpm 지원
지원되는 모든 pnpm 버전에 대해 다음 기능을 사용할 수 있습니다:
CLI 지원
SCM 지원
라이선스 스캐닝
Fix PRs
Snyk이 프로젝트를 pnpm을 사용하는 것으로 감지하려면 프로젝트에 관련 락파일 및 구성 파일이 포함되어 있어야 합니다:
표준 pnpm 프로젝트는 동일한 디렉토리에
package.json과pnpm-lock.yaml을 모두 포함해야 합니다.pnpm 워크스페이스(workspaces)는 루트 디렉토리에
package.json,pnpm-lock.yaml,pnpm-workspace.yaml을 포함해야 합니다. 또한 워크스페이스 내의 각 패키지에는 자체package.json이 있어야 합니다.
언급된 pnpm 락파일이 없는 경우, Snyk은 프로젝트를 npm 프로젝트로 취급하고 위의 npm 세부 정보에 따라 스캔합니다.
락파일(Lockfile) 버전
Snyk은 프로젝트의 종속성 트리를 생성하기 위해 pnpm-lock.yaml 락파일을 사용합니다.
지원되는 락파일 버전은 pnpm 7, 8, 9, 10에서 사용되는 5.4, 6.x, 9.x입니다.
pnpm 락파일에는 bundledDependencies가 포함되지 않으므로 Snyk은 스캔에 이를 포함하지 않습니다.
Yarn 지원
Snyk은 프로젝트 종속성을 나타내기 위해 Yarn 락파일(yarn.lock)을 사용합니다.
Snyk이 프로젝트를 스캔하기 위해 의존하는 파일은 패키지 관리자의 버전 업그레이드에 따라 변경될 수 있습니다. Snyk은 내부적으로 지원이 확인된 버전만 나열합니다.
이 페이지에 나열되지 않은 최신 버전의 Yarn을 사용하는 경우, Yarn이 이미 지원되는 락파일 버전을 사용하고 있기 때문에 Snyk이 예상대로 작동할 수 있습니다. 해당 버전의 Yarn은 아직 평가되지 않았을 수 있으므로 이 페이지에 추가되지 않았을 수 있습니다.
지원되는 모든 Yarn 버전에 대해 다음 기능을 사용할 수 있습니다:
CLI 지원
SCM 지원
라이선스 스캐닝
Fix PRs
Yarn의 버전에 따라 기능 집합이 다르기 때문에, 패키지 관리자의 작동 방식에 맞춰 Snyk 지원에도 차이가 있습니다.
해결(Resolutions)은 Yarn v2 이상에서 지원됩니다. Yarn v1 해결은 지원되지 않습니다.
Yarn 워크스페이스에 대해 nohoist는 지원되지 않습니다.
언급된 yarn 락파일이 없는 경우, Snyk은 프로젝트를 npm 프로젝트로 취급하고 위의 npm 세부 정보에 따라 스캔합니다.
Lerna 지원
Snyk은 Lerna를 완전히 지원하지 않습니다. 프로젝트가 Yarn 워크스페이스를 사용하여 설정된 경우, 다른 Yarn 워크스페이스 프로젝트와 동일한 방식으로 프로젝트를 스캔할 수 있습니다.
Lerna 프로젝트가 Yarn 워크스페이스를 사용하여 설정된 경우, 다음과 같이 snyk test 및 snyk monitor를 실행할 수 있습니다.
각 예시 패키지에 대해 다음 명령을 사용할 수 있습니다:
또는 중첩된 package.json 파일의 스캔을 자동화하기 위한 스크립트를 지정할 수 있습니다:
npm, pnpm 및 Yarn을 사용한 스캔
다음 표에는 종속성 스캔을 시작하기 위한 단계가 나열되어 있습니다. snyk test 및 snyk monitor와 같은 기본 명령을 다룹니다. CLI 명령의 전체 목록은 CLI 명령 및 옵션 요약을 참조하십시오.
npm
npm을 설치합니다.
npm 프로젝트 파일(
package.json및package-lock.json)이 있는 디렉토리에 있는지 확인합니다.(선택 사항)
npm install을 실행합니다.Snyk 명령을 실행합니다.
(선택 사항) snyk test 및 snyk monitor에 대한 명령 옵션을 실행합니다.
Snyk은 package-lock.json 파일을 분석하여 종속성 트리를 빌드합니다.
package-lock.json이 없으면 Snyk은 node_modules 폴더를 분석합니다.
또는 npm install을 실행하여 락파일을 먼저 생성하십시오.
pnpm
pnpm을 설치합니다.
pnpm 프로젝트 파일(
package.json또는pnpm및pnpm-lock.yaml)이 있는 디렉토리에 있는지 확인합니다.(선택 사항)
pnpm install을 실행합니다.Snyk 명령을 실행합니다.
(선택 사항) snyk test 및 snyk monitor에 대한 명령 옵션을 실행합니다.
Snyk은 pnpm-lock.yaml 파일을 분석하여 종속성 트리를 빌드합니다.
pnpm-lock.yaml이 없으면 Snyk은 node_modules 폴더를 분석합니다.
또는 pnpm install을 실행하여 락파일을 먼저 생성하십시오.
Yarn
Yarn을 설치합니다.
Yarn 프로젝트 파일(
package.json및yarn.lock)이 있는 디렉토리에 있는지 확인합니다.(선택 사항)
yarn install을 실행합니다.Snyk 명령을 실행합니다.
(선택 사항) snyk test 및 snyk monitor에 대한 명령 옵션을 실행합니다.
Snyk은 yarn.lock 파일을 분석하여 종속성 트리를 빌드합니다.
yarn.lock이 없으면 Snyk은 node_modules 폴더를 분석합니다.
또는 yarn install을 실행하여 락파일을 먼저 생성하십시오.
모노레포(Monorepos) 및 워크스페이스 지원
Yarn, npm, pnpm은 여러 하위 프로젝트를 포함하는 모노레포를 관리하는 데 도움이 되는 워크스페이스를 지원합니다.
SCM 스캔 고려 사항
npm 워크스페이스는 Snyk SCM 통합 스캔에서 명시적으로 지원되지 않습니다.
인접한 락파일이 있는 루트 레벨
package.json매니페스트 파일은 정상적으로 스캔됩니다.락파일이 없는 중첩된 매니페스트 파일의 경우, Snyk은 루트 락파일을 사용하지 않고 빌드 시점의 종속성 트리 모습을 근사화합니다.
Yarn 워크스페이스 프로젝트는 루트 디렉토리에 package.json 및 yarn.lock 파일이 있어야 합니다.
pnpm 워크스페이스는 루트 디렉토리에 package.json, pnpm-lock.yaml, pnpm-workspace.yaml 파일이 있어야 합니다.
pnpm 워크스페이스 프로토콜(workspace protocol)은 SCM 스캔에서 지원되지 않습니다.
종속성은 특정 버전이나 표준 semver를 사용하는 버전으로 명시적으로 정의되어야 합니다. (예:
"foo": "^1.1.0")버전에 워크스페이스 프로토콜을 사용하여 정의된 종속성(예:
"foo" : "workspace:*")은 SCM 스캔에서 정의되지 않은 버전으로 나열됩니다.
모든 워크스페이스에 대해 Fix PR 및 Upgrade PR은 워크스페이스 락파일 업데이트를 지원하지 않습니다. 이러한 프로젝트에 대한 PR은 package.json만 업데이트합니다.
CLI 스캔 고려 사항
Snyk CLI에서는 다음 CLI 옵션을 통해 워크스페이스를 지원합니다:
--all-projects: 모든 Yarn, npm, pnpm 워크스페이스 프로젝트와 다른 지원되는 에코시스템의 프로젝트를 검색하고 스캔합니다. 워크스페이스 프로젝트를 스캔할 때 루트 락파일을 참조합니다.--detection-depth: 검색할 하위 디렉토리 레벨 수를 지정합니다.--strict-out-of-sync=false: 워크스페이스 내 패키지에 대해 동기화되지 않은 락파일 테스트를 허용합니다. 이 옵션을false로 설정하면 매니페스트 및 락파일이 동기화되지 않은 상태에서도 오류 없이 Snyk 테스트를 실행할 수 있습니다.--policy-path: 테스트 중에 Snyk이 사용하는 정책의 경로를 지정합니다.
CLI를 사용한 워크스페이스 스캔 예시
현재 디렉토리와 하위 5단계 디렉토리까지의 모든 워크스페이스 프로젝트와 감지된 다른 모든 프로젝트 유형을 스캔하려면 다음 명령을 사용하십시오:
무시 항목 및 패치를 한 곳에서 유지 관리하여 감지된 모든 워크스페이스에 적용하려면 정책 경로를 사용하여 공통 .snyk 정책 파일을 사용하십시오. .snyk 파일을 참조하십시오.
npm 워크스페이스 스캔
npm v7에서 워크스페이스 지원이 도입되었습니다. npm 프로젝트의 모든 워크스페이스를 감지하고 스캔하려면 위에 설명된 CLI 옵션을 사용하십시오.
pnpm 워크스페이스 스캔
pnpm 워크스페이스는 루트 디렉토리에 package.json, pnpm-lock.yaml, pnpm-workspace.yaml 파일이 있어야 합니다. pnpm 프로젝트의 모든 워크스페이스를 감지하고 스캔하려면 위에 설명된 CLI 옵션을 사용하십시오.
Yarn 워크스페이스 스캔
Yarn 워크스페이스에 대해 nohoist는 지원되지 않습니다.
Yarn 프로젝트의 모든 워크스페이스를 감지하고 스캔하려면 모노레포 및 워크스페이스에 대해 확인된 CLI 옵션과 이 Yarn 전용 옵션을 사용하십시오.
--yarn-workspaces: 루트에 락파일이 있을 때 Yarn 워크스페이스 프로젝트만 감지하고 스캔하려면 --all-projects 대신 사용하십시오. 다른 에코시스템은 무시됩니다.
JavaScript에 대한 검증, 모니터링, 알림 및 게이팅(Gating)
Snyk 엔터프라이즈 플랜이 있는 SCM 통합의 경우, Snyk은 Kubernetes 통합을 사용하여 프로덕션에서 사용 중인 컨테이너 이미지와 오픈소스 또는 Linux 기반 패키지를 모니터링하여 프로덕션 애플리케이션의 알려진 취약점을 고객에게 알릴 수 있습니다.
모든 Snyk 플랜에 대해, 프로덕션 통합이 없는 경우 snyk monitor CLI 명령을 사용하여 스냅샷을 찍고 프로덕션으로 푸시되는 항목을 모니터링하십시오.
Last updated