Как исправить Tar пакета NPM с высокой уязвимостью при перезаписи произвольного файла, когда пакет обновлен?

#npm-install #tar #node-sass #flickity #npm-audit

#npm-install #tar #узел-sass #flickity #npm-аудит

Вопрос:

Я только что установил Flickity из NPM и получил отчет о безопасности аудита NPM после запуска npm audit , в котором говорится, что у меня проблема с высокой уязвимостью в отношении перезаписи произвольного файла в tar пакета, которая зависит от node-sass, как вы можете видеть здесь:

 High......................... Arbitrary File Overwrite                                     
Package...................... tar                                                          
Patched in................... >=4.4.2                                                      
Dependency of................ node-sass [dev]                                              
Path......................... node-sass > node-gyp > tar                                   
More info.................... https://npmjs.com/advisories/803 
  

Запуск npm audit fix не решил проблему, поскольку уязвимость требует проверки вручную. В рекомендации по ссылке «Дополнительная информация» указано обновить до версии 4.4.2 или более поздней. Когда я запустил, npm show tar version я понял, что использую версию 4.4.8 , которая меня смутила. Я пошел package-lock.json и понял, что node-gyp, который зависит от node-sass, использует версию tar ^ 2.0.0

Это сбивает меня с толку, поскольку я видел много разных версий tar в зависимости от других пакетов, но это node-sass > node-gyp > tar version единственная версия, описанная ниже v4.4.2 . Почему это так работает, почему я должен исправлять это вручную и как я могу вручную исправить / обновить этот пакет tar?

Ответ №1:

Проблема отслеживается на странице gitgub

https://github.com/sass/node-sass/issues/2625

Ответ №2:

Пожалуйста, обновите значение «tar» в вашем файле «package-lock.json». И для проверки запустите « [npm audit][1] «.

 "tar": {
      "version": "4.4.8",
      "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.8.tgz",
      "integrity": "value",
      "dev": true,
      "optional": true,
      "requires": {
        "block-stream": "*",
        "fstream": "^1.0.2",
        "inherits": "2"
      }
    }
  

Ответ №3:

В вашем пакете-lock.jason обновите tar для узла до приведенного ниже (версия 4.4.8):

«версия»: «4.4.8», «решаемая»: «https://registry.npmjs.org/tar/-/tar-4.4.8.tgz «

Комментарии:

1. npm может перезаписать эти настройки, поэтому: используйте npm ci для загрузки ваших настроек из файла package-lock.jason вместо package.jason

2. Ваш комментарий сделал для меня то, чего не сделал ни один другой ответ. Спасибо!

Ответ №4:

Из проблемы SASS github: откройте package-lock.json и найдите «tar», который должен выглядеть следующим образом:

 "version": "2.2.1",
"resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
"integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
  

Замените эти 3 строки на:

 "version": "4.4.8",
"resolved": "https://registry.npmjs.org/tar/-/tar-4.4.8.tgz",
"integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh x EXx7XW96xYQ==",
  

удалите папку:

 node_modulesnpm
npm i
npm audit fix
npm audit
  

Tada!

Комментарии:

1. В этом нет необходимости. npm audit fix alone исправит это, поскольку эта проблема была решена и закрыта, как вы можете видеть здесь github.com/sass/node-sass/issues/2625 (одобренный ответ выше)