Hem dahili sunuculara hem de bireysel geliştiricilerin bilgisayarlarına kurulan npm paketleriyle ilgili aynı tema, diğer şirketlere yönelik diğer birçok başarılı saldırıda da gözlemlendi; bazı kurulumlar genellikle paketler yüklendikten saatler, hatta dakikalar sonra gerçekleşti.
Peki, her şeyi başlatan PayPal isimleri? Bunlar da işe yaradı ve sonuçta 30 bin dolarlık bir ödül daha ortaya çıktı. Aslında, verilen hata ödüllerinin çoğunluğu, her programın politikasının izin verdiği maksimum miktarda ve bazen daha da yüksek bir miktarda belirlendi; bu da bağımlılık karışıklığı hatalarının genel olarak yüksek ciddiyetini doğruluyor.
Etkilenen diğer şirketler arasında Netflix, Yelp ve Uber yer alıyor.
“Bu Bir Hata Değil, Bir Özellik”
Çok sayıda bağımlılık karışıklığı bulgusuna rağmen, bir ayrıntı belirsizdi ve bir dereceye kadar hala da öyle: Neden bu oluyor mu? Bu tür bir güvenlik açığının ardındaki ana temel nedenler nelerdir?
Etkilenen kuruluşların çoğu, anlaşılır bir şekilde, temel nedenleri ve hafifletme stratejileri hakkında daha fazla teknik ayrıntı paylaşma konusunda isteksizdi, ancak araştırmam sırasında ve güvenlik ekipleriyle iletişimim sırasında birkaç ilginç ayrıntı ortaya çıktı.
Örneğin, Python bağımlılığı karışıklığının ana suçlusu, “tasarım gereği güvensiz” komut satırı argümanının yanlış kullanımı gibi görünüyor. --extra-index-url
. Bu argümanı kullanırken pip install library
kendi paket indeksinizi belirtmek için beklendiği gibi çalıştığını görebilirsiniz, ancak pip
aslında perde arkasında şöyle bir şey yapılıyor:
- olup olmadığını kontrol eder
library
belirtilen (dahili) paket dizininde mevcut - olup olmadığını kontrol eder
library
üzerinde mevcut halk paket dizini (PyPI) - Hangi sürüm bulunursa onu yükler. Paket her ikisinde de mevcutsa, varsayılan olarak kaynaktan yükleme yapılır. daha yüksek sürüm numarası.
Bu nedenle, adlı bir paketin yüklenmesi library 9000.0.0
PyPI’ye geçiş, yukarıdaki örnekte bağımlılığın ele geçirilmesine neden olacaktır.
Bu davranış zaten yaygın olarak bilinmesine rağmen GitHub’da arama yapmanız yeterlidir. --extra-index-url
Microsoft’un .NET Core bileşenini etkileyen bir hata da dahil olmak üzere, büyük kuruluşlara ait birkaç savunmasız komut dosyasını bulmak için yeterliydi. .NET Core’a arka kapı eklenmesine izin vermiş olabilecek güvenlik açığının ne yazık ki .NET hata ödül programının kapsamı dışında olduğu tespit edildi.
Ruby’nin gem install --source
aynı şekilde çalışır, ancak bulgularımdan herhangi birinin temel nedeninin bu kullanımın olup olmadığını doğrulayamadım.
Elbette değişiyor --extra-index-url
ile --index-url
hızlı ve basit bir düzeltmedir, ancak bağımlılık karışıklığının diğer bazı türlerinin hafifletilmesinin çok daha zor olduğu kanıtlanmıştır.
Her türden dahili paketi barındırmak için yaygın olarak kullanılan bir yazılım parçası olan JFrog Artifactory, dahili ve genel kütüphaneleri aynı “sanal” depoda birleştirme olanağı sunarak bağımlılık yönetimini büyük ölçüde basitleştirir. Ancak birçok müşteri, Artifactory’nin aynı adı taşıyan dahili ve harici bir paket sunmak arasında karar vermek için yukarıda açıklanan güvenlik açığına sahip algoritmanın aynısını kullandığını belirtti. Bu yazının yazıldığı sırada bu varsayılan davranışı değiştirmenin bir yolu yoktur.
JFrog’un sorunun farkında olduğu ancak olası düzeltmeyi görünürde ETA olmayan bir “özellik isteği” olarak ele aldığı bildirilirken, müşterilerinden bazıları bağımlılık yönetimindeki bağımlılık karışıklığını azaltmak için bağımlılık yönetimine sistemik politika değişiklikleri uygulamaya başvurdu. bu arada.
Microsoft ayrıca Azure Artifacts adında benzer bir paket barındırma hizmeti de sunmaktadır. Raporlarımdan birinin sonucunda, bağımlılık karışıklığı güvenlik açıklarına karşı güvenilir bir geçici çözüm sunabilmesini sağlamak amacıyla bu hizmette bazı küçük iyileştirmeler yapıldı. İlginçtir ki bu sorun, Azure Artifacts’in kendisi test edilerek değil, Microsoft’un kendi bulut tabanlı Office 365’ine başarılı bir şekilde saldırılarak keşfedildi; rapor, Azure’a mümkün olan en yüksek ödül olan 40.000 ABD Doları ile sonuçlandı.
Temel nedenler ve önleme tavsiyeleri hakkında daha ayrıntılı bilgi için Microsoft’un “Özel Paket Akışlarını Kullanırken Riski Azaltmanın 3 Yolu” adlı teknik incelemesine göz atabilirsiniz.
Gelecek Araştırması?
Büyük teknoloji şirketlerinin çoğu bu tür güvenlik açıklarından haberdar olmuş ve bunu altyapılarında düzeltmiş ya da hafifletici önlemleri uygulamaya çalışıyor olsa da, hala keşfedilecek daha çok şey olduğu hissine kapılıyorum.
Özellikle, dahili paket adlarını sızdırmanın yeni ve akıllı yollarını bulmanın daha da savunmasız sistemleri ortaya çıkaracağına ve hedeflemek için alternatif programlama dilleri ve depolara bakmanın bağımlılık karışıklığı hataları için bazı ek saldırı yüzeylerini ortaya çıkaracağına inanıyorum.
Bununla birlikte, deneyim düzeyiniz ne olursa olsun, bağımlılık yönetimi güvenliğiyle ilgili olsun ya da olmasın, biraz zaman ayırmanızı ve aklınızın bir köşesindeki bu fikri denemenizi tüm kalbimle tavsiye ediyorum.