수동으로 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-cli
에devDependencies
방법에 영향을 미치지 않음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
'source' 카테고리의 다른 글
CSS 높이(백분율)가 작동하지 않음 (0) | 2023.08.26 |
---|---|
값이 다른 행을 단일 행으로 병합 (0) | 2023.08.26 |
부트스트랩: 모달에서 다른 모달 열기 (0) | 2023.08.26 |
두 PHP datetime 개체가 동일한 날짜로 설정되었는지 확인합니다(시간 무시). (0) | 2023.08.26 |
VBA의 합계 함수 (0) | 2023.08.26 |