पैकेज-लॉक.जॉन में परिभाषित निर्भरता में संभावित सुरक्षा भेद्यता को ठीक करने का उचित तरीका


91

Github ने मुझे अपनी एक रिपॉजिटरी पर यह त्रुटि दी है।

We found a potential security vulnerability in one of your dependencies.
A dependency defined in ./package-lock.json has known security vulnerabilities 
and should be updated.

हमारी package.jsonफ़ाइल में निर्भरता परिभाषित नहीं है । मेरी समझ में यह package-lock.jsonफ़ाइल को हटाने और इसे पुन: उत्पन्न करने के लिए अच्छा अभ्यास नहीं है। हालाँकि, मैं इस समस्या को हल करने के लिए कोई अन्य तरीका नहीं देख सकता। अगर मैं इस सुरक्षा भेद्यता को खारिज करता हूं तो यह कुछ दिनों बाद फिर से दिखाई देगा। कोई विचार? धन्यवाद!



जवाबों:


68

नया: अब, npm @ 6 के साथ आप सीधे भाग सकते हैं

npm audit fix

पुराना उत्तर:

आपको समस्याग्रस्त पैकेज के नाम की पहचान करने की कोशिश करनी चाहिए, और फिर दौड़ना चाहिए

npm install package-name

स्पष्ट रूप से पैकेज-नाम की जगह।

यह पैकेज के नवीनतम संस्करण को स्थापित करेगा, और बहुत बार, नवीनतम संस्करण ने सुरक्षा समस्या को ठीक कर दिया है। यदि आपके पास संस्करण पर एक बाधा है (उदाहरण के लिए: 1.2), तो आप हमेशा निम्न प्रयास कर सकते हैं:

npm install package-name@^1.2

और नवीनतम पैचेड वर्जन इंस्टॉल किया जाएगा


1
... और 'समस्याग्रस्त पैकेज के नाम की पहचान करने के लिए' आप चला सकते हैं npm ls vulnerability-name। यह भेद्यता आश्रितों को सूचीबद्ध करता है, जिन्हें आप तब अद्यतन / स्थापित कर सकते हैं। (जैसा कि स्पष्ट रूप से @ RileyManda के जवाब में स्पष्ट रूप से उल्लेख किया गया है)
Sjeiti

1
npm ऑडिट फिक्स अब मेरे लिए इस समस्या को ठीक करता है।
Kaito

9
यह जोड़ देगा package-nameमें dependenciesकी package.json। मुझे यह नहीं चाहिए।
स्लाइड शो 2

7

इसे हल करने के लिए:

समाधान 1: सबसे पहले भेद्यता का पता लगाएं: अपने टर्मिनल का उपयोग करना: अपने प्रोजेक्ट में सीडी , फिर "npm ls hoek" चलाएं।

और अंत में: npm स्थापित bcrypt @ नवीनतम

फिर अपडेट किए गए प्रोजेक्ट को git पर धकेलें। (यानी एक ताजा कमिटमेंट करें)।

समाधान 2:

यदि पहला विकल्प / समाधान समस्या को हल नहीं करता है। संस्करण को अपने पैकेज-लॉक में मैन्युअल रूप से बदलें। 2.16.3 से 4.2.1 तक अपने संस्करण को मैन्युअल रूप से बदलें

"hoek": {
      "version":  "4.2.1",
      "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz",
      "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=",
      "dev": true

फिर अपने प्रोजेक्ट को GitHub (कमिट / पुश) पर अपडेट करें। बस सुनिश्चित करें कि आपके पैकेज-लॉक में हर खुर संस्करण की घटना हो। json संस्करण को 4.2.1 में बदल दिया गया है

वैकल्पिक रूप से यदि आप npm का उपयोग करके हेक वर्जन / अपडेट हेक को बदलने का तरीका जान सकते हैं, तो इससे चीजें बहुत सरल हो जाएंगी। (कुछ इस तरह: npm अपडेट @ hoek..version ) .. या विशिष्ट निर्भरता की स्थापना रद्द करें और फिर इसे bc का उपयोग करके पुन: स्थापित करें। NPM।


4

मैं एक लॉश सुरक्षा भेद्यता के साथ एक ही मुद्दा रहा था, एक परियोजना में मैं यार्न के साथ निर्माण कर रहा था। गितुब ने इन्हें सुरक्षा चिंताओं के रूप में चिह्नित किया।

मैंने टर्मिनल के ऊपर @rileymanda से उत्तर की कोशिश की, परियोजना में cd: फिर चला npm ls lodash

इससे पता चला कि मेरे मामले में, त्रुटि प्रतिक्रिया-लिपियों में थी । त्वरित Google ने प्रतिक्रिया-स्क्रिप्ट के साथ मुद्दों के लिए और लॉश को पता चला कि यह एक ज्ञात मुद्दा था।

मैंने यार्न के माध्यम से ठीक करने के लिए विभिन्न चीजों की कोशिश की - सभी बिना किसी सफलता के। npm ls lodashअभी भी उपयोग में दर्ज होने का कमजोर संस्करण दिखाया।

Npm में सुधार के बारे में मैट टर्नबुल के ब्लॉग को पढ़ने के बाद मैंने यार्न से npm पर स्विच किया। (हटाएं yarn.lock, हटाएं ./node_modules। चलाएँ npm install)। npm ls lodashअब नवीनतम निर्भरता संस्करणों का उपयोग किया जा रहा है - हुर्रे! गिथुब के लिए प्रतिबद्ध, और अब यह खुश था कि भेद्यता चली गई थी।

ऐसा लगता है कि यार्न ऐसे मुद्दों को अनपिक करने के लिए संघर्ष कर सकता है (या इरादा नहीं है)।

यदि आप यार्न के साथ निर्माण करते समय इस मुद्दे को प्राप्त कर रहे हैं, तो npm पर स्विच करने का प्रयास करें!


3

मेरी समझ में यह पैकेज-लॉक.जसन फ़ाइल को हटाने और इसे पुन: उत्पन्न करने के लिए अच्छा अभ्यास नहीं है।

फिर भी, यह वह है जो आमतौर पर इस उदाहरण में किया जाता है।
उदाहरण के लिए कोणीय / कोणीय-क्लाई अंक 8534 देखें , जिसे पीआर 8535 द्वारा हल किया जाता है ।
यह एक आश्रित परियोजना frees-io/freestyle-opscenter-webclientको अद्यतनpackage-lock.json करने के लिए ले जाता है : PR 31


पैकेज-लॉक.जेशन का पुनर्जनन प्रोबेलम को हल नहीं करता है
xianshenglu

@xianshenglu ठीक है, मैं इस मामले में जवाब छोड़ दूंगा क्योंकि यह दूसरों की मदद करता है।
VonC

मैं एक पुराने कमिट में पैकेज-लॉक के लिए चेतावनी प्राप्त कर रहा हूं। पृथ्वी पर मैं इतिहास में किसी चीज़ को कैसे लिखे बिना उसे ठीक कर सकता हूँ?
पिशिश

@destoryer जिसे मैं नहीं जानता: कोशिश करें और अधिक विस्तार के साथ एक नया प्रश्न पूछें (OS, npm का संस्करण, ...)
VonC

1
उसने मेरा मुद्दा ठीक कर दिया। पारितोषिक के लिए धन्यवाद।
रिच

3

इसे ठीक करने का सबसे सरल / आसान तरीका है:

  1. npm install <dep>
  2. npm uninstall <dep>
  3. npm update
  4. npm install

प्रेषक: https://github.com/Microsoft/vscode/issues/48783#issuecomment-383878741


1
मेरा केवल निर्भरता में है (पैकेज- lock.json) इसलिए चरण 1 और 2 को पूरा करना मेरे मुद्दे को ठीक करने के लिए पर्याप्त है। चीयर्स!
फीनिक्सपैन

1

ज्ञात सुरक्षा कमजोरियों और अद्यतन किया जाना चाहिए।

23 मई, 2019 से, अब आपके पास " डिपेंडबोट: स्वचालित सुरक्षा सुधार " है

Dependabot के एकीकरण के माध्यम से, हमने सार्वजनिक बीटा के रूप में स्वचालित सुरक्षा सुधार जारी किए हैं।

स्वचालित सुरक्षा सुधार सुरक्षा कमजोरियों को ठीक करने के लिए GitHub द्वारा उत्पन्न अनुरोधों को खींचते हैं।
वे वर्कफ़्लो के एक कठिन भाग को स्वचालित करते हैं और डेवलपर्स के लिए अपनी निर्भरता को बनाए रखना आसान बनाते हैं।

पर "अधिक देखें स्वचालित सुरक्षा सुधारों का विन्यास "

नोट: स्वचालित सुरक्षा सुधार बीटा में उपलब्ध हैं और परिवर्तन के अधीन हैं।

आप किसी भी रिपॉजिटरी के लिए स्वचालित सुरक्षा सुधार सक्षम कर सकते हैं जो सुरक्षा अलर्ट और निर्भरता ग्राफ का उपयोग करता है।
हम मई 2019 से शुरू होने वाले अगले कुछ महीनों में सुरक्षा अलर्ट और निर्भरता ग्राफ का उपयोग करने वाले प्रत्येक रिपॉजिटरी में स्वचालित रूप से स्वचालित सुरक्षा सुधार को सक्षम करेंगे।


मेरे पास उस बॉट के साथ मिश्रित परिणाम हैं। मैं मैन्युअल रूप से करना npm auditऔर / या करना पसंद करता हूं npm audit fix
फुहरामैनटेर

@Fuhrmanator ठीक है। आपने पिछली टिप्पणी में medium.com/coinmonks/… का उल्लेख किया है ?
VonC

0

यह मेरे लिए काम करता है। अपने सभी निर्भरता की स्थापना रद्द करें और इसे फिर से स्थापित करें

उदाहरण के लिए

से package.json अपने निर्भरता की सूची देखें

{
"name": "ebook-saler",
  "version": "1.0.0",
  "description": "App for selling ebooks",
  "main": "app.js",
  "scripts": {
    "start": "node app.js"
  },
  "author": "Md Shayon",
  "license": "ISC",
  "dependencies": {
    "body-parser": "^1.19.0",
    "express": "^4.17.1",
    "express-handlebars": "^3.1.0",
    "hoek": "^6.1.3",
    "stripe": "^7.5.0"
  }
}

इसके लिए कमांड का पालन करें

npm uninstall body-parser express express-handlebars hoek stripe
npm install body-parser express express-handlebars hoek stripe
git commit -m "updated"
git push

0
  1. GitHub पर, रिपॉजिटरी के मुख्य पृष्ठ पर जाएँ।
  2. अपने रिपॉजिटरी नाम के तहत, सुरक्षा पर क्लिक करें।
  3. उस अलर्ट पर क्लिक करें जिसे आप देखना चाहते हैं।
  4. भेद्यता के विवरण की समीक्षा करें और, यदि उपलब्ध हो, तो पुल अनुरोध स्वचालित सुरक्षा फिक्स से युक्त है।
  5. वैकल्पिक रूप से, यदि पहले से ही अलर्ट के लिए कोई स्वचालित सुरक्षा फ़िक्स नहीं है, तो भेद्यता को हल करने के लिए पुल अनुरोध बनाने के लिए, स्वचालित सुरक्षा फ़िक्सेस बनाएँ पर क्लिक करें।
  6. जब आप अपनी निर्भरता को अपडेट करने और भेद्यता को हल करने के लिए तैयार हों, तो पुल अनुरोध को मर्ज करें।

विवरण देखें


0

कोशिश करो npm audit fix, यह कई चेतावनियों को हल करेगा

फिर npm i [package.name]@xxx

उदाहरण के लिए:

"dependencies": {
  "lodash": ">=4.17.13"
}

npm i lodash@4.17.13

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.