Kiedy biegnę npm install
, mówi found 33 vulnerabilities (2 low, 31 moderate)
run `npm audit fix` to fix them, or `npm audit` for details
.
Jednak, npm audit fix
wyjścioweup to date in 11s
fixed 0 of 33 vulnerabilities in 24653 scanned packages
33 vulnerabilities required manual review and could not be updated
Czy to review
oznacza, że nie powinno to być naprawiane przez użytkownika?
Po uruchomieniu wyświetla npm audit
listę tabel, podobną do tej:
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ Low │ Prototype Pollution │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ lodash │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=4.17.5 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ browser-sync [dev] │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ browser-sync > easy-extender > lodash │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://nodesecurity.io/advisories/577 │
└───────────────┴──────────────────────────────────────────────────────────────┘
W tym przykładzie sekcja naprawcza połączonej strony mówi Update to version 4.17.5 or later.
. Jednak /node_modules/browser-sync/package.json
są tam wiersze:
"devDependencies": {
"lodash-cli": "4.17.5",
}
i koniec z lodashowymi zależnościami. Powinna więc być już wersja 4.17.5. Sprawdziłem też, /node_modules/lodash/lodash.json
który ma var VERSION = '4.17.10';
linię. W /node_modules/lodash/package.json
istnieją te linie:
"_from": "lodash@^4.17.4",
"_id": "[email protected]",
Uważam, że wersja jest wyświetlana w „_id”, a nie w „_from”, więc wersje są poprawne, ale luka nadal pojawia się na liście kontrolnej.
Wciąż jestem nowy w node.js i te wiadomości bardzo mnie dezorientują. Czy jest jakiś sposób, aby to naprawić ręcznie lub pozbyć się tych wiadomości, z którymi nie mogę nic zrobić?
Odpowiedzi:
lodash-cli
indevDependencies
nie ma wpływu na sposóbbrowser-sync
działania w projekcie,devDependencies
są ignorowane, gdy pakiet jest instalowany jako zależność.Co
audit
Raport mówi, że jest toeasy-extender
, że malodash
zależność:To zależy od Lodash 3 , podczas gdy problem został rozwiązany w Lodash 4. Problem można rozwiązać przez rozwidlenie
easy-extender
, aktualizację i zainstalowanie go zamiast pakietu z publicznego rejestru NPM. Ale nie ma prawdziwego problemu z tą zależnością.audit
ważność raportu należy ocenić ręcznie. Nawet jeśli zagnieżdżona zależność wiąże się z zagrożeniem bezpieczeństwa, nie oznacza to, że została użyta funkcja, która wprowadza to zagrożenie. Nie oznacza to również, że nawet jeśli jest używany, wprowadza realne ryzyko ze względu na sposób, w jaki jest używany.browser-sync
jest narzędziem programistycznym, które nie jest używane w środowisku produkcyjnym, nie ma tak wielu scenariuszy, w których można by wykorzystać jego luki. I Prototype Zanieczyszczenia nie jest luka w ogóle, tylko zauważyć, że pakiet nie przestrzega dobrych praktyk, może być ignorowane.Ogólnie jest to sposób na naprawienie zgłoszonych luk w zabezpieczeniach:
W większości przypadków oczekuje się, że nie przejdziesz dalej niż test poczytalności.
patch-package
może pomóc załatać zagnieżdżone zależności na miejscu, ale nie wpłynie to naaudit
raport.źródło
node_modules
, więc czy rozwidlanie i naprawianie to jedyny sposób, aby się ich pozbyć? A jako nowy użytkownik nie mogę tego zrobić? Czy powinienem poinformować o nich programistów pakietów?audit
), odpowiedź na to odpowiada. Ludzienpm audit
jakoś żyli bez . Szanse na to, że powodują rzeczywiste problemy z bezpieczeństwem aplikacji są bardzo niskie, ale nie wiedząc, czym są i jak są używane w Twojej aplikacji, nie mogę tego zagwarantować.Jeśli jesteś absolutnie pewien, że chcesz pominąć audyt, możesz to zrobić, dołączając --no-audit
źródło
„Poprawka audytu npm” zwiększy wersję zależności w pliku package.json, co może doprowadzić do złamania kodu. Lepszym sposobem jest więc otwarcie pliku package-lock.json i zaktualizowanie wersji zależności / subdependency do wymaganej wersji. Utrzymuj plik package-lock.json w repozytorium.
Czasami luki pochodzą z pakietów deweloperskich, w takim przypadku zignoruj te luki, ponieważ nie są one wykrywane w produkcji.
źródło
Większość problemów pojawiła się w moim systemie z powodu pakietu npm. Próbowałem,
Nie musisz ponownie instalować.
Po prostu uruchom program ponownie. U mnie to zadziałało.
źródło