HD-2024-2201

명령 주입
영향
Vue 2, Nuxt 2
Vue 2.6, Vue 2.7 및 Nuxt 2
in
Vue 2 NES
Nuxt NES
느낌표 아이콘
패치 사용 가능
이 취약점은 HeroDevs에서 제공하는 네버엔딩 지원(NES) 버전에서 수정되었습니다.

개요

CVE-2021-23337은 Vue 2.6, Vue 2.7 및 Nuxt 2가 종속되는 lodash.template@4.5.0의 심각도가 높은 명령 인젝션 취약점입니다. 이 종속성 취약점은 Vue의 최신 NES 릴리스에서 해결되었습니다. Vue 코어 및 모든 관련 하위 패키지(특히 Nuxt 사용자가 의존하는 vue-server-render)의 새 패치 버전을 테스트하고 배포했습니다.

완화

NES Nuxt 고객이 새 버전의 vue-server-renderer를 채택하기 위한 지침은 NES Nuxt 문서에서 확인할 수 있습니다.

이 Lodash 취약점은 Vue 3 또는 Nuxt 3 사용자에게는 영향을 미치지 않습니다. 그러나 아직 Vue 3 또는 Nuxt 3로 마이그레이션을 완료하지 않은 HeroDevs NES 고객의 경우 이 새 패치를 설치하는 것이 좋습니다.

이 문제를 직접 패치하는 것은 까다로울 수 있는데, 직접 종속성인 lodash.template과 lodash.uniq가 더 이상 NPM에 개별 패키지로 게시되지 않기 때문입니다. 따라서 모든 패키지를 다시 빌드하지 않고 종속성을 재정의하는 것은 간단하지 않습니다. 이전 버전의 Vue는 Lodash의 새로운 패키징 구조를 사용하려면 다시 빌드해야 했습니다. 히어로데브스 NES 팀에는 이 작업을 수행할 수 있는 인프라가 있지만, 많은 팀이 직접 수행하기를 원하지 않는 작업입니다. 또한 기능적 정확성 외에도 패치된 Vue 버전을 분석하여 새로운 전이 종속성이 중복 제거되고 애플리케이션의 번들 크기가 최적화된 상태로 유지되는지 확인합니다.

NES Vue 및 Nuxt 사용자를 위한 지침

사용할 최신 지침 및 버전 번호와 NES Vue 및 Nuxt를 처음 설정하는 방법은 Vue 또는 Nuxt 시작하기 페이지에서 확인할 수 있습니다. 새로 릴리스된 버전을 가리키도록 package.json을 업데이트하기만 하면 됩니다.

패치 확인

Nuxt 또는 Vue에서 lodash.template 패키지가 더 이상 종속되지 않는지 확인하려면 패키지 관리자의 why 명령을 사용하면 됩니다. 일반적으로 이 명령은 npm why, yarn why 또는 pnpm why입니다.

npm why lodash.template # "nuxt" 또는 "vue"를 출력하지 않아야 합니다.

이제 npm을 실행할 때 lodash.template@4.5.0 가 아닌 최신 버전의 Lodash가 해결되는 이유를 확인할 수 있습니다.

왜 lodash # 성공적인 응답을 반환하고 ^4.17.21을 만족하는 버전으로 해결해야 하는가?

이 패치 접근 방법

NES 팀에서는 프로젝트의 청지기 역할을 하며 현재 사용자에게 가장 이익이 되고 방해가 되지 않는 변경을 하기 위해 노력하고 있습니다. npm에 lodash.template으로 게시된 패키지는 더 이상 게시되지 않으므로 기술적으로 업그레이드할 수 있는 "최신" 버전이 없습니다.

그러나 Lodash 자체는 여전히 잘 유지되고 있습니다. 저희는 모든 최신 변경 사항과 패치 수정을 받기 위해 Lodash를 업그레이드하기로 결정했습니다. 또한 이제 직접적으로 의존하고 있으며, 권장하는 최신(그러나 이전 버전과 호환되는!) 임포트 구문을 따릅니다.

몇 가지 이유가 있었습니다.

첫째, 최신 버전의 Lodash에서 패치된 취약점이 꽤 많이 있습니다. 앞으로 더 많은 취약점이 있을 수 있습니다. 공개적으로 유지 관리되는 패키지를 사용하고 패치 업데이트를 허용하는 버전 범위를 정의하고 있기 때문에, 리노베이트 또는 디펜다봇 풀 리퀘스트에서 병합의 일부로 향후 패치를 자동으로 받을 수 있습니다. 즉, 프로젝트의 Vue 종속성을 명시적으로 건드리지 않고도 향후 패치를 자동으로 받을 수 있습니다!

둘째, Vue에는 직접적으로 또는 일시적으로 의존하는 여러 개의 Lodash 패키지가 있습니다. Lodash 프로젝트와 그 많은 하위 패키지, 함수 및 모듈은 함께 빌드되고 애플리케이션 전체에서 단일 버전에 고정되도록 설계되어 중복된 코드를 제공하지 않습니다. 최신 버전의 Lodash로 업그레이드하면 빌드 도구가 종속성을 적절히 트리 셰이크하고 일부 기본 유틸리티 패키지를 이중으로 포함하지 않도록 보장할 수 있습니다.

요약

이전 Lodash의 여러 문제에 대해 Vue와 Nuxt에 패치를 적용하고 향후 패치를 포함하도록 버전 범위를 확장했습니다. 이전 버전과의 호환성, 기능적 프로덕션 동등성 및 번들 크기를 보장하기 위해 세심한 주의를 기울였습니다.

패키지.json 파일을 릴리스된 버전으로 업데이트하여 Vue 및 Nuxt 애플리케이션을 안전하고 규정을 준수하며 최신 상태로 유지할 수 있습니다.

  • Vue 2.7 NES 사용자: 모든 Vue 코어 패키지 버전이 @neverendingsupport/vue2@2.7.21 이상의 버전으로 확인되어야 합니다.
  • Vue 2.6 NES 사용자: 모든 Vue 코어 패키지 버전이 @neverendingsupport/vue2@>=2.6.19 이상의 버전으로 해결되는지 확인하세요(단, 패치되지 않은 Vue 2.7 버전으로 업데이트하지 않도록 주의하세요).
취약점 세부 정보
ID
HD-2024-2201
영향을 받는 프로젝트
Vue 2, Nuxt 2
영향을 받는 버전
Vue 2.6, Vue 2.7 및 Nuxt 2
게시 날짜
2024년 10월 8일
≈ 수정 날짜
2024년 10월 3일
다음에서 수정되었습니다.
심각도
높음
카테고리
명령 주입