Bir önceki yazımızda da bahsettiğimiz gibi, açık kaynaklı bileşenlerin kullanımı olmadan modern yazılım geliştirme pratikte düşünülemez. Ancak son yıllarda bu konuyla ilgili riskler giderek daha çeşitli, karmaşık ve çok sayıda hale gelmiştir. Birincisi, güvenlik açıkları bir şirketin altyapısını ve kodunu düzeltilme hızından daha hızlı etkilediğinde; ikincisi, veriler güvenilmez ve eksik olduğunda ve üçüncüsü, kötü amaçlı yazılımlar yaygın olarak kullanılan bileşenlerin içinde gizlendiğinde sadece sürüm numaralarını taramak ve BT ekibine düzeltme talepleri göndermek yeterli değildir. Güvenlik açığı yönetimi, yazılım indirme ilkelerini, yapay zeka asistanları için koruma önlemlerini ve yazılım derleme sürecinin tamamını kapsayacak şekilde genişletilmelidir.
Güvenilir bir açık kaynak bileşen havuzu
Çözümün temel amacı, güvenlik açığı bulunan ve zararlı kodların kullanılmasını önlemektir. Aşağıdaki önlemler alınmalıdır:
- Kendi içinde bir yapı ögeleri deposuna sahip olmak: İç geliştirme için bileşenlerin tek kaynağı, bileşenlerin ancak bir dizi kontrolün ardından kabul edildiği tek bir depo olmalıdır.
- Bileşenlerin titiz bir şekilde taranması: Bunlar arasında; bileşenin bilinen sürümleri, bilinen güvenlik açığı bulunan ve zararlı sürümler, yayın tarihi, etkinlik geçmişi ile paketin ve yazarlarının itibar durumu yer alır. Paketin tüm içeriğini (derleme talimatları, test senaryoları ve diğer yardımcı veriler dahil) taramak zorunludur. Verilerin alınırken kayıt defterini filtrelemek için, özel açık kaynaklı tarayıcılar veya kapsamlı bir bulut iş yükü güvenlik çözümü kullanın.
- Bağımlılık sabitleme işlemi gerçekleştirme: Derleme süreçleri, yapay zeka araçları ve geliştiriciler, sürümleri belirtirken şablonlar (örneğin “en son”) kullanmamalıdır. Proje derlemeleri, doğrulanmış sürümleri temel almalıdır. Aynı zamanda, sabitlenmiş bağımlılıklar, uyumluluğu koruyan ve bilinen güvenlik açıkları içermeyen en son doğrulanmış sürümlere düzenli olarak güncellenmelidir. Bu, bilinen bir paketin ele geçirilmesi yoluyla gerçekleşen tedarik zinciri saldırılarının riskini önemli ölçüde azaltır.
Güvenlik açığı verilerinin iyileştirilmesi
Güvenlik açıklarını daha etkili bir şekilde tespit etmek ve bunları doğru bir şekilde önceliklendirmek için, bir kuruluşun çeşitli BT ve güvenlik süreçleri oluşturması gerekir:
- Güvenlik açığı verilerinin zenginleştirilmesi: Kuruluşun ihtiyaçlarına bağlı olarak, bu işlem ya NVD, EUVD, BDU, GitHub Advisory Database ve osv.dev gibi kaynaklardan gelen verileri birleştirerek bilgileri zenginleştirmek ya da verilerin halihazırda toplanmış ve zenginleştirilmiş olduğu ticari bir güvenlik açığı istihbarat beslemesi satın almak için gereklidir. Her iki durumda da gerçek dünyadaki istismar eğilimlerini takip etmek ve belirli güvenlik açıklarını hedef alan saldırganların profiline ilişkin bilgi edinmek için tehdit istihbaratı kaynaklarını da izlemeye değer. Kaspersky, özellikle açık kaynaklı bileşenlere odaklanan özel bir veri akışı sunmaktadır.
- Kapsamlı yazılım bileşimi analizi: Özel yazılım bileşimi analizi (SCA) araçları, açık kaynak kodundaki bağımlılık zincirinde doğru bir şekilde gezinilmesini sağlayarak, kullanılan kütüphanelerin tam bir envanterini çıkarır ve güncel olmayan veya desteklenmeyen bileşenleri tespit eder. Sağlıklı bileşenlere ilişkin veriler, ürün kayıt defterini zenginleştirmek açısından da yararlıdır.
- Terk edilmiş yazılımları belirleme: Bir bileşen resmi olarak güvenlik açığına sahip olmasa ve resmi olarak destek dışı ilan edilmemiş olsa bile, tarama işlemi bir yıldan uzun süredir güncelleme almamış bileşenleri işaretlemelidir. Bunlar, kullanım ömrü sona eren bileşenler gibi ayrı bir incelemeyi ve muhtemel değiştirilmeyi gerektirir.
Yapay zeka kodlarının ve yapay zeka ajanlarının güvenliği
Kodlamada kullanılan yapay zeka sistemleri, girdi verilerinin filtrelenmesinden kullanıcı eğitimine kadar uzanan kapsamlı bir dizi güvenlik önlemi ile desteklenmelidir:
- Bağımlılık önerilerine ilişkin kısıtlamalar: Geliştirme ortamını, yapay zeka ajanlarının ve asistanlarının yalnızca güvenilir yapı kayıt defterindeki bileşenlere ve kütüphanelere başvurabilmesini sağlayacak şekilde yapılandırın. Eğer bunlar doğru araçları içermiyorsa, model, PyPI’dan sadece açıklamaya uyan bir şeyi çekmek yerine, bağımlılığı kayıt defterine eklemek için bir talep başlatmalıdır.
- Model çıktılarını filtreleme: Bu kısıtlamalara rağmen, yapay zeka kodunun güncel olmayan, desteklenmeyen, güvenlik açığı bulunan veya uydurma bağımlılıklar içermediğinden emin olmak için model tarafından üretilen her şeyin de doğrulanması gerekir. Bu kontrol, kod kabul sürecine veya derleme hazırlık aşamasına doğrudan entegre edilmelidir. Bu, geleneksel statik analiz sürecinin yerini almaz: SAST araçları yine de CI/CD sürecinde yerleşik olmalıdır.
- Geliştirici eğitimi: BT ve güvenlik ekipleri, yapay zeka sistemlerinin özelliklerini, çalışma prensiplerini ve sık karşılaşılan hataları çok iyi bilmelidir. Bunu başarmak için, çalışanlar kendi görevlerine özel olarak hazırlanmış bir eğitim programını tamamlamalıdır.
Kullanım ömrü sona ermiş bileşenlerin sistematik olarak kaldırılması
Bir şirketin sistemlerinde güncel olmayan açık kaynaklı bileşenler kullanılıyorsa, bu bileşenlerin güvenlik açıklarını gidermek için sistematik ve tutarlı bir yaklaşım benimsenmelidir. Bunu yapmak için üç temel yöntem vardır:
- Geçiş: Bu, bir bileşenin tamamen değiştirilmesini ve ardından bu bileşen üzerine kurulmuş uygulamaların uyarlanmasını, yeniden yazılmasını veya değiştirilmesini içeren, organizasyonel açıdan en karmaşık ve maliyetli yöntemdir. Bir geçiş kararı, özellikle tüm iç kodun kapsamlı bir şekilde elden geçirilmesini gerektirdiğinde oldukça zorlayıcıdır. Bu durum genellikle temel bileşenleri etkiler; Node.js 14 veya Python 2’den kolayca geçiş yapmak imkansızdır.
- Uzun vadeli destek (LTS): Büyük ölçekli eski sistem projeleri için özel bir destek hizmetleri pazarı bulunmaktadır. Bazen bu, üçüncü taraf geliştiriciler tarafından sürdürülen eski sistemin bir çatalını içerir; diğer durumlarda ise uzman ekipler, belirli güvenlik açıklarını gideren yamaları desteklenmeyen eski sürümlere geriye uyarlama yoluyla uygular. LTS sürümüne geçiş genellikle sürekli destek maliyetleri gerektirir, ancak bu durum çoğu durumda tam bir geçişten daha uygun maliyetli olabilir.
- Düzeltici önlemler: Ayrıntılı analiz sonuçlarına dayanarak, eski üründeki güvenlik açıklarının kötüye kullanılması riskini azaltmaya yönelik kapsamlı bir dizi güvenlik önlemi alınabilir. Bu yaklaşımın hem etkinliği hem de ekonomik uygulanabilirliği, yazılımın kuruluş içindeki rolüne bağlıdır.
Güvenlik, BT ve iş birimleri, belgelenmiş her bir kullanım ömrü sonu (EOL) veya kullanımdan kaldırılmış bileşen için bu üç yoldan birini seçmek üzere işbirliği yapmalı ve yapılan seçimi şirketin varlık kayıtlarına ve SBOM’larına yansıtmalıdır.
Risk temelli açık kaynak güvenlik açığı yönetimi
Yukarıda sıralanan tüm önlemler, kuruma giren güvenlik açığı bulunan yazılım ve bileşenlerin sayısını azaltır ve güvenlik açıklarının tespitini ve giderilmesini kolaylaştırır. Buna rağmen, her bir kusuru ortadan kaldırmak imkânsızdır: Uygulama ve bileşenlerin sayısı çok hızlı artmaktadır.
Bu nedenle, güvenlik açıklarını gerçek hayattaki risklere göre öncelik sırasına koymak hâlâ büyük önem taşımaktadır. Risk değerlendirme modeli, açık kaynağın özelliklerini dikkate alacak şekilde genişletilmeli ve aşağıdaki soruları yanıtlamalıdır:
- Güvenlik açığı bulunan kod dalı, kuruluşun ortamında gerçekten çalıştırılıyor mu? Tespit edilen güvenlik açıkları için erişilebilirlik analizi yapılmalıdır. Kuruluşun kendi uygulamasında birçok hatalı kod parçacığı hiçbir zaman çalıştırılmadığından, bu güvenlik açığından yararlanılması imkansız hale gelir. Bazı SCA çözümleri bu analizi gerçekleştirebilir. Aynı süreç, alternatif bir senaryoyu değerlendirmemize olanak tanır: Ya savunmasız prosedürler veya bileşenler projeden tamamen çıkarılırsa ne olur? Bazen bu düzeltme yöntemi şaşırtıcı derecede zahmetsiz olmaktadır.
- Bu güvenlik açığı gerçek hayattaki saldırılarda kullanılıyor mu? Bir kavram kanıtı (PoC) mevcut mu? Bu soruların yanıtları, EPSS gibi standart önceliklendirme çerçevelerinin bir parçasıdır; ancak izleme, çok daha geniş bir istihbarat kaynakları yelpazesi üzerinden gerçekleştirilmelidir.
- Bu bağımlılık kayıt defterinde veya ilgili ve benzer bileşenlerde siber suç faaliyetleri bildirilmiş mi? Bunlar, önceliklendirme için dikkate alınması gereken ek faktörlerdir.
Bu faktörleri göz önünde bulundurmak, ekibin kaynakları etkin bir şekilde tahsis etmesini ve en tehlikeli kusurları öncelikle gidermesini sağlar.
Şeffaflık artık moda
Açık kaynaklı yazılımlar için güvenlik çıtası giderek yükselmeye devam edecek. Uygulama geliştiren şirketler, iç kullanım amaçlı olsa bile, sistemlerinde belgelenmiş ve doğrulanabilir siber güvenlik önlemleri almasını gerektiren yasal baskılarla karşı karşıya kalacak. Sonatype uzmanlarının tahminlerine göre, dünya çapındaki şirketlerin %90’ı halihazırda kullandıkları yazılımın güvenilirliğini kanıtlamak için bir veya daha fazla gerekliliğe tabi; bu nedenle uzmanlar şeffaflığı “yazılım tedarik zinciri güvenliğinin temel unsuru” olarak görüyor.
Kuruluşlar; açık kaynaklı bileşenlerin ve uygulamaların kullanımını kontrol ederek, tehdit istihbaratını zenginleştirerek ve yapay zeka destekli geliştirme sistemlerini sıkı bir şekilde takip ederek, hem iş dünyasının ihtiyaç duyduğu yenilikleri hayata geçirebilir hem de düzenleyici kurumlar ve müşteriler tarafından belirlenen yüksek standartları karşılayabilirler.
güvenlik açıkları