Почему я не могу обновить зависимость пакета npm? - PullRequest
0 голосов
/ 05 мая 2019

Я провел аудит npm, и он показал мне, что у меня есть одна высокая уязвимость.Вот информация, которую он мне дал:

┌───────────────┬─────────────────────────────────────────────────┐
│ High          │ Arbitrary File Overwrite                        │
├───────────────┼─────────────────────────────────────────────────┤
│ Package       │ tar                                             │
├───────────────┼─────────────────────────────────────────────────┤
│ Patched in    │ >=4.4.2                                         │
├───────────────┼─────────────────────────────────────────────────┤
│ Dependency of │ node-sass-chokidar                              │
├───────────────┼─────────────────────────────────────────────────┤
│ Path          │ node-sass-chokidar > node-sass > node-gyp > tar │
├───────────────┼─────────────────────────────────────────────────┤
│ More info     │ https://npmjs.com/advisories/803                |
└───────────────┴─────────────────────────────────────────────────┘

Я посмотрел свой пакет-lock.json для пакета node-gyp и обнаружил, что пакет tar по-прежнему имеет версию 2.0.0, однако мне нужен 4.4.8.:

"node-gyp": {
    "version": "3.8.0",
    "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz",
    "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==",
    "requires": {
        "fstream": "^1.0.0",
        "glob": "^7.0.3",
        "graceful-fs": "^4.1.2",
        "mkdirp": "^0.5.0",
        "nopt": "2 || 3",
        "npmlog": "0 || 1 || 2 || 3 || 4",
        "osenv": "0",
        "request": "^2.87.0",
        "rimraf": "2",
        "semver": "~5.3.0",
        "tar": "^2.0.0",
        "which": "1"
    },
    "dependencies": {
        "nopt": {
            "version": "3.0.6",
            "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
            "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
            "requires": {
                "abbrev": "1"
            }
        },
        "semver": {
            "version": "5.3.0",
            "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
            "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8="
        },
        "tar": {
            "version": "2.2.1",
            "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
            "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
            "requires": {
                "block-stream": "*",
                "fstream": "^1.0.2",
                "inherits": "2"
            }
        }
    }
}

Тогда я искал ту же проблему, поэтому нашел этот ответ .Затем я сделал

npm cache verify
rm -rf node_modules/
npm i -g npm npm-check-updates
ncu -g
ncu -u
npm i

, но версия для пакета tar осталась прежней.Я также попытался обновить его напрямую с помощью npm install tar@4.4.8, но он просто поместил tar в мой package.json.Я также пробовал обновление npm и npm устаревшие.Все выглядит актуально.

Ответы [ 2 ]

1 голос
/ 05 мая 2019

node-gyp@3.8.0 зависит от "tar@^2.0.0, обновление tar до 4.4.8 не повлияет на node-gyp.

Как объяснено в в этом ответе , отчеты об уязвимостях должны пройтипроверить здравомыслие и быть взятым с зерном соли.Если есть вложенный пакет с уязвимостью, все пакеты, которые зависят от него, должны быть обновлены, это может быть сложно.С другой стороны, если уязвимый пакет используется таким образом, который не может вызвать проблем с безопасностью, это не уязвимость.

node-sass-chokidar - это пакет разработки, маловероятно, что вложенная зависимость tar может вызвать проблемы безопасности дляпроект.Отмеченная «уязвимость» не может быть легко исправлена.Игнорировать отчет.Если проблема еще не возникла (на самом деле существует ), откройте ее в репозиториях node-sass и node-sass-chokidar.

1 голос
/ 05 мая 2019

Ну, он называется package-lock.json по той причине, что эта версия всегда останется прежней.

Если вы хотите обновить свои пакеты, вам нужно удалить этот файл или переименовать его в package.json, а затем выполнить обновление.

...