ne zaman bir CUPS baskı sistemindeki kritik güvenlik açığı Güvenlik ekipleri arasında alarm vermeye başladığında Detectify, durumu ele almak için zaten savaş odası moduna girmişti. Gün içinde müşteriler, Detectify’ın gizli çalışma şeklini yeniden şekillendiren ve güvenlik tehditlerine daha hızlı ve daha verimli yanıt verilmesini sağlayan yeni bir tarama motoru çerçevesinin kullanıma sunulması sayesinde savunmasız olup olmadıklarını test edebildiler. Detectify Under the Hood blog serisinin bu ilk yazısında yeni motor çerçevemizi tanıtacağız.
26 Eylül Perşembe günü, güvenlik araştırmacısı evilsocket, kritik öneme sahip GNU/Linux kimlik doğrulamasız uzaktan kod yürütme (RCE) güvenlik açığına ilişkin bir PoC ile birlikte bir yazı yayınladı CUPS’u etkileyen açık kaynaklı baskı sistemi.
Saldırganlar, özel hazırlanmış IPP paketlerini bardaklara göz atılan (CVE-2024-47176CUPS’un, kötü amaçlı IPP özelliklerinin döndürüldüğü, saldırgan tarafından kontrol edilen bir sunucuya bağlanmasına neden olur. İkincisi daha sonra CUPS ekosistemindeki bileşenlerden daha fazla yararlanmak için kullanılabilir (CVE-2024-47076, CVE-2024-47175Ve CVE-2024-47177). Kötüye kullanım, kurban etkilenen cihazdan bir yazdırma işi çalıştırdığında tetiklenir ve uzaktan kod yürütülmesine (RCE) yol açar. RCE güvenlik açıkları genellikle en kritik güvenlik açıkları olarak kabul edilir ve saldırganlara veri hırsızlığı, yetkisiz erişim ve kötü amaçlı yazılım ve arka kapılar aracılığıyla sistemin tamamının ele geçirilmesi dahil olmak üzere kötü amaçlı eylemler gerçekleştirmeleri için birden fazla seçenek sunar.
CUPS hatası tespit edilir edilmez Detectify, güvenlik açığına yönelik bir test oluşturmak ve müşterilerin böylesine kritik bir tehdide karşı güvende kalmasını sağlamak için savaş odası moduna girdi. Amacımız gün içerisinde bir test motorunu üretime geçirmekti.
Güvenlik açığının test edilmesi
Müşteri sistemlerinin savunmasız olup olmadığını değerlendirmek için, veri yükünde bir geri arama URL’si içeren belirli bir UDP isteğini, bardaklara göz atma hizmetini çalıştıran sunucudaki bir uç noktaya göndermemiz gerekir. Bu eylem sisteme yeni bir yazıcı ekleyecektir. Uzaktan kod yürütmeyi gerçekleştirmek için genellikle bir kullanıcı eyleminin bir şeyi yazdırmasını beklememiz gerekse de, yalnızca yazdırma sisteminden geri arama alarak sunucunun savunmasız olduğunu belirleyebiliriz. Bu, yazıcının başarıyla eklendiğini ve daha sonra kötü amaçlı eylemler gerçekleştirebileceğimizi doğrular.
Motor çerçevemize merhaba deyin
Bu yolculuktaki başarının bir kısmı, motorları hızlı bir şekilde çıkarmamıza yardımcı olan yeni inşa edilmiş motor çerçevemizin kullanılmasıydı. Bizim için motor, bir dizi güvenlik açığı testini nasıl paketleyip çalıştırdığımızdır. Bir dizi hedefi kullanan ve güvenli olup olmadıklarını değerlendirmek için bunlar üzerinde güvenlik açığı testleri gerçekleştiren sanal bir bilgisayar korsanı olarak görülebilir.
Birçok farklı motorumuz var ve sıklıkla yenilerini yaratmamız gerekiyor. Motor çerçevemiz, ticarileştirilmiş motor kodunun çoğunu oluşturan tek tıklamayla dağıtım yöntemini mümkün kılarak ve geliştiricilerimizin zamanlarını güvenlik araştırmalarında yenilik yapmaya harcayabilmeleri için işlevselliği destekleyerek bizim için ağır işleri yapıyor.
Temel olarak tüm motorlar Git depoları, derleme işlem hatları, kod olarak altyapı ve dağıtım otomasyonu gibi geliştirme araçlarına ihtiyaç duyar. Ayrıca zamanlayıcı, hız sınırlama, zorlama/kaçınma listeleri, ölçüm gözlemlenebilirliği, arka ofis işlevselliği, gerçekleştirilen testlerde şeffaflık, bulunan güvenlik açıklarının yaşam döngüsü ve durumu gibi ürün özelliklerine ve bunlarla otomatik etkileşim kurma yöntemine de ihtiyaçları var. Bu motorlar arasındaki tek fark, otomatikleştirdikleri özel güvenlik araştırmalarında ve testlerinde yatmaktadır. Yeni bir güvenlik açığı türünü test etmeye başlamak için odaklanmamız gereken tek unsur budur.
Bir motor çerçevesine sahip olmak, yineleme hızını artırmak ve bilişsel yükü azaltmaktan, işletme maliyetlerini optimize etmeye ve yeni tür güvenlik açıklarına yanıt süresini kolaylaştırmaya kadar hem bize hem de müşterilerimize çeşitli faydalar sağlar. Gelecek blog yazılarımızda motorun farklı temel yönlerini daha ayrıntılı olarak inceleyeceğiz.
Doğrulama için bir kerelik çalıştırma
Herhangi bir motordaki ilk adım, güvenlik araştırmasının üretim ortamında çalıştığını doğrulamaktır. Motor çerçevesi, arka ofis işlevleri için kullanılan, kullanıma hazır bir GraphQL API’si sağlar; örneğin satış mühendislerimizin, belirli hedeflere yönelik hangi testleri yürüttüğümüz konusunda daha derinlemesine bilgi edinmelerine olanak tanır. Bu API aynı zamanda motora bir hedef ve kapsam sağlandığında sonuçları veren ve motorun doğru çalışıp çalışmadığını doğrulamamıza yardımcı olan tek seferlik testlere de olanak tanır.
Çerçeveyi kullanmak için bir test çalıştırıcısı uygulamamız gerekiyor. Koşucunun, bir hedefi (bu durumda bir IP adresi ve bir bağlantı noktası hedefi) ve bir kapsamı (çalıştırmak istediği belirli test) kabul eden ve bir sonuç döndüren (örneğin, güvenlik açığını bulup bulmadığımız) basit bir arayüzü vardır. Daha sonra motor ya kalıcı şeylerle ilgilenir ya da bir defaya mahsus olması durumunda sonucu API’ye döndürür.
Çalıştırıcı kodunu tek seferlik API ve düzenli otomatik testler için yeniden kullanırız. Bu yaklaşım, araştırmayı otomatikleştirirken hızlı deney yapılmasını kolaylaştırır ve sonuçları halihazırda çalışan motorlarda doğrular.
İşleri geniş ölçekte yürütmek
Araştırma doğrulandığında işleri geniş ölçekte yürütmenin zamanı gelmiştir. Burada motor çerçevemiz, motorla ilgili konuları üç ana bölüme ayırarak bunu yapar: abonelik yönetimi, izleme ve değerlendirme.
abonelik Motorun ekosistemimize bu şekilde bağlanıp müşterilerimizin verileri hakkında bilgi edinme şeklidir. harici saldırı yüzeyi işini yapabilmek için. Müşterilerin ihtiyaçlarını ve konfigürasyonlarını yakalar ve uygun monitörleri oluşturur (tüm testlerin aynı öneme sahip olmadığı göz önüne alındığında, hangi testlerin hangi hızda çalıştırılacağı).
izleme yapılması gereken işleri (güvenlik testleri) beklenen tempoya uyacak şekilde dağıtırken trafikteki büyük artışlarla müşterilerimizi olumsuz etkilemekten kaçınırız. Sonuç olarak, motorlarımız öngörülebilir bir şekilde çalışacak ve altyapımızın tedariki söz konusu olduğunda uygun kapasite planlaması yapmamıza, gerekli yükle başa çıkma ile maliyet verimliliğini koruma arasındaki dengeyi kurmamıza olanak tanıyacak.
değerlendirme kısım işlerin yürütülmesinden sorumludur (güvenlik testleri). Burada, tek seferlik doğrulama sırasında uygulanan çalıştırıcı kodunu yeniden kullanırız ve daha önce de belirtildiği gibi, her bir motorda inovasyonun yaşandığı yer burasıdır. Çerçeve, işlerin sonuçlarını yakalamamızı ve tüketimini basitleştirmek için bunları standart bir şekilde yayınlamamızı sağlayarak diğer ekiplerin bunların üzerine yeni özellikler oluşturmasına olanak tanır.
Gelecekteki blog yazılarımızda bu bölümleri derinlemesine inceleyeceğiz, ne yaptıklarını ve bunları oluşturmak için kullandığımız ilginç teknik modelleri sergileyeceğiz. Aşağıda akışın görsel bir özeti verilmiştir:
Şu ana kadar öncelikle gün içerisinde CUPS zafiyetine yönelik testlerin alınması için gerekli olan back-end çalışmalarını ele aldık. Bununla birlikte, bu testlerin Detectify kullanıcı arayüzünde müşterilerimize görünür hale getirilmesi için çok sayıda ekipler arası işbirliği ve ön uç çalışması da gerçekleştirildi. Çerçeveyi kullanan motorların iletişim modeli genel olarak tutarlı olduğundan, eksiksiz bir çözüm oluşturmak için ön uç görevlerin otomatikleştirilmesi hem uygulanabilir hem de son derece arzu edilir bir durumdur. Motor çerçevemizi uygulamaya devam ederken bu, temel odak noktamız olacak.
Çalışan sistemin davranışını gözlemlemek
Motor çerçevesini kullanmak, tüm motorların benzer şekilde görünmesini ve davranmasını sağlayarak onların davranışlarını ve performanslarını izleme biçimimizi otomatikleştirmemize olanak tanır. Ek olarak, tek tıklamayla temel ürün metriklerinin yanı sıra ayrıntılı operasyonel ve güvenilirlik metriklerini gösteren kontrol panellerini kolayca oluşturabiliyoruz.
Belirli bir motorun gerçekleştirdiği abonelik sayısı, gerçekleştirdiği işlerin sayısı ve bulduğu olumlu sonuçlar, ilgilendiğimiz ürün metriklerinden yalnızca birkaçıdır. Güvenilirlik ve operasyonel metriklere gelince, Google’ın SRE’sinden ilham aldık. kitap, daha spesifik olarak Dört Altın Sinyal. Bu kavramları nasıl uyguladığımıza dair birkaç örnek, işlerin hata oranını, tamamlanma sürelerini, çalışmayı beklemedeki gecikmeyi ve ayrıca CPU, Bellek ve Veritabanı Disk Alanı gibi daha genel doygunluk ölçümlerini izlemektir.
durumunda CUPS güvenlik açığıüretimdeki ilk bulgumuzu piyasaya sürüldükten sadece birkaç saat sonra keşfettik ve kutladık.
Çerçeve + işbirliği = hızlı yanıt
Kritik bir 0 günlük tehdit olarak CUPS güvenlik açığı birçok güvenlik ekibi arasında alarma neden oldu. Müşterilerimizin güvende kalmasını sağlamak için derhal harekete geçtik. Güvenlik araştırmacıları, arka uç mühendisler, tasarımcılar ve ön uç mühendisler arasındaki etkili işbirliği sayesinde, gün içinde CUPS güvenlik açığına yönelik üretim testinde yeni bir motoru başarıyla kullanıma sunduk. Her şeyi soyutlamak için bir çerçeveye sahip olmak“sadece orada olması gerekiyor” defalarca karşılığını aldığını kanıtlıyor.
Motor çerçevemizin temel prensipler ve teknik zorlukları derinlemesine ele alarak nasıl çalıştığı hakkında daha fazla bilgi paylaşırken bizi takip etmeye devam edin. Git kendini hackle.