วิธีที่เหมาะสมในการแก้ไขช่องโหว่ด้านความปลอดภัยที่อาจเกิดขึ้นในการอ้างอิงที่กำหนดไว้ใน package-lock.json


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ฉันไม่ต้องการสิ่งนี้
สไลด์โชว์

7

ในการแก้ไขปัญหานี้:

โซลูชันที่ 1: ค้นหาช่องโหว่ก่อน: ใช้เทอร์มินัลของคุณ: cd ในโปรเจ็กต์ของคุณจากนั้นเรียกใช้"npm ls hoek"

และสุดท้าย: npm ติดตั้ง bcrypt @ ล่าสุด

จากนั้นพุชโปรเจ็กต์ที่อัปเดตเป็นคอมไพล์ (กล่าวคือทำการคอมมิตใหม่)

แนวทางที่ 2:

หากตัวเลือก / โซลูชันแรกไม่สามารถแก้ไขปัญหาได้เปลี่ยนเวอร์ชันด้วยตนเองใน package-lock.json ของคุณ เปลี่ยนเวอร์ชันของคุณด้วยตนเองจาก 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 (กระทำ / ผลักดัน) ตรวจสอบให้แน่ใจว่าทุกครั้งที่เกิดขึ้นในเวอร์ชัน hoek ในเวอร์ชัน package-lock.json ของคุณเปลี่ยนเป็น 4.2.1

อีกวิธีหนึ่งหากคุณสามารถหาวิธีเปลี่ยน hoek version / update hoek โดยใช้ npm ได้จะทำให้สิ่งต่างๆง่ายขึ้นมาก (บางอย่างเช่น: npm update @ hoek..version ) .. หรือถอนการติดตั้งการอ้างอิงเฉพาะจากนั้นติดตั้งใหม่โดยใช้ bower หรือ npm.


4

ฉันประสบปัญหาเดียวกันกับช่องโหว่ด้านความปลอดภัย lodash ในโครงการที่ฉันสร้างด้วยเส้นด้าย Github ตั้งค่าสถานะสิ่งเหล่านี้ว่าเป็นปัญหาด้านความปลอดภัย

ฉันพยายามคำตอบจาก @rileymanda ข้างต้นโดยใช้ขั้ว: npm ls lodashซีดีในโครงการเรียกใช้แล้ว

ค้นพบนี้ว่าในกรณีของข้อผิดพลาดได้ในการตอบสนองสคริปต์ Quick Google สำหรับปัญหาเกี่ยวกับการตอบสนองสคริปต์และ lodash พบว่านี่เป็นปัญหาที่ทราบแล้ว

ฉันลองทำหลายอย่างเพื่อแก้ไขด้วยเส้นด้าย - ทั้งหมดนี้ไม่ประสบความสำเร็จ npm ls lodashยังคงมีการใช้งาน lodash เวอร์ชันที่มีช่องโหว่

หลังจากอ่านบล็อกของ Matt Turnbull เกี่ยวกับการปรับปรุง npmฉันเปลี่ยนจาก Yarn กลับเป็น npm (ลบyarn.lockลบ./node_modules. รันnpm install). npm ls lodashตอนนี้แสดงให้เห็นว่ามีการใช้เวอร์ชันอ้างอิงล่าสุด - เฮอร์เรย์! มุ่งมั่นที่จะ github และตอนนี้ก็มีความสุขแล้วที่ช่องโหว่นี้หายไป

ดูเหมือนว่าเส้นด้ายอาจกำลังดิ้นรนเพื่อยกเลิกการเลือกประเด็นดังกล่าว (หรือไม่ได้ตั้งใจ)

หากคุณพบปัญหานี้เมื่อสร้างด้วยเส้นด้ายให้ลองเปลี่ยน [back] เป็น npm!


3

ตามความเข้าใจของฉันมันไม่ใช่แนวปฏิบัติที่ดีในการลบไฟล์ package-lock.json และสร้างใหม่

แต่นี่คือสิ่งที่มักจะทำในกรณีนี้
ดูตัวอย่างเชิงมุม / เชิงมุม-CLI ปัญหา 8534ซึ่งได้รับการแก้ไขโดยการประชาสัมพันธ์ 8535
ที่นำไปสู่โครงการขึ้นเช่นfrees-io/freestyle-opscenter-webclientการอัปเดตของมันpackage-lock.json: พีอาร์ 31


การสร้าง package-lock.json ใหม่ดูเหมือนจะไม่สามารถแก้ปัญหาได้
xianshenglu

@xianshenglu ตกลงฉันจะทิ้งคำตอบไว้ที่นั่นเผื่อว่าจะช่วยคนอื่นได้
VonC

ฉันได้รับคำเตือนเกี่ยวกับการล็อกแพ็กเกจในคอมมิตเก่า ฉันจะแก้ไขบางสิ่งในประวัติศาสตร์โดยไม่เขียนขึ้นใหม่ได้อย่างไร?
pishpish

@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-384873041


1
Mine อยู่ในการอ้างอิงเท่านั้น (package-lock.json) ดังนั้นการทำตามขั้นตอนที่ 1 และ 2 ก็เพียงพอที่จะแก้ไขปัญหาของฉัน ไชโย!
PhoenixPan

1

รู้จักช่องโหว่ด้านความปลอดภัยและควรอัปเดต

ตั้งแต่วันที่ 23 พฤษภาคม 2019 คุณมี " Dependabot: Automated security fixes "

ด้วยการผสานรวม Dependabot เราได้เปิดตัวการแก้ไขความปลอดภัยอัตโนมัติเป็นเบต้าสาธารณะ

การแก้ไขความปลอดภัยอัตโนมัติคือคำขอดึงที่สร้างโดย GitHub เพื่อแก้ไขช่องโหว่ด้านความปลอดภัย
พวกเขาทำให้ขั้นตอนการทำงานที่น่าเบื่อเป็นไปโดยอัตโนมัติและช่วยให้นักพัฒนาสามารถอัปเดตการอ้างอิงให้ทันสมัยอยู่เสมอ

ดูเพิ่มเติมที่ "การกำหนดค่าการแก้ไขความปลอดภัยอัตโนมัติ "

หมายเหตุ: การแก้ไขความปลอดภัยอัตโนมัติพร้อมใช้งานในรุ่นเบต้าและอาจมีการเปลี่ยนแปลง

คุณสามารถเปิดใช้งานการแก้ไขความปลอดภัยอัตโนมัติสำหรับที่เก็บใด ๆ ที่ใช้การแจ้งเตือนความปลอดภัยและกราฟการอ้างอิง
เราจะเปิดใช้งานการแก้ไขความปลอดภัยอัตโนมัติโดยอัตโนมัติในทุกที่เก็บที่ใช้การแจ้งเตือนความปลอดภัยและกราฟการอ้างอิงในอีกไม่กี่เดือนข้างหน้าเริ่มตั้งแต่เดือนพฤษภาคม 2019


ฉันมีผลลัพธ์ที่หลากหลายกับบอทนั้น ฉันชอบทำด้วยตนเองและnpm audit / หรือ npm audit fix
Fuhrmanator

@ 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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.