Package-lock.json'da tanımlanan bir bağımlılıktaki olası güvenlik açıklarını düzeltmenin doğru yolu


90

Github, depolarımdan birinde bu hatayı bana verdi.

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.

Bağımlılık package.jsondosyamızda tanımlanmamıştır . Anladığım kadarıyla package-lock.jsondosyayı silip yeniden oluşturmak iyi bir uygulama değil. Ancak, bu sorunu çözmenin başka bir yolunu göremiyorum. Bu güvenlik açığını kapatırsam, birkaç gün sonra tekrar görünecektir. Herhangi bir fikir? Teşekkürler!



Yanıtlar:


68

Yeni: şimdi npm @ 6 ile doğrudan çalıştırabilirsiniz

npm audit fix

Eski cevap:

Sorunlu paketin adını belirlemeye çalışmalı ve ardından

npm install package-name

açıkça paket adını değiştiriyor.

Bu, paketin en son sürümünü yükler ve çoğu zaman en son sürüm güvenlik sorununu çözer. Sürümde bir kısıtlamanız varsa (örneğin: 1.2), her zaman şunları deneyebilirsiniz:

npm install package-name@^1.2

ve en son yamalı sürüm yüklenecek


1
... ve 'sorunlu paketin adını belirlemek' için çalıştırabilirsiniz npm ls vulnerability-name. Bu, daha sonra güncelleyebileceğiniz / yükleyebileceğiniz güvenlik açığı bağımlılarını listeler. (@ RileyManda'nın cevabında oldukça belirsiz bir şekilde bahsedildiği gibi)
Sjeiti

1
npm denetim düzeltmesi şimdi bu sorunu benim için temiz bir şekilde düzeltir.
Kaito

9
Bu katacak package-nameiçinde dependenciesbir package.json. Ben bunu istemiyorum
slideshowp2

7

Bunu çözmek için:

Çözüm1 : Öncelikle güvenlik açığını bulun: Projenize terminal: cd'nizi kullanarak , ardından "npm ls hoek" çalıştırın

Ve son olarak: npm bcrypt @ en son

Ardından güncellenen projeyi git'e gönderin (yani yeni bir kaydetme gerçekleştirin).

2.Çözüm:

İlk seçenek / çözüm sorunu çözmezse, package-lock.json dosyanızda sürümü manuel olarak değiştirin. Sürümünüzü manuel olarak 2.16.3'ten 4.2.1'e değiştirin

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

Daha sonra projenizi GitHub'da güncelleyin (commit / push) Sadece package-lock.json sürümünüzdeki her hoek sürüm oluşumunun 4.2.1 olarak değiştirildiğinden emin olun.

Alternatif olarak, npm kullanarak hoek sürümünü / güncelleme çemberini değiştirmenin bir yolunu bulabilirseniz, işleri çok daha basit hale getirecektir. (Gibi bir şey: npm update @ hoek..version ) .. veya belirli bağımlılığı kaldırıp bower kullanarak yeniden yükleyin veya npm.


4

İplikle inşa ettiğim bir projede, bir lodash güvenlik açığı ile aynı sorunu yaşıyordum. Github bunları güvenlik endişeleri olarak işaretledi.

Yukarıdaki @rileymanda cevabını projeye bir terminal: cd'yi kullanarak denedim, sonra çalıştırdım npm ls lodash.

Bu, benim durumumda, hatanın tepki komut dosyalarında olduğunu ortaya çıkardı . React-scripts ve lodash ile ilgili sorunlar için Quick Google, bunun bilinen bir sorun olduğunu ortaya çıkardı.

İplikle düzeltmek için çeşitli şeyler denedim - hepsi başarılı olamadı. npm ls lodashhala kullanımda olan lodash'ın savunmasız sürümünü gösterdi.

Okumak zorunda NPM yönelik iyileştirmeler hakkında Matt Turnbull'un blog ben NPM için iplik arkasından geçti. (Sil yarn.lock, sil ./node_modules. Çalıştır npm install). npm ls lodashşimdi kullanılan en son bağımlılık sürümlerini gösterdi - yaşasın! Github'a bağlıydı ve güvenlik açığının ortadan kalkması artık mutluydu.

Görünüşe göre iplik bu tür sorunları çözmek için mücadele ediyor olabilir (veya amaçlanmamıştır).

İplikle inşa ederken bu sorunu yaşıyorsanız, [geri] 'yi npm olarak değiştirmeyi deneyin!


3

Anladığım kadarıyla package-lock.json dosyasını silip yeniden oluşturmak iyi bir uygulama değil.

Yine de, bu durumda genellikle yapılan budur.
Örneğin PR 8535 ile çözülen açısal / açısal-kli sorunu 8534'e bakın . Potansiyel böyle bir bağımlı proje için onun güncellemek PR 31: .
frees-io/freestyle-opscenter-webclientpackage-lock.json


Package-lock.json'ın yenilenmesi sorunu çözmüyor gibi görünüyor
xianshenglu

@xianshenglu Tamam, başkalarına yardımcı olur diye cevabı orada bırakacağım.
VonC

Eski bir işlemde paket kilidi uyarısı alıyorum. Tarihteki bir şeyi yeniden yazmadan nasıl düzeltebilirim?
pishpish

@destoryer Bilmiyorum: daha ayrıntılı yeni bir soru sormaya çalışın (İşletim Sistemi, npm sürümü, ...)
VonC

1
Bu benim sorunumu çözdü. Bahşiş için teşekkürler.
Zengin


1

bilinen güvenlik açıkları ve güncellenmesi gerekir.

23 Mayıs 2019'dan beri artık " Dependabot: Otomatik güvenlik düzeltmelerine " sahipsiniz

Dependabot'un entegrasyonu sayesinde, genel beta olarak otomatik güvenlik düzeltmeleri yayınladık.

Otomatik güvenlik düzeltmeleri, güvenlik açıklarını düzeltmek için GitHub tarafından oluşturulan çekme istekleridir.
İş akışının sıkıcı bir bölümünü otomatikleştirirler ve geliştiricilerin bağımlılıklarını güncel tutmalarını kolaylaştırırlar.

"Daha fazla gör otomatik güvenlik düzeltmelerini yapılandırılması "

Not: Otomatik güvenlik düzeltmeleri beta sürümde mevcuttur ve değiştirilebilir.

Güvenlik uyarılarını ve bağımlılık grafiğini kullanan herhangi bir havuz için otomatik güvenlik düzeltmelerini etkinleştirebilirsiniz.
Mayıs 2019'dan başlayarak önümüzdeki birkaç ay boyunca güvenlik uyarılarını ve bağımlılık grafiğini kullanan her depoda otomatik güvenlik düzeltmelerini otomatik olarak etkinleştireceğiz.


O botla karışık sonuçlar aldım. El ile yapmayı npm auditve / veya yapmayı tercih ederim npm audit fix.
Fuhrmanator

@Fuhrmanator Tamam. Önceki bir yorumda medium.com/coinmonks/… 'den bahsettiniz mi?
VonC

0

Bu benim için çalışıyor. tüm bağımlılıklarınızı kaldırın ve tekrar kurun

Örneğin

dan package.json senin bağımlılıkları listesini görmek

{
"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"
  }
}

Bunun için komutu takip edin

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'da, deponun ana sayfasına gidin.
  2. Depo adınızın altında Güvenlik'i tıklayın.
  3. Görüntülemek istediğiniz uyarıyı tıklayın.
  4. Güvenlik açığının ayrıntılarını ve varsa otomatik güvenlik düzeltmesini içeren çekme talebini inceleyin.
  5. İsteğe bağlı olarak, uyarı için halihazırda otomatikleştirilmiş bir güvenlik düzeltmesi yoksa, güvenlik açığını gidermek üzere bir çekme isteği oluşturmak için Otomatik güvenlik düzeltmesi oluştur'a tıklayın.
  6. Bağımlılığınızı güncellemeye ve güvenlik açığını gidermeye hazır olduğunuzda, çekme isteğini birleştirin.

Ayrıntılara bakınız


0

deneyin npm audit fix, birçok uyarıyı çözecek

sonra npm i [package.name]@xxx

Örneğin:

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

npm i lodash@4.17.13

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.