EMZETT.
Giriş yap

npm audit

Kısaca: Bir projenin kurulu bağımlılıklarını bilinen güvenlik açıkları veritabanına karşı denetleyen yerleşik bir npm komutu.

Biraz daha ayrıntılı: Sonuç önem derecesine göre sıralanır (kritik/yüksek/orta/düşük). npm audit fix, uyumsuz değişiklik olmadan mümkün olan her şeyi otomatik düzeltir; npm audit fix --force geri kalanını da düzeltir, ancak bunu yaparken paketleri uyumsuz sürümlere zorlayabilir. “No fix available”, paket bakımcılarının kendilerinin henüz yamalanmış bir sürüm yayımlamadığı anlamına gelir.

Bizim bağlamımız: package-lock.json yeniden üretilirken bulundu — 22 açık, 15’i uyumsuz değişiklik olmadan otomatik düzeltildi; kalan 15’i Capacitor derleme araçlarına bağlı (yalnızca mobil uygulama için önemli, düzeltme yok) ve bilerek zorlanmadı.

Ayrıntılı

Tam olarak ne denetlenir

npm audit yalnızca package.json içinde doğrudan listelenen bağımlılıkları değil, tüm geçişli bağımlılıklar dahil eksiksiz bağımlılık ağacını denetler (kendi paketlerinizin de içe aktardığı paketler) — yani bir açık, hiç duymadığınız ama dolaylı olarak kurulmuş bir paketin derinlerinde gömülü olabilir. Komutun kendisi hiçbir şey kurmaz; yalnızca package-lock.json içinde sabitlenen sürümleri bilinen açıkların herkese açık bir veritabanıyla (npm kayıt defterinin tavsiye veritabanı; o da herkese açık bildirilen CVE’lere — Common Vulnerabilities and Exposures — dayanır) karşılaştırır.

Önem düzeyleri ve anlamları

Dört önem düzeyi (kritik/yüksek/orta/düşük) tipik olarak, güvenlik açıklarını sektör genelinde standartlaştırılmış biçimde derecelendirmek için kullanılan CVSS puanlama sistemini (Common Vulnerability Scoring System) yansıtır. Kritik ve yüksek açıklar genellikle uzaktan kod yürütme veya kimlik doğrulamayı atlatma gibi şeyleri ilgilendirir; düşük dereceler ise çoğunlukla kuramsal sorunları veya yalnızca çok özel koşullar altında istismar edilebilenleri. Önemli: derecelendirme paketi tek başına ele alır — bir açığın SİZİN projenizde gerçekten istismar edilip edilemeyeceği, açıklı kod yoluna denetlenmemiş/harici verilerle ulaşılıp ulaşılmadığına bağlıdır.

npm audit fix --force sınırları

npm audit fix --force ile önemli olan: komut açığı düzeltmeye çalışır, ancak bunun için bir paketin yeni bir büyük sürümüne atlayabilir — ve büyük sürümler, anlamsal sürümlemeye göre, açıkça geriye dönük uyumlu olmayı GARANTİ ETMEZ. Zorla düzeltmeden sonra sonuca güvenmeden önce eksiksiz bir test/derleme çalıştırması bu yüzden isteğe bağlı değil, zorunludur. Pratikte --force, bir paketin aynı projedeki diğer bağımlılıkları bozan bir sürüme atlamasına bile yol açabilir (peer dependency çakışmaları) — komut esas olarak “açık gitti” için optimize eder, “proje çalışmaya devam ediyor” için değil.

Düzeltme olmadığında

Mevcut düzeltmesi olmayan bir açık (“no fix available”) genellikle iki şeyden biri demektir: ya etkilenen paketin bakımcıları boşluğu henüz yamalamadı ya da paket artık aktif olarak bakılmıyor — ikinci durumda çoğu zaman tek seçenek paketi aktif olarak bakılan bir alternatifle değiştirmektir. Yamalanmamış bir açığı yok saymadan önce, açıklı kod yoluna kendi projenizde hiç ulaşılıp ulaşılamadığını kısaca denetlemeye değer — bildirilen birçok açık, bir paketin bir projenin hiç kullanmayabileceği çok özel işlev çağrılarını ilgilendirir; bu da biçimsel olarak var olan açığa rağmen gerçek riski düşük kılabilir.

Tek seferlik denetim yerine sürekli izleme

Yeni açıklar sürekli keşfedilip bildirildiğinden, tek seferlik bir npm audit çalıştırması yalnızca bir anlık görüntüdür — kurulum sırasında temiz olan bir proje, kendi kodunuzda hiçbir şey değişmeden haftalar sonra yeni bildirimler gösterebilir. Birçok ekip bu yüzden arada sırada elle çalıştırmaya güvenmek yerine yeni açıkları otomatik ve düzenli denetlemek için npm audit’i (veya GitHub Dependabot gibi eşdeğer araçları) CI ardışık düzenlerine entegre eder.

Ayrıca bak: GitHub