Static Code Analizi ve Fortify

Tolga Yıkılmaz
Devops Türkiye☁️ 🐧 🐳 ☸️
4 min readJun 24, 2019

Statik kod analizi, kodunuzun araçlar tarafından taranarak önceden belirlediğiniz kriterlere göre incelenmesidir.Bu inceleme kodunuzun belli bir kaliteyi tutturmasını sağlamak için yapılır. Bu yazımızda kod kalitesine, kod standartlarına uygunluğu olarak değil de güvenliğe uygun olup olmadığına göre inceleyeceğiz.

Kurumsal yada daha ufak çaplı projelerimizi geliştirirken bazen biraz acele, bazen deneyimsizlikten güvenlik bakış açısı ile kod geliştirmeyi bir kenara bırakıyoruz. Bunun sonucunda ortaya çıkan kritik güvenlik açıkları , canlıya aldığımız kodlar geri dönülmez sonuçlar ile karşı karşıya bırakıyor. Canlı ortama taşıyacağımız kodlarımızı güvenlik tarama araçları ile taramamız ve başarılı ise canlı ortama taşımamız gerekiyor.

Değişiklik yönetimi(Change Management) süreçlerin en önemli parçalarından biri güvenlik taramaları olmalı ve taranmayan , onay almayan kod değişiklik yönetiminden geçemeyip canlı ortama taşınması izin verilmemesi gerekiyor.

Güvenlik açıkları ile ilgili yayınlanan raporlar bize somut istatistikler sunuyor. Bu istatistiksel verilerin birkaçına aşağıdaki adresten de ulaşabilirsiniz.
https://techbeacon.com/security/32-application-security-stats-matter

Equifax saldırısı ve nedenleri

Yakın zamanın en önemli güvenlik açıklarından biride Equifax kredi kuruluşunda gerçekleşti. Firma Mayıs ve Temmuz ayları arasında, bilgisayar korsanlarının veri tabanlarındaki 143 milyon ABD’li tüketicinin kişisel bilgilerine eriştiğini açıkladı.İşin ilginç yanı ise firma yaptığı açıklama ile ihlalin 29 Temmuz’da tespit edildiğini söyledi.Mayıs ayında başlayan saldırılar aylar sonra fark edilmişti. Sistemdeki kişilerin sosyal güvenlik numaraları ve sürücü ehliyet numaralarını da içeren bazı kişisel verilere eriştiği kaydedildi. Buna ek olarak yaklaşık 209.000 tüketicinin kredi kartı numaraları ve yaklaşık 182.000 tüketicinin kişisel kimlik bilgilerinin yer aldığı çeşitli dosyalara da saldırıdan etkilendiği belirtildi.Olay nasıl gerçekleştiğini incelediğimizde hepimizin karşılaştığı bir durum ortaya çıktı.

Apache Struts Java2EE developer larının yoğun kullandığı bir MVC framework. Xstream plugini ile açık bir xml deserilization işlemi sırasında herhangi bir kontrole tabi tutulmaması sonucu RCE (Remote Command Execution) olanağı sağlaması olarak tanımlanmış. Sorun 2.5.13 ve 2.3.34 sürümlerinde giderilmiş. Bu bize günlük hayatta sıklıkla yaptığımız bir servisten aldığımız xml yada json datayı deserilaze etme örneğine çok benzemiyor mu. Peki biz ne kadar önlem alıyoruz.

Yakın zamanda HPE yazılım birimi ile micro focus birleşmesi sonucu micro focus ailesine katılan Fortify, static code analizi konusunda öncü olmaya aday firmalardan biri. Micro Focus, Gartner tarafından yayınlanan 2019 Uygulama Güvenlik Testi için Magic Quadrant raporunda Pazar Lideri olarak konumlandığını duyurdu.Micro Focus bu raporla birlikte Gartner Uygulama Güvenlik Testi için Magic Quadrant raporlarında altıncı kez Lider olarak yer almayı başardı.

Raporda uygulama güvenlik testi pazarının 2022 yılına kadar yıllık %10 bileşik büyüme oranıyla ilerleyeceği tahmin ediliyor. Bilgi güvenliği pazarının aynı süreç içinde yıllık bileşik büyümesini %9 olarak öngören Gartner, pazar boyutunun ise 2019 yılı sonuna kadar 1,15 milyar dolara ulaşacağını belirtiyor.

Fortify , kritik mobil uygulamaların ve web uygulamalarının geliştirme yaşam döngüsünde proaktif yazılım güvenliği çözümleri için tercih ediliyor. Kurumsal firmalarda security static code analizi genelde güvenlik ekiplerinin kontrolünde ilerliyor ve analizden başarılı geçemeyen kodların canlı ortama taşınmasına izin verilmiyor.

Fortify SCA yazılımı ile tarama işlemleri yapılıyor. Önce tarama yapacağımız ortama bu yazılımı yüklüyoruz. Farklı IDE ler için extensionları ile entegre çalıştırabiliyoruz yada komut seti ile kaynak kodu gösterip tarama başlatabiliyoruz. Örneğin aşağıdaki gibi Visual Studio yüklenen bir extension ile Solution açtıktan sonra Fortify menüsü altından Analyze Solution seçeneği ile tarama işlemlerine başlatabiliyoruz

Analyze Solution ile analiz işlemine başladığımızda analiz süreci başlatılıyor. Analiz işlemleri iki ana parçaya ayrılıyor. Tarama başlattığımızda fortify tarafından build işlemleri başlatılıyor. Build sonrasında scan işlemi ile analiz sonuçları üretiliyor.Bu projenin büyüklüğüne göre tarama süreci değişebiliyor. Ama ufak çaplı projeler için 5 dk lık süre alabiliyor diyebiliriz .Analiz sonucunda oluşan bilgileri Analysis Result ekranından görebildiğimiz gibi bu tarama sonucunu fpr uzantılı bir dosya olarak alabiliyoruz.Fpr olarak aldığımız dosya üzerinden çok daha detaylı analiz sonuçları görebiliyoruz.

Analiz sonucu oluşan fpr dosyasını Fortify Adudit Workbrench Windows Application bir uygulama üzerinden bulguları adım adım inceleyebiliyor, bulgunun nedenini, kategorisini görebiliyor ve bu bulguyu çözmek için ne yapmamız gerektiğine dair önerileri görebiliyoruz.Bulgu sonuçlarını ilgili kişilere rapor olarak ta gönderebiliyorsunuz.Aynı zamanda bulgu olmadığını düşündüğünüz kayıtlarda bunları suppress edebiliyorsunuz.

Fortify Adudit Workbrench herkese tüm yazılımcılara yükleyemediğimiz durumda Fortify SSC web uygulaması çare oluyor.

Uygulama ve versiyon create etme

SSC arayüzü üzerinden her bir uygulamamız için bir application ve bir versiyon oluşturup fpr dosyamızı buraya upload edebiliyoruz

Artık tarama sonuçlarını tek bir arayüzden görebilir. Tarama sonuçlarını kişilere göre yetkilendirebilir. Bu arayüz üzerinden comment ve suppress işlemleri yaparak bulguların sonuçlarını yazılı olarak tutabiliriz

Bir sonraki yazımızda tarama işleri son derece kolayken neden bunu başaramıyoruz ve ne yapmamız gerekir hakkında konuşacağız

--

--