Package.json'da listelenmeyen package-lock.json dosyamdaki güvenlik açığı olan bir npm paketini nasıl düzeltebilirim?


91

Github, package-lock.json dosyamdaki bir bağımlılığın savunmasız ve güncel olmadığını söylüyor. Sorun şu ki eğer yaparsam npm installveya npm updatehiçbiri package-lock.json dosyasındaki bağımlılığı güncellemiyor.

Bu konuda çok fazla googling yaptım, dosyayı sildim ve yaptım npm install.

Bu sorunu çözmeye yardımcı olabilecek biri varsa, çok memnun olurum. Söz konusu paket, aslında package.json dosyamda bulunmadığım Hoek.

Şimdiden çok teşekkürler.


2
Size paketlemek-lock.json silmeyi deneyin ve yeniden yüklemek npm çalıştırmak
Rishikesh Dhokare

1
Hangisinin işe yaradığını öğrenmek için bağımlılıklarınızı kontrol edebilir ve bunu güncelleyebilirsiniz. (Ancak şansınız da olmayabilir ve bu bağımlılığın daha yeni bir sürümü yoktur.)
Roland Starke

Aynı şeyi @RishikeshDhokare
xpto

@RishikeshDhokare'nin dediği gibi yaptım. Sorun kendim için çözüldü
melih sahin

Yanıtlar:


41

Hoek, bağımlılıklarınızdan birinin bağımlılığı gibi görünüyor (bu nedenle, paketinizdeki bir paket, kendi package.json'dan gerektiriyor).

Proje bağımlılıklarınızı silmeyi / yeniden yüklemeyi ve güncellemeyi başarıyla denediniz, bu nedenle söz konusu paket bağımlılığının açık veya maksimum bir sürümü belirtilmiş gibi görünüyor.

Bağımlılıklarınızın her biri için package.json dosyasını görmeden, bir güncellemeyi nasıl zorlayacağınız konusunda daha fazla tavsiye vermek zor olacaktır.

Düzenleme: Hangi paketlerin hangi bağımlılıkları kullandığını belirlemenize yardımcı olması için NPM'nin lskomutunu kullanabilirsiniz : https://docs.npmjs.com/cli/ls

Örneğin, hangi paketlerin Hoek kullandığını görmek için: npm ls hoek

Düzenleme 2: Ulysse BN'nin doğru bir şekilde işaret ettiği gibi, NPM sürüm 6 veya sonraki bir sürüme sahipseniz, NPM'den sizin npm audit fixiçin güvenlik açıklarını gidermesini istemeyi kullanabilirsiniz .

Düzenleme 3: Bunu okuyanlar aşağıdaki JBallin'in cevabına da bakmalıdır. Burada verdiğim bilgileri genişletiyor ve (bence) OP'nin sorusuna daha iyi hitap eden daha yapılandırılmış bir cevap. Ancak - hızlı bir düzeltme istiyorsanız - bu cevap yeterli olacaktır.


3
Farklı bir pakette benzer bir sorun yaşıyorum (Growl). Sanırım bu benim package.jsoniçin Growl'un belirli (savunmasız) sürümüne bağlı bir şeyin bir versiyonu. Cevabınız doğru yoldadır ve hangi paketlerin içinde package.jsongösterilen savunmasız olana bağlı olduğunu gösteren komutu paylaşabilirseniz, belki de onu yakalayabilirsiniz package-lock.json.
Fuhrmanator

Güncellenen cevaba bakın. Ek yardıma ihtiyacınız varsa - yeni bir soru oluşturun. :)
Alex Mulchinock


Ek bir sorunun garanti edildiğinden emin misiniz? Kopya gibi görünüyorlar.
JBallin

@JBallin cevabım o zamandan beri birkaç kez güncellendi. Orijinal olarak bir kopya olarak nitelendirilmemiş olabilir.
Alex Mulchinock

24

TLDR: kullanarak üst paketi güncelleyin npm i $PARENT_PKG_NAME.


Not

Bağımlılıkları güncellerken, herhangi bir son değişiklik olup olmadığını görmek için CHANGELOG'u gözden geçirmelisiniz.

Teşhis

npm audithem savunmasız paketi (bunun için bir package-lock.json dosyasına ihtiyacınız olacağını, bu yüzden çalıştırmanız gerekeceğini unutmayın npm i) hem de bunun bağımlı olduğu paketi (varsa) ortaya çıkaracaktır . npm ls $CHILD_PKG_NAMEÜst bağımlılıklarını görmek için de kullanabileceğinizi unutmayın .

Hızlı Onarım Denemesi

npm audit fixve npm audit fix --forcedenemeye değer, ancak bazen düzeltmenin manuel olarak yapılması gerekebilir (aşağıya bakın).

Manuel Düzeltme

Büyük olasılıkla ana paket bağımlılıklarını zaten düzeltmiş olacaktır (bunu GitHub'larına gidip son kayıtları inceleyerek veya sadece bunun düzeltip düzeltmediğini kontrol ederek doğrulayabilirsiniz), böylece çalıştırabilirsiniz npm i $PARENT_PKG_NAME @$NEW_VERSIONve paket kilidinizi güncelleyecektir. .json.

Ebeveyn güvenlik açığını gidermediyse

Bakımcı yanıt vermiyor gibi görünüyorsa, aynı şeyi başaran alternatif bir paket kullanmayı veya paketi çatallayarak güvenlik açığını kendiniz güncellemeyi düşünebilirsiniz.

Düzeltmeyi Doğrula

Artık çalıştığını npm auditve hiçbir güvenlik açığının görünmediğinden emin olarak çalıştığını doğrulayabilirsiniz . Değişikliklerinizi işleyin, onları GitHub'a gönderin, bildirimlerinizi / uyarılarınızı yenileyin ve gitmeleri gerekir!


Benim durumumda olduğu gibi, Hızlı Düzeltme bu cevaptaki kılavuzda çalışmıyor, çünkü ana, güncellemede tamamen API'yi değiştiren ve hatta bu kitaplıktan kurtulabilen bir çerçeve? Bunun nedeni, ana fraemwork hala eski kitaplığı kullanıyor. Aslında eski hala korunuyor ama güncellenmedi, yani nasıl devam edebilirim?
Carmine Tambascia

1
@CarmineTambascia, kullandığınız paket güvenlik açıklarını düzeltmiyorsa (düzeltilmesini ümit ederek bir sorunu / PR açardım) - Paket (ler) in kendi çatalını yapmayı, vulnları düzeltmeyi düşünürdüm. etkilenen paketin yeri.
JBallin

alt paketi güncellemenin bir yolu var mı? Üst paketin güvenlik açıkları için düzeltilmediği durumda?
Harshita

@Harshita "Ebeveyn güvenlik açığını
gidermediyse

1
@Harshita onlara ulaştın mı? Bu güvenlik açıklarını düzeltmek de onların çıkarına.
JBallin

6

Npm @ 6 veya sonrasına sahipseniz, npm audit fixgüvenlik sorunlarınız için kullanabilirsiniz .


Tonlarca farklı araç var ve aynı güvenlik açığı veritabanlarına sahip değiller. En kapsamlı bulduğum Snytch.
Ulysse BN

2

Kullanım:

npm çalıyorum

npm, hoek'in en son sürümünü yükleyecek ve package.lock.json dosyanız güncellenecektir.


0

Bu sorunu yaşadım ve bunun npm'yi çalıştırdığım sunucunun it-package-lock.json üzerinde npm'nin eski bir sürümüne sahip olmasından kaynaklandığını fark ettim - yalnızca yeni sürümler tarafından destekleniyor.


0

Bunu denediniz mi: proje köküne gidin, package-lock.jsondosyayı node_modulesve .cacheklasörleri silin ve ardından npm install.


0

Savunmasız npm paketlerini kontrol etmek için aşağıdaki komutları kullanın:

npm audit

Güvenlik açığı bulunan npm paketlerini düzeltmek için, package-lock.json'u da düzeltecek aşağıdaki komutları kullanın:

npm audit fix

0

Düzenleme package-lock.jsonsonra sabit bir ve kullanım elle ve güncelleme savunmasız paket versiyonu

npm ci

Bu, paketleri önce package-lock.jsongörmezden gelerek ona göre kuracaktır package.json. Sonra kullan

npm audit fix

tekrar, düzgün yapıldığından emin olmak için. Eğer yardımcı olmazsa, verilen diğer çözümleri kullanın.

Daha fazla bilgi burada:

https://blog.npmjs.org/post/171556855892/introducing-npm-ci-for-faster-more-reliable

veya burada: https://docs.npmjs.com/auditing-package-dependencies-for-security-vulnerabilities


Ek bir çözüm şu olabilir: npmjs.com/package/npm-check-updates
Lonely

-3

Yeni bağımlılıkları yükledikten sonra package-lock.json dosyasını güncellemek için aşağıdaki komutu çalıştırın:

npm update package-lock.json
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.