package-lock.json에 정의 된 종속성의 잠재적 보안 취약성을 수정하는 적절한 방법


88

Github가 내 저장소 중 하나에서이 오류를 제공했습니다.

We found a potential security vulnerability in one of your dependencies.
A dependency defined in ./package-lock.json has known security vulnerabilities 
and should be updated.

종속성은 package.json파일에 정의되어 있지 않습니다 . 내 이해로는 package-lock.json파일 을 삭제 하고 다시 생성하는 것은 좋지 않습니다 . 그러나이 문제를 해결할 다른 방법은 없습니다. 이 보안 취약점을 무시하면 며칠 후 다시 나타납니다. 어떤 아이디어? 감사!



hoek

답변:


67

새로운 기능 : 이제 npm @ 6을 사용하여 직접 실행할 수 있습니다.

npm audit fix

이전 답변 :

문제가있는 패키지의 이름을 확인한 다음 실행해야합니다.

npm install package-name

분명히 패키지 이름을 대체합니다.

이렇게하면 최신 버전의 패키지가 설치되며 최신 버전이 보안 문제를 해결하는 경우가 많습니다. 버전에 제약이있는 경우 (예 : 1.2) 언제든지 다음을 시도 할 수 있습니다.

npm install package-name@^1.2

최신 패치 버전이 설치됩니다.


1
... '문제가있는 패키지의 이름을 식별'하려면을 실행할 수 있습니다 npm ls vulnerability-name. 여기에는 업데이트 / 설치할 수있는 취약성 종속 항목이 나열됩니다. (같은 RileyManda의 대답 @에 unclearly 오히려 언급)
Sjeiti

1
npm audit fix는 이제이 문제를 깔끔하게 수정합니다.
Kaito

9
그것은 추가됩니다 package-namedependenciespackage.json. 나는 이것을 원하지 않는다.
slideshowp2

7

이 문제를 해결하려면 :

해결 방법 1 : 먼저 취약점을 찾으십시오. 터미널 사용 : 프로젝트에 cd 한 다음 "npm ls hoek" 실행

마지막으로 npm install bcrypt @ latest

그런 다음 업데이트 된 프로젝트를 git에 푸시합니다 (예 : 새로운 커밋 수행).

해결책 2 :

첫 번째 옵션 / 솔루션으로 문제가 해결되지 않는 경우 package-lock.json에서 버전을 수동으로 변경하십시오. 버전을 2.16.3에서 4.2.1로 수동 변경

"hoek": {
      "version":  "4.2.1",
      "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz",
      "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=",
      "dev": true

그런 다음 GitHub (commit / push)에서 프로젝트를 업데이트하십시오. package-lock.json 버전에서 발생하는 모든 hoek 버전이 4.2.1로 변경되었는지 확인하십시오.

또는 npm을 사용하여 hoek 버전 / update hoek을 변경하는 방법을 알아낼 수 있다면 훨씬 더 간단하게 만들 것입니다. (예 : npm update @ hoek..version ) .. 또는 특정 종속성을 제거한 다음 bower를 사용하여 다시 설치하거나 npm.


4

나는 실로 구축하고 있던 프로젝트에서 lodash 보안 취약점과 동일한 문제를 겪고있었습니다. Github는이를 보안 문제로 표시했습니다.

터미널을 사용하여 위의 @rileymanda의 대답을 시도했습니다. cd into project, 다음 실행 npm ls lodash.

이것은 내 경우에 오류가 react-scripts에 있음을 발견했습니다 . 반응 스크립트 및 lodash 관련 문제에 대한 빠른 Google은 이것이 알려진 문제임을 밝혀 냈습니다.

나는 실을 통해 여러 가지를 고치려고 시도했지만 모두 성공하지 못했습니다. npm ls lodash여전히 사용중인 lodash의 취약한 버전을 보여주었습니다.

npm 개선에 대한 Matt Turnbull의 블로그 를 읽은 후 yarn에서 npm으로 다시 전환했습니다. (삭제 yarn.lock, 삭제 ./node_modules. 실행 npm install). npm ls lodash이제 사용중인 최신 종속성 버전이 표시되었습니다. 만세! github에 전념했으며 이제 취약점이 사라져서 기뻤습니다.

원 사는 그러한 문제를 풀기 위해 고군분투하는 것 같습니다 (또는 의도하지 않은 것 같습니다).

yarn으로 빌드 할 때이 문제가 발생하면 [back]을 npm으로 전환 해보세요!


3

내 이해로는 package-lock.json 파일을 삭제하고 다시 생성하는 것은 좋지 않습니다.

그러나 이것은 일반적으로이 경우에 수행되는 것입니다.
예를 들어 PR 8535에서 해결 된 angular / angular-cli 문제 8534를 참조하십시오 . 리드 같은 종속 프로젝트는 하기 의 업데이트 PR (31) : .
frees-io/freestyle-opscenter-webclientpackage-lock.json


패키지 lock.json의 재생은 probelm가 해결되지 않는 것 같다
xianshenglu

@xianshenglu 좋아요, 다른 사람에게 도움이 될 경우를 대비하여 답변을 남겨 두겠습니다.
VonC

이전 커밋에서 패키지 잠금에 대한 경고를 받고 있습니다. 도대체 어떻게 다시 쓰지 않고 역사에서 무언가를 고칠 수 있습니까?
pishpish

@destoryer 잘 모르겠습니다 : 새로운 질문을 더 자세히 물어보세요 (OS, npm 버전, ...)
VonC

1
내 문제가 해결되었습니다. 팁 고마워.
Rich


1

알려진 보안 취약점을 업데이트해야합니다.

2019 년 5 월 23 일부터 " Dependabot : 자동화 된 보안 수정 "이 있습니다.

Dependabot의 통합을 통해 자동화 된 보안 수정을 공개 베타로 출시했습니다.

자동화 된 보안 수정은 보안 취약성을 수정하기 위해 GitHub에서 생성하는 풀 요청입니다.
워크 플로의 지루한 부분을 자동화하고 개발자가 종속성을 최신 상태로 유지할 수 있도록합니다.

"더 많은 참조 자동화 된 보안 수정 프로그램 구성 "

참고 : 자동 보안 수정은 베타 버전으로 제공되며 변경 될 수 있습니다.

보안 경고 및 종속성 그래프를 사용하는 모든 저장소에 대해 자동 보안 수정을 활성화 할 수 있습니다.
2019 년 5 월부터 다음 몇 개월 동안 보안 경고 및 종속성 그래프를 사용하는 모든 저장소에서 자동 보안 수정을 자동으로 활성화합니다.


나는 그 봇과 혼합 된 결과를 얻었습니다. 수동으로 npm audit및 / 또는 npm audit fix.
Fuhrmanator

@Fuhrmanator 좋아요. 이전 댓글에서 medium.com/coinmonks/… 를 언급 하셨나요 ?
VonC

0

이것은 나를 위해 작동합니다. 모든 종속성을 제거하고 다시 설치하십시오.

예를 들면

package.json 에서 종속성 목록 참조

{
"name": "ebook-saler",
  "version": "1.0.0",
  "description": "App for selling ebooks",
  "main": "app.js",
  "scripts": {
    "start": "node app.js"
  },
  "author": "Md Shayon",
  "license": "ISC",
  "dependencies": {
    "body-parser": "^1.19.0",
    "express": "^4.17.1",
    "express-handlebars": "^3.1.0",
    "hoek": "^6.1.3",
    "stripe": "^7.5.0"
  }
}

이것에 대한 명령을 따르십시오

npm uninstall body-parser express express-handlebars hoek stripe
npm install body-parser express express-handlebars hoek stripe
git commit -m "updated"
git push

0
  1. GitHub에서 저장소의 기본 페이지로 이동합니다.
  2. 저장소 이름 아래에서 보안을 클릭하십시오.
  3. 보려는 알림을 클릭하십시오.
  4. 취약성 세부 정보 및 가능한 경우 자동화 된 보안 수정이 포함 된 풀 요청을 검토합니다.
  5. 필요에 따라 경고에 대한 자동화 된 보안 수정이 아직없는 경우 취약성을 해결하기위한 풀 요청을 생성하려면 자동화 된 보안 수정 생성을 클릭합니다.
  6. 종속성을 업데이트하고 취약성을 해결할 준비가되면 풀 요청을 병합하십시오.

자세히보다


0

시도 npm audit fix하면 많은 경고를 해결할 것입니다.

그때 npm i [package.name]@xxx

예를 들면 :

"dependencies": {
  "lodash": ">=4.17.13"
}

npm i lodash@4.17.13

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.