Yazan: Asaf Karas, JFrog Security’nin CTO’su
İşletmeler rekabet avantajı oluşturmak ve hızlı hareket etmek için kurumsal uygulamalardan yararlanır. Çoğu durumda bu uygulamaların günlük olarak oluşturulması, güvenliğinin sağlanması, dağıtılması ve güncellenmesi gerekir. Hızlı yazılım teslimine öncelik vermek için DevOps’un gücünün devreye girdiği yer burasıdır.
İşletmelerin yazılım uygulamalarına yoğun bağımlılığı, yazılım dağıtımını hızlandırmaya yardımcı olabilecek açık kaynaklı yazılım (OSS) kitaplıklarının ve paketlerinin kullanımının artmasına neden oldu. Açık kaynak yazılımın yararları yadsınamaz olsa da, özellikle güvenlik söz konusu olduğunda kullanımı bazı zorlukları da beraberinde getiriyor. OSS, tüm kurumsal yazılımların kabaca yüzde 70 ila 90’ını oluşturuyor; bu da büyük ölçüde OSS’nin, kötü niyetli aktörlerin yazılım tedarik zincirlerindeki güvenlik açıklarını hedef aldığı siber tehditler için birincil hedef haline gelmesinin nedenidir.
Bu, geliştiricilerin artık her işletmenin bir yazılım tedarik zinciri saldırısına karşı ilk savunma hattı olduğu anlamına geliyor. İdeal olarak DevOps ekiplerinin, kuruluşlarının altyapısına sızmadan önce yüksek riskli paketlere karşı önleyici koruma sağlamaları gerekir; bu da açık kaynak paketlerinin erken aşama analizini gerektirir. Buradaki fikir, riskli veya kötü amaçlı bileşenleri istek veya güncelleme noktasında engellemek ve böylece bunların yazılım ekosistemine sızmasını engellemektir.
Yükselen Tehdit: Yazılım Paketinin Ele Geçirilmesi
Yazılım paketi ele geçirme, meşru yazılım paketlerine kötü amaçlı kodların enjekte edildiği, giderek artan önemli bir siber güvenlik tehdididir. Uygulaması zor olsa da, bu paketlerin yaygın kullanımı nedeniyle yöntem oldukça etkili ve yüksek enfeksiyon oranı yaratıyor. Bir paket ele geçirme olayı tespit edildikten sonra, paket bakımcıları veya genel depo yöneticileri, kötü amaçlı sürümü kaldırmak ve temiz bir sürüm yayınlamak için çalışır, böylece virüslü sürümü erişilemez hale getirir.
Yazılım paketi ele geçirmenin iki ana türü vardır:
- Harici Paket Ele Geçirme. Yazılım paketinin ele geçirilmesi, genellikle bakımcıların ve geliştiricilerin hesaplarına yetkisiz erişim kullanılarak veya açık kaynaklı projelere yapılan meşru kod katkılarına gizli kötü amaçlı kodların gizlice enjekte edilmesi yoluyla gerçekleştirilir. Bunun nispeten yeni bir örneği, 180 milyondan fazla indirmeye sahip ünlü bir Python makine öğrenimi çerçevesi olan PyTorch kütüphanesinde görüldü.
Aralık 2022’de PyTorch, doğrudan makine öğrenimi (ML) geliştirici topluluğunu hedef alan bir bağımlılık ele geçirme saldırısıyla karşılaştı. Saldırgan, PyTorch bakımcısının kimlik bilgilerini başarıyla ele geçirdi ve projeye “torchtriton” adlı kötü amaçlı bir bağımlılık ekledi. Kötü amaçlı paket yalnızca beş gün içinde 3.000’den fazla indirme sayısına ulaştı.
Torchtriton’un içinde gizlenen yük, Secure Shell (SSH) anahtarları ve ortam değişkenleri de dahil olmak üzere hassas bilgileri sızdırarak bunları saldırganın sunucusuna gönderiyor.
- Kendi Paketinin Ele Geçirilmesi (Protestware). Yazılım paketinin ele geçirilmesi, harici kötü niyetli aktörlerle sınırlı değildir; geliştiriciler ve proje yürütücüleri bazen bu faaliyete inançlarını bir protesto veya savunuculuk biçimi olarak dahil ederler. Genellikle “protesto yazılımı” olarak adlandırılan bu tür korsanlık endişe verici bir trend çünkü bir kuruluşun çok geç olmadan bunu fark etmesi zor olabilir.
Örneğin, Node.js geliştiricileri tarafından oldukça tercih edilen iki npm paketi olan “faker” ve “colors”u ele alalım. “Renkler” paketi, geliştiricilerin Node.js konsoluna stiller, yazı tipleri ve renkler uygulamasına olanak tanırken “faker”, geliştirme sırasında test amaçlı veri oluşturmaya yardımcı olur.
Oldukça popüler hale gelen ve haftalık milyonlarca indirilme sayısına ulaşan her iki paketi de aynı kişi yazdı. Ocak 2022’de yazar, açık kaynak topluluğuna katkıda bulunmayan büyük şirketleri protesto etmek için paketleri kasıtlı olarak sabote etti. Koda sonsuz bir döngü enjekte ederek her iki paketi de sabote ettiler ve bu paketlere bağlı binlerce projeyi etkili bir şekilde çalışamaz hale getirdiler. Bozuk sürümlerin yayınlanmasının ardından bu kötü niyetli değişikliğin tespit edilmesi iki gün sürdü.
Paket kodunda bu tek değişikliğin yapılmasıyla çok sayıda şirket kötü amaçlı koddan etkilendi ve ürünlerinde ve geliştirme iş akışlarında önemli kesintilerle karşı karşıya kaldı.
Savunma Mekanizması: Kodlamadan Önce Düzenleyin
Bu ele geçirme yöntemlerinin son yıllarda öne çıkması şaşırtıcı değil; uygulamaların yüzde 96’ya kadarı en az bir açık kaynak bileşeni içeriyor. Geliştiriciler yazılım üretimi üzerinde işbirliği yaptıkça, konu yazılım geliştirme hattının güvenliğine geldiğinde aşina olmaları gereken bir kelime vardır: iyileştirme.
Yüksek düzeyde, “küratörlük” kelimesi, öğelerin düşünceli bir şekilde seçilmesi ve düzenlenmesi eylemi olarak tanımlanır; bu, genellikle makaleler, görseller, müzik vb. ile ilişkilendirilen bir süreçtir. Ancak bu durumda, seçilen öğeler, yazılım hattının ağ geçidini korumak için otomatik bir kilit görevi görecek şekilde açık kaynaklı yazılım bileşenleridir. Geliştirme yaşam döngüsü boyunca güvenilir bileşenlerin kullanılmasını sağlamak için yazılım paketlerinin önceden belirlenmiş politikalara göre filtrelenmesini, izlenmesini ve yönetilmesini gerektirir.
Yazılım bileşenlerinin iyileştirilmesi, paketlerin güvenliğini, güvenilirliğini ve mevcut durumunu garanti ederek geliştirmeyi kolaylaştırır. Buradaki fikir, güvenilir bir paket kaynağı oluşturarak kuruluşun yazılım tedarik zincirini güçlendiren kapsamlı bir yaklaşım aracılığıyla hem bilinen hem de bilinmeyen risklere karşı koruma sağlamaktır.
DevSecOps (geliştirme + güvenlik + operasyonlar) kavramı önem kazandıkça, iyileştirme ilk savunma görevi görür ve kuruluş içindeki uyumu iyileştirmek ve genel geliştirici deneyimini geliştirmek için yazılım geliştirme sürecinin erken aşamalarında paketle ilgili riskleri önler. Tedarik zinciri içindeki yazılım paketlerinin etkili bir şekilde düzenlenmesi, geliştirme ekiplerine güvenli yapı taşları sunarak gönül rahatlığı sağlar.
Sonuçta, dış aktörlerin ve hatta bazı durumlarda bizzat geliştiricilerin kötü amaçlı kod yürütmek için yazılım paketlerine saldırması nedeniyle yazılım paketinin ele geçirilmesi, siber güvenlik ortamında giderek artan bir endişe haline geliyor. Yazılım paketlerinin proaktif olarak iyileştirilmesi yoluyla dikkatli olunması, yazılım tedarik zinciri genelinde iyileştirilmiş güvenlik önlemleri ve olaylara hızlı yanıt verilmesi, sayısız geliştiricinin ve kuruluşun güvendiği yazılım paketlerinin bütünlüğünü korumak için çok önemlidir.
yazar hakkında
Asaf Karas, JFrog Security’nin Teknolojiden Sorumlu Başkanıdır. Tecrübeli bir güvenlik uzmanı olan Karas, tersine mühendislik, cihaz hata ayıklama, ağ adli bilişimi, kötü amaçlı yazılım analizi, büyük veri ve anormallik tespiti konularında geniş deneyime sahiptir. JFrog’dan önce Karas, bağlantılı, IoT ve gömülü cihazlar için tasarlanmış entegre bir güvenlik platformu sağlayan Vdoo’da CTO olarak görev yapıyordu. Vdoo, Haziran 2021’de JFrog tarafından satın alındı. Karas ayrıca birkaç yıl boyunca uluslararası askeri kuruluşlarla çalıştı. Asaf, 100’den fazla siber uzmanın şube lideri olarak görev yaptığı İsrail Savunma Kuvvetleri’nde neredeyse 15 yılını güvenlik araştırmalarına liderlik ederek geçirdi. Asaf’a çevrimiçi olarak (LinkedIn, @JFrogSecurity) ve şirketimizin web sitesinde https://jfrog.com/