· kaynak dev.to (home feed)
En çok kurulanan 100 VS Code extension'ının denetiminde 19'unda bilinen CVE taşıyan dependency'ler bulundu
En çok kurulan 100 üçüncü taraf VS Code extension'ının denetiminde, 19'unda bilinen bir CVE taşıyan dependency'ler tespit edildi. Bunlar arasında, 84 milyon kurulumu olan Live Server'daki kritik websocket-driver açığı da yer alıyor.

En çok kurulan 100 üçüncü taraf VS Code extension'ının bağımsız bir denetiminde, 19'unun bilinen bir güvenlik açığı taşıyan en az bir dependency ile birlikte dağıtıldığı ortaya çıktı. En çarpıcı tek sonuç: 84 milyondan fazla kurulumu olan Live Server extension'ı, GHSA-xv26-6w52-cph6 olarak takip edilen kritik bir advisory ve CVE-2026-54466 kapsamındaki websocket-driver 0.7.4 sürümünü paketliyor. Denetim, Vadim Toptunov tarafından 10 Kasım 2026'da dev.to üzerinde yayınlandı ve 8 Kasım'da alınmış bir Marketplace anlık görüntüsü kullanıldı.
Tarama ne buldu
Örneklenen yüz extension'ın on dokuzunda, OSV.dev güvenlik açığı veritabanındaki bir advisory ile eşleşen en az bir dependency-sürüm çifti vardı. Extension'lar değil extension-dependency çiftleri olarak sayıldığında, tarama 149 farklı advisory kaydına bağlı 103 etkilenen kombinasyon kaydetti. Her çiftin en yüksek önem derecesine göre sıralandığında 12'si kritik, 61'i yüksek, 24'ü orta ve 6'sı düşük.
Live Server 84.254.316 kurulumla etkilenen listenin başında yer alıyor ve işaretlenen paketleri websocket-driver'ın ötesinde braces, lodash ve js-yaml'ı da kapsıyor. Onu yaklaşık 42,7 milyon kurulumla Code Runner izliyor ve yüksek bantta Path Intellisense, Django extension'ı, PHP Debug, Vetur ve EditorConfig de yer alıyor. Kritik advisory'ler ayrıca indent-rainbow, DoxyDocGen, prototype pollution nedeniyle işaretlenmiş bir minimist sürümü dağıtan Beautify ile PlatformIO IDE ve Bracket Pair Colorizer 2 ile de eşleşti.
Aynı npm paketleri birçok extension'da tekrar ediyor; en sık görülenler lodash, minimatch, braces, brace-expansion ve semver. Bu yüzden tek bir advisory çoğu zaman aynı anda birden fazla extension'a denk geliyor.
Mevcut, ama sömürülebilirliği kanıtlanmamış
Yazar, rakamların ne anlama geldiği konusunda dikkatli. Her bulgu, denetimin Present (mevcut) dediği düzeyde: güvenlik açığı taşıyan paketin adı ve sürümü, dağıtılan .vsix dosyasının içinde mevcut. Taramada hiçbir şey, bu kodun runtime'da yüklendiğini, normal kullanım sırasında erişildiğini veya bir saldırgan tarafından sömürülebilir olduğunu göstermiyor. Denetim, present'dan loaded ve reachable üzerinden exploitable'a uzanan dört kademeli düzey tanımlıyor ve her satır için yalnızca ilkini iddia ediyor.
Denetim nasıl yapıldı
Yöntem bilinçli olarak düşük maliyetli: Python'ın standart kütüphanesi ve kimlik doğrulama gerektirmeyen üç genel API ile yaklaşık 15 dakikalık runtime. Toptunov, kurulum sayısına göre Marketplace'in en üst 200 girişini çekti, Microsoft ve Red Hat gibi birinci taraf yayıncıları ile temaları, dil paketlerini ve keymap'leri çıkararak kalanlardan ilk 100'ü korudu. Toplam yaklaşık 1,6 GB olan her .vsix dosyası indirilip açıldı ve node_modules altındaki her package.json numaralandırıldı; böylece 935 benzersiz ad-sürüm çiftini kapsayan 1.357 iç içe manifest elde edildi ve bunlar OSV.dev ile toplu olarak kontrol edildi.
Bir sınırlama ana rakamın aleyhine işliyor. Yüz extension'ın altmış dördü node_modules dizini hiç içermiyordu; bunun tipik nedeni, esbuild veya webpack gibi bundler'lar tarafından tek bir JavaScript dosyasına derlenmiş olmaları. Tarayıcı bu bundle'ların içini göremiyor; dolayısıyla 19 sayısı yöntemin gözlemleyebildiği şey, mutlaka bir üst sınır değil.
Advisory'ler yayınlanmış bundle'lara neden hiç ulaşmıyor
Denetimin ortaya koyduğu yapısal sorun zamanlamayla ilgili. Bir extension'ın dependency'leri, yayınlandığı gün .vsix içine kilitleniyor. Haftalar ya da aylar sonra bir advisory ortaya çıktığında bu, halihazırda yayınlanmış bundle'lara geri akmıyor ve Toptunov, yayınlanmış extension'ları yeni advisory'lere karşı yeniden kontrol eden ya da maintainers veya kullanıcılara bildirim gönderen kamuya belgelenmiş bir Marketplace mekanizması bulamadı. VS Code'un arayüzü ayrıca kullanıcılara bir extension'ı kurmadan önce dependency ayak izini inceleme imkânı vermiyor.
Denetim, VS Code 1.57 ile Mayıs 2021'de gelen Workspace Trust'ın, güvenilmeyen bir repository'nin açılmasının kötü niyetli extension davranışını tetikleyebildiği eski saldırı sınıfını zaten engellediğine dikkat çekiyor. Ancak bu kapı, meşru extension'ların içinde halihazırda bulunan güvenlik açıklı üçüncü taraf kod için hiçbir şey yapmıyor.
Neden önemli
Marketplace extension'ları on milyonlarca geliştiriciye ulaşıyor ve her kurulum, bir maintainer'ın dependency ağacını, dependency düzeyinde hiçbir görünürlük ve yayın sonrası inceleme olmadan geliştiricinin makinesine yerleştiriyor. Etkilenen 19 extension kanıtlanmış saldırı vektörü değil, çünkü bulgular sömürülebilirlikten çok mevcudiyetle ilgili; ama ekosistemde şu anda hiçbir geri bildirim döngüsü yok: advisory'ler yayınlanıyor, ancak dağıtılmış bir extension'ın artık bilinen bir güvenlik açıklı paket içerdiğini kimseye söyleyen hiçbir şey yok. Denetim için yalnızca kimlik doğrulamasız genel API'lere ve birkaç yüz satırlık stdlib Python'a ihtiyaç duyulduğu için Marketplace'in sürekli taranması teknik olarak son derece kolay; eksik olan şey yetenek değil, ürün ve süreç. Etkilenen extension'ların maintainer'ları için pratik adım, dependency'lerin güncel sürümlerine karşı yeniden derleyip yeniden yayınlamak; çünkü bu bundle'lar kendilerini güncellemeyecek.
- #vs-code
- #security
- #npm
- #vulnerabilities
- #supply-chain
İlgili yazılar
- Hugging Face uyarıyor: Ekim'deki OpenCode ihlali gibi siber saldırılar açık yapay zekâyı kapatabilir
- Araştırmaya göre coding-agent konfigürasyonları kilitlenmemiş bağımlılık gibi davranıyor, kurulumların yüzde 16'sında hata bulundu
- N-able, araştırmacı düzinelerce yamalanmamış zero-day yayınladıktan sonra N-Central'ı çevrimdışı aldı