Kurumsal yazılımlar açık kaynak bileşenlerine her zamankinden daha fazla bağımlıyken, modern uygulama güvenliğinin büyük bir unsuru, açık kaynak topluluğunun savunmasız kodu ne kadar iyi destekleyebileceğine bağlıdır. Black Hat ABD sunumu “OSS Açıklarını Bir Kez ve Herkes İçin Ortadan Kaldırmak için Güvenlik Araştırmacısını Ölçeklendirme” bu cephedeki ilerlemeyi hızlandırabilecek bazı önemli araçları ve stratejileri ele alacak.

HUMAN Security’de Dan Kaminsky Fellow’un açılış konuşmasını yapan Jonathan Leitschuh, güvenlik araştırma topluluğunun, büyük ölçüde daha fazla sayıda yüksek riskli durumu ele almayı kolaylaştıracak şekilde açık kaynak sağlayıcılarla işbirliği yapmak için otomatik toplu çekme talebi oluşturmayı nasıl kullanabileceğini incelemeyi planlıyor. kusurlar.

Leitschuh, burs yılını açık kaynak güvenlik açığı düzeltmesini ölçeklendirmeye yönelik araçları ve yöntemleri geliştirmek için kullandı. Dark Reading, yaklaşan konuşmasını tartışmak ve çalışmalarının daha derinlerine dalmak için Leitschuh ile görüştü. (Röportaj, kısalık ve netlik için hafifçe düzenlenmiştir.)

Dark Reading: Black Hat konuşmanızdaki dinleyiciler için 1 numaralı paket servisin ne olacağını düşünüyorsunuz?
Leitschuh: Sunumum, açık kaynak güvenlik açıklarını ve birkaçının düşündüğünüzden daha yaygın olduğunu inceleyecek. Örneğin, Perforce’nin sahip olduğu bir proje var. sıfır dönüş/zt-zipaçık kaynak genelinde düzeltmeye çalıştığım güvenlik çekme isteği düzeltmelerinin üçünü de aldı.

Daha da önemlisi, paylaşmayı düşündüğüm en büyük etki, yaygın ve yaygın güvenlik açıklarını geniş ölçekte düzeltmenin nasıl mümkün olduğudur. Teknolojiye sahibiz. Tek yapmamız gereken ondan yararlanmak.

Amacım, bu güvenlik açıklarını düzeltmenin etkileşimli bir sorun olmadığını göstermek. Matematik, bilim, teknoloji ve güvenlikle çözebiliriz. Önerilen düzeltmelerinizin kabul edilmesini istiyorsanız, erişilebilir, esnek ve açık fikirli olmalısınız.

Güvenlik açıkları söz konusu olduğunda, insanlar direksiyonda uyuyor değil. Genellikle belirli sorunların farkında değiller ve Web’in varsayılan olarak güvensiz olduğu şeyleri birleştirmek için.

Karanlık Okuma: Senenin başında ilk konuştuğumuzda, sen sadece burs içinde ayaklarını ıslatıyor ve yılını planlıyordun. Açık kaynak güvenlik açığı azaltma ölçeğini genişletmek için CodeQL, OpenRewrite ve diğer araçları kullanma konusunda kaydettiğiniz ilerleme hakkında bana bir güncelleme sunabilir misiniz?
Leitschuh: Düzeltmeyi amaçladığım güvenlik açıklarını desteklemek için OpenRewrite’ta eksik veya kısmen uygulanan Veri Akışı ve Kontrol Akışı analizi de dahil olmak üzere özellikleri yeniden uygulamak zorunda kaldım. Kontrol Akışı özelliği özellikle zordu ancak stajyerim Shyam Mehta ile mükemmel bir işbirliği sayesinde mümkün oldu. Üniversitede benim almadığım birkaç ders almıştı, özellikle de işimizde özellikle yardımcı olan derleyiciler hakkında.

Önceki araştırmamdan eski güvenlik açıklarının yeni örneklerini düzeltmek için 400’den fazla çekme isteği oluşturduk ve OpenRewrite olmadan mümkün olmayacak yeni güvenlik açıklarını düzeltmek için 170’in üzerinde çekme isteği oluşturduk.

Karanlık Okuma: Karşılaştınız mı? sürprizler var mı?
Leitschuh: Bakımcılardan gelen geri bildirimler genel olarak olumluydu, ancak OSS bakımcılarının yanında ne kadar dikkatli olmanız gerektiğini görmek her zaman ilginç olmuştur. Yaptığınız otomatik düzeltmenin çevreleyen koda benzediğinden emin olmak çok önemlidir. Bakımcılardan aldığım en büyük geri dönüşlerden biri, çekme isteklerine birim testleri dahil etmemekle ilgili. Ne yazık ki, kod tabanları çoğu zaman düzeltmeye ek olarak otomatik olarak bir birim testi oluşturmak için çok karmaşıktır.

Karanlık Okuma: Yıl boyunca keşfettiğiniz araçların en etkili bulgusu/teknik/uygulaması neydi?
Leitschuh: Başlangıç ​​olarak, sıfırdan başlamam ve bir veri analizi yapmam gerekiyordu. CodeQL’i kullanmak, bilgilerimi yalnızca farklı programlama dilleri arasında değil, aynı zamanda sorgu dilinden prosedürel bir dile çevirmem gerektiğinden çok önemliydi.

Shyam, son güvenlik açığı için ihtiyacımız olan bu yeni özelliği doğru bir şekilde oluşturduğumdan emin olmamda etkili oldu: Zip Slip, bir zip dosyasını, dosya içeriğinin üzerine keyfi olarak yazabilecek ve potansiyel olarak uzaktan kod yürütülmesine izin verecek şekilde açan Zip Slip .

Bir not olarak, Snyk bu konuda zaten bazı çalışmalar yapmıştı, ancak araştırmacılarının oluşturmak için bakımcılarla çalıştığı hafifletmelerin bazılarının %100 doğru olmadığı bulundu.

Karanlık Okuma: Uygulamadaki tekniklerinize dair iyi bir örneğiniz var mı?
Leitschuh: Daha fazla mevcut araştırmadan haberdar olduğumda, bulunmayı bekleyen daha fazla güvenlik açığı olduğunu biliyordum.

Bir CodeQL sorgusundan GitHub Güvenlik Laboratuvarı ekibi bana Zip Slip’e karşı potansiyel olarak savunmasız olan 900 deponun bir listesini sağladı. 900’den bugüne kadar 86 Zip Slip düzeltme çekme isteğinde bulunduk, bu da şu anda olası düzeltmeleri olan 86 kritik güvenlik açığı anlamına geliyor.

Karanlık Okuma: Topluluğun katkıda bulunabileceğini ve üzerinde çalışabileceğini umduğunuz herhangi bir gevşek nokta var mı?
Leitschuh: Özellikle 900 depo ve 86 düzeltme arasındaki boşluğu çevreleyen, topluluğun yardımına ihtiyaç duyduğumuz önemli bir boşluk var.

Projelerin listesi, arşivlenmiş ve bakımı yapılmayan diğer projeleri içeriyordu; bu, güvenlik açıklarının yakın zamanda giderilemeyeceği, ancak en azından olası düzeltmelerle birlikte artık görünür oldukları anlamına geliyor.

Daha gelişmiş tekniklerle düzeltilmeyi bekleyen çok sayıda açık kaynak güvenlik açığı var.

Karanlık Okuma: Pratikte, uygulayıcıların öğrendiklerinizi eyleme geçirmesi için ne gerektiğini düşünüyorsunuz?
Leitschuh: İdeal olarak, ilk adım, güvenlik açıklarına yönelik aramaları ifade edebilmeleri için CodeQL’yi öğrenmek olacaktır. Ardından, düzeltmeler oluşturmak için OpenRewrite gibi bir şey kullanmayı öğrenin. Ardından toplu PR gönderimiyle ilgili en iyi uygulamalar.

Uygulayıcıların belirli bir projede kullanılan dil hakkında en azından temel bir anlayışa sahip olmaları da faydalı olacaktır, çünkü bu onların ilgili güvenlik açıklarını ve riskleri daha iyi anlamalarını sağlar.

Merak da önemli bir bileşendir, böylece güvenlik açığını keşfedebilir ve inceleyebilirler. Örneğin, bir uygulayıcı GitHub Kod Arama ile üstünkörü bir arama yapabilir, örnekler derleyebilir ve ardından güvenlik açığını doğrudan nasıl ele alabileceğinizi değerlendirmek için birkaç birim testi yazabilir.

Karanlık Okuma: Bugün yazılım tedarik zinciri güvenliğinin en büyük sorunlarını çözmek için nasıl çalışmamız gerektiğini düşündüğünüz konusunda yıl boyunca görüşleriniz nasıl değişti?
Leitschuh: Yazılım güvenliği tedarik zinciri, benim işim projedeki gerçek güvenlik açıklarıyla ilgili olduğu için biraz farklı. Bununla birlikte, güvenlik açıkları için derin incelemelerde çok fazla değer vardır, ancak yüzeyde çok sayıda güvenlik açığı olduğu benim için çok açık hale geldi.

Bu güvenlik açıklarının dışarıda olduğunu biliyoruz. Tarayıcıları bir bakıcının eline verirsen çok fazla gürültü görürler. Neyin iyi neyin kötü olduğunu filtrelemek zorundalar. Bir çekme isteği ile, düzeltmeseniz bile, yine de, umarım, yazılımınızı sertleştirir.

Bunu gelmeden önce biliyordum, ancak bakıcıların ne kadar seçici olabileceği benim için çok açıktı. Kodu ve biçimlendirmeyi doğru almanız gerektiğine dair bir onay var; Bakımcılardan gelen tepkileri gördüğünüzde mesajlaşmayı ve buna göre genel tepki vermeyi ihmal edemezsiniz.

İnsanlar egolarını yazılımlarına kaptırıyorlar, ki bu benim de suçum olabilir. Onlara belli bir şekilde meydan okuyorsunuz – hatta bir tehdit gibi davranıyorsunuz. Örnek olarak, bunu sadece yanlış yazmadınız, gerçek bir güvenlik açığı olacak şekilde yazdınız. Bir böcekten daha büyük. Açık kaynaklı yazılımın insani yönüne sağlıklı bir saygı duymak önemlidir.

Karanlık Okuma: Güvenlik pratisyenlerinin ve araştırmacılarının OSS projelerini sürdürenler için masaya daha fazla saygı göstermesinin neden önemli olduğunu düşünüyorsunuz? Sonuç olarak siber güvenlik nasıl gelişebilir?
Leitschuh: Açık kaynak geliştiricinin durumunu kesinlikle anlıyorum. Zor ve talepkar ve çoğu zamanlarını gönüllü olarak harcıyor. Kötü niyetli aktörlere karşı önemli bir savunma hattıdırlar ve geniş bir açık kaynak projesini ele almak zorundadırlar.

Projelerin bakımcılarının ve sahiplerinin bunu boş zamanlarında yaptıklarının farkında olmalısınız, bu nedenle, önerilen değişikliklerinizi her zaman baştan kabul etmelerini beklemek yerine, onlarla aktif olarak işbirliği yapmak önemlidir.

İşbirliği içinde çalıştığımızda siber güvenlik konusunda elimizden gelenin en iyisini yaparız. Bakımcılar sürecin bir parçasıdır ve bu şekilde tanımlanmalı ve saygı gösterilmelidir.

Karanlık Okuma: Burstan çıkarken sizin ve araştırmanız için sırada ne var?
Leitschuh: Henüz tam olarak emin değilim. Bu araştırmanın bir sonraki aşamaya taşındığını görmek isterim. Veri akışı ve kusur izleme ile deterministik olarak keşfedilebilen SQL enjeksiyonu gibi belirli güvenlik açıkları vardır (çünkü CodeQL bunu zaten yapıyor).

Karmaşık bit, bir algılamayı bir düzeltmeye dönüştürmektir. Yazılım geliştiricileri birçok farklı yolla kod yazar, geliştiricilerin kod yazabileceği tüm farklı yollar için düzeltmeler yazmaya çalışmak zor bir iştir.

Leitschuh, Patrick Way of Moderne (OpenRewrite’ın açık kaynak sağlayıcılarından biri) ve Pennsylvania Üniversitesi’nde okuyan bir yazılım mühendisi olan Shyam Mehta ile birlikte sunum yapıyor. Leitschuh, Way’in Leitschuh’a “sıfırdan OpenRewrite”ı öğrettiğini ve Mehta’nın “burslaşma sürecinde etkili olduğunu” söylüyor.

“Ne zaman bir sorunu çözmem gerekirse ve biraz daha yavaş hareket edebildiğimde veya bir şeyi oluştururken daha fazla düşünmem gerektiğinde, programla eşleştiririm. [Mehta], kodu yazdığı ve talimatları verdiğim yer. Ayrıca bir kontrol akışı analizi yaparak yardımcı oldu, konuşmada kullanılan iki büyük Kontrol Akışı örnek grafiği için kullanıcı arayüzünü oluşturdu ve hata ayıklama ile yardımcı oldu,” diyor Leitschuh.



siber-1