Исправление уязвимости - «Критическое загрязнение прототипа при погружении». Исправлено> = 9.0.6.
Вот исправление следующей уязвимости:
Critical Prototype Pollution in immer
Package immer
Patched in >=9.0.6
Dependency of react-scripts
Path react-scripts > react-dev-utils > immer
More info https://github.com/advisories/GHSA-33f9-j839-rf8h
Исправить:
Установите исправленную версию иммера, в этом случае
9.0.6
, используя следующую команду:npm install --save immer@9.0.6
Обновите файл package.json с помощью
npm update
.ВАЖНОЕ ПРИМЕЧАНИЕ: если на этом этапе уязвимость все еще присутствует, вы можете сделать следующее, ТОЛЬКО если вы знаете, что это не нарушит ваш код или не испортит зависимости для предыдущих версий или других пакетов вашего проекта. Я единственный, кто работает над моим проектом, так что это исправление работает в моем сценарии.
В вашей
package-lock.json
файл, найдите устаревший пакет, в моем случае:"immer": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/immer/-/immer-8.0.1.tgz", "integrity": "sha512-aqXhGP7//Gui2+UrHtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaH9RZ1j1xlIYqaaaipBoqcqeibkc17PNvF==" },
и сразу удалите его.
Это исправление кажется не очень устойчивым для всех пакетов / зависимостей, но кто знает? Если есть способы получше, сообщите об этом сообществу.
1 ответ
Ваше исправление должно быть достаточно хорошим, чтобы исправить эту критическую уязвимость, хотя, как вы определили, оно имеет тенденцию быть хрупким и его легко отменить.
Если возможно, обновите до [email protected] ^5.0.0 или более поздней версии. Он уже был транзитивно обновлен через react-dev-utils до [email protected] ^9.0.7.
Если по какой-либо причине (например , удалены полифилы или иным образом) вы не можете обновить сценарии реагирования, я бы предложил после просмотра критических изменений immer :
- npm-force-resolutions, добавьте следующее в , затем
npm install
:
"resolutions": {
"immer": "9.0.12"
},
"scripts": {
"preinstall": "npx npm-force-resolutions"
},
- ИЛИ разрешения пряжи добавляют следующее к
package.json
, тогдаyarn install
:
"resolutions": {
"immer": "9.0.12"
},
Конечно, если кто-то в будущем обнаружит другую уязвимость в immer, вам нужно будет повторить это с более поздней версией.
PS Извините за ответ, который, я уверен, является дублирующим вопросом, хотя ни один очевидный вопрос, на который можно было бы сослаться, не бросается в глаза прямо сейчас.