npm Package Vulnerability 해결

nara_lee·2025년 3월 13일
post-thumbnail

react-router-dom package를 npm add react-router-dom command 로 깔아주는데 아래 에러가 떴다.

added 1 package, changed 1 package, and audited 1349 packages in 1s

268 packages are looking for funding
  run `npm fund` for details

8 vulnerabilities (2 moderate, 6 high)

To address all issues (including breaking changes), run:
  npm audit fix --force

Run `npm audit` for details.

시킨대로 npm audit fix --force 하면 vulnerability 가 165개로 늘어나면서 바벨 같은 기본적인 package들이 안됐다.

그래서 또 npm audit fix --force 하면 다시 아래 화면이 나오고 A를 해결하면 B가 안되고 B를 해결하면 A가 안되고...씁하 무한굴레에 빠졌다.

그래서 대체 뭔 취약성을 말하는겨 ㅡㅡ 하고 찾아보다 npm official doc 을 읽게 되었다.
짧게 말하면 패키지가 공식지원 되는 패키지도 있지만 개인이 만든 패키지들도 있고 또 어떤 패키지를 쓰려면 그거에 "dependent" 의존하는 패키지도 함께 깔게되는 경우가 많다. 그래서 패키지 사용자들을 보호하기 위해 npm audit 명령은 패키지에 구성된 종속성에 대한 설명을 기본 레지스트리에 제출하고 알려진 취약점에 대한 보고서를 요청한다고 한다.


실행하면 이렇게 좌라락 npm audit영향을 받는 패키지 이름, 취약성 심각도 및 설명, 경로 및 기타 정보와 함께 보안 취약성 보고서가 생성되고, 사용 가능한 경우 취약성을 해결하기 위한 패치를 적용하는 명령도 생성된다.

그럼 여기서 발견된 보안 취약점들이 업데이트가 가능하다? 하면 다음 중 하나를 수행할 수 있습니다.

  • npm audit fix 취약한 종속성에 호환되는 업데이트를 자동으로 설치하려 하위 명령을 실행.

  • 취약한 종속성에 대한 업데이트를 설치하려면 권장 명령을 개별적으로 실행. (일부 업데이트는 semver를 깨는 변경 사항일 수 있음. 자세한 내용은 " SEMVER 경고 "를 참조.)

SEMVER 경고
권장 조치가 잠재적으로 중대한 변경(의미적 버전 주요 변경)인 경우, "SEMVER 경고: 권장 조치는 잠재적으로 중대한 변경"이라는 메시지가 뒤에 붙습니다 SEMVER WARNING. 취약성이 있는 패키지가 API를 변경한 경우 패키지의 코드를 추가로 변경해야 할 수 있습니다.

아무튼 나는 개별적으로 해결할 엄두가 안나서npm audit fix --force 로 패키지들을 자동 업데이트하려고 했으나.... 아까 말했 듯 vulnerability 무한 굴레에 빠져버림.

그래서 스택오버플로우에서 script 버전을 override하는 블락을 package.json에 추가하면 된다길래 했더니.. 바로 해결됐다.

The following code can be added to the package.json file to resolve the issue:

"overrides": {
  "react-scripts": {
  "@svgr/webpack": "8.1.0",
  "typescript": "4.9.5",
  "postcss": "8.4.38"
  }
}

++ 딱 내 문제에 대해 어떤 사람이 자세히 기술한 을 찾았다.

0개의 댓글