source

수동으로 npm 취약성을 수정하는 방법은 무엇입니까?

ittop 2023. 8. 26. 00:02
반응형

수동으로 npm 취약성을 수정하는 방법은 무엇입니까?

실행할 때npm install라고 씌어 있습니다found 33 vulnerabilities (2 low, 31 moderate) run `npm audit fix` to fix them, or `npm audit` for details.

하지만,npm audit fix산출물up to date in 11s fixed 0 of 33 vulnerabilities in 24653 scanned packages 33 vulnerabilities required manual review and could not be updated

그렇습니까review사용자에 의해 수정되지 않아야 한다는 뜻입니까?

실행할 때npm audit다음과 유사한 표 목록을 제공합니다.

┌───────────────┬──────────────────────────────────────────────────────────────┐
│ Low           │ Prototype Pollution                                          │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package       │ lodash                                                       │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in    │ >=4.17.5                                                     │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ browser-sync [dev]                                           │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path          │ browser-sync > easy-extender > lodash                        │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info     │ https://nodesecurity.io/advisories/577                       │
└───────────────┴──────────────────────────────────────────────────────────────┘

이 예에서 연결된 페이지의 교정 섹션은 다음과 같이 말합니다.Update to version 4.17.5 or later.단,/node_modules/browser-sync/package.json다음과 같은 라인이 라인은 다음과 같습니다.

"devDependencies": {
    "lodash-cli": "4.17.5",
}

그리고 더 이상의 로다시 의존성은 없습니다.그래서 이미 v4.17.5가 되어야 합니다. 저도 확인했습니다./node_modules/lodash/lodash.json가 있는var VERSION = '4.17.10';줄을 서다, 줄서기/node_modules/lodash/package.json다음 행이 있습니다.

  "_from": "lodash@^4.17.4",
  "_id": "lodash@4.17.10",

저는 "_from"이 아닌 "_id"에 표시된 버전이라고 생각하기 때문에 버전은 맞지만 취약성은 감사 목록에 여전히 나타납니다.

나는 아직 node.js에 새로 왔고 그 메시지들은 나를 많이 혼란스럽게 합니다.수동으로 수정하거나 메시지를 없앨 수 있는 방법이 없을까요, 저는 아무것도 할 수 없습니다.

lodash-clidevDependencies방법에 영향을 미치지 않음browser-sync당신의 프로젝트에서 일하는 것,devDependencies패키지가 종속성으로 설치된 경우 무시됩니다.

무엇을audit보고서에 따르면 그것은easy-extender그것을 가지고 있는lodash종속성:

browser-sync > easy-extender > lodash        

Lodash 3에 따라 다르지만, Lodash 4에서 문제가 해결되었습니다.포크로 문제를 해결할 수 있습니다.easy-extender업데이트하고 NPM 공용 레지스트리의 패키지 대신 설치합니다.하지만 이 의존성에는 실제적인 문제가 없습니다.

audit보고서 중요도는 수동으로 평가해야 합니다.중첩된 종속성에 보안 위험이 있다고 하더라도 이 위험을 초래하는 기능이 사용된 것은 아닙니다.이는 또한 사용하더라도 사용 방식으로 인해 실제 위험이 발생한다는 것을 의미하지 않습니다.

browser-sync운영 환경에서 사용되지 않는 개발 도구로, 취약성을 악용할 수 있는 시나리오는 그리 많지 않습니다.프로토타입 오염은 전혀 취약성이 아닙니다. 포장이 모범 사례를 따르지 않는다는 것을 알려주는 것일 뿐입니다. 무시해도 됩니다.

일반적으로 보고된 취약성을 수정하는 방법은 다음과 같습니다.

  • 제정신인지 확인합니다.
  • 실제 문제인 경우 취약한 패키지의 저장소에서 기존 문제 및 PR을 확인합니다.
  • 문제가 없는 경우 문제 제출
  • NPM 릴리스에서 수정될 때까지 저장소를 포크하거나 기존 PR을 깃 종속성으로 사용
  • 중첩 종속성의 경우 여러 중첩 수준에서 이 작업을 수행합니다.

대부분의 경우 제정신성 검사 이상으로 진행되지 않을 것으로 예상되며, 유일한 문제는 "취약성"이 감사 보고서를 혼란스럽게 하고 실제 취약성을 은폐한다는 것입니다.

patch-package 중첩된 종속성을 내부에 패치하는 데 도움이 될 수 있지만 보고서에는 영향을 주지 않습니다.

필드가 있는 Yarn 1과 2의 중첩 종속성에서 특정 종속성 버전을 강제로 적용할 수 있으며, 이는 감사 보고서에 영향을 미칠 것입니다.향후 NPM에서 기본적으로 이 작업을 수행할 수 있습니다.현재 NPM의 대안은 제어 권한이 적은 타사 유틸리티이며, 현재는 특정 종속성이 아닌 모든 종속성에 대한 해결을 강제합니다.

종속성이 작동하도록 설계되지 않은 중첩 종속성을 사용하도록 강제함으로써 종속성은 언제든지 손상될 수 있습니다. 이특히에적다니됩용는다▁to에 적용됩니다.npm-force-resolutions이는 무딘 도구이며 한 번에 여러 중첩된 종속성에 영향을 미칠 수 있습니다.

감사를 건너뛸 것이 확실한 경우, 감사 없음을 추가하여 건너뛸 수 있습니다.

 npm install --no-audit

출처: 설명서

경우에 따라서는

  • 잘못된 긍정
  • 특정 환경에 영향을 미치지 않는 취약성
  • 사용하지 않는 코드 부분에 존재하는 취약성

잘못된 긍정 추가 판독값

잘못된 문맥 추가 읽기

2022년 업데이트

또는 Better NPM 감사를 사용하여 감사를 미세하게 관리할 수 있습니다.

'npm audit fix'는 패키지의 종속성 버전을 증가시킵니다.코드가 깨질 수 있는 json.따라서 package-lock.json을 열고 종속성/하위 종속성 버전을 필요한 버전으로 업데이트하는 것이 좋습니다.package-lock.json을 저장소에 유지합니다.

개발 패키지에서 취약성이 발생하는 경우가 있습니다. 이 경우 운영 환경에서 이러한 취약성을 파악하지 못하므로 이러한 취약성은 무시합니다.

이것을 사용합니다.

npm 감사 수정 --force --production

당신의 문제를 해결할 수도 있습니다.

당신은 또한 힘을 사용할 수 있습니다.npm audit fix --force.

이것을 시도해 보았는데 효과가 있었습니다. 다음 명령을 실행하십시오.

> npm audit fix    
> npm set audit false

언급URL : https://stackoverflow.com/questions/51377148/how-to-fix-npm-vulnerabilities-manually

반응형