Fortify SSC Üzerinden Bulgu Analizi

Bir sorun ortaya çıktıktan sonra alınan aksiyonlar, sorunu ortadan kaldırmaya yöneliktir. Ortaya çıkan sorunlar birtakım hasarlar bırakabilir. Sorun ortaya çıkmadan alınan aksiyonlar ise, alınacak hasarları önleyeceği için daha önemlidir. DevSecOps yaklaşımında, güvenliği yazılım geliştirme yaşam döngüsü ile bütünleştirerek ortaya çıkabilecek sorunları minimize etmeye çalışırız. Bunu yaparken kullandığımız farklı türde araçlar vardır. Bu yazıda, bir SAST çözümü olan Fortify SCA’nın bulgularının Fortify Software Security Center üzerinden analizini inceleyeceğiz.

SAST, yani statik uygulama güvenliği testi, kaynak kodumuzu statik olarak tarayıp açıklıkları bulmayı hedeflediğimiz test tipidir. Bu yaklaşım, sürecin erken aşamalarında zafiyetli kod bloklarını fark etmemizi ve önlem almamızı sağlar. Fortify Static Code Analyzer, kaynak kodu bir ara modele dönüştürmek için translate işlemine sokar. Translate işleminden sonra elde edilen ağaç yapısı, kural tabanlı bir sistemle taranır ve bulgular elde edilir. Farklı tarama araçlarının farklı yaklaşımları olduğunu belirtmekte fayda vardır. Örneğin Fortify SCA, kaynak kodu (eğer dinamik bir dil değilse) translate aşamasında önce build işlemine sokar. Build aşaması, taramanın süresini uzatsa da daha derin analizler yapılmasını sağlar.

Untitled

Bulguların yönetilmesi, en az tarama kadar önemli bir konudur. Fortify SCA ile yapılan taramalar, uygulama ve versiyon üzerinden yürütülen bir sınıflandırma kullanan, Fortify ürün ailesinin bir komponenti olan Fortify Software Security Center’a yüklenebilmektedir. Aşağıda görselde Fortify SCA ile yapılmış bir tarama, Fortify SSC arayüzünün denetim sekmesi üzerinden görüntülenmektedir.

Untitled

Burada bulguları görmekteyiz. Buradan bulguları filtreleyebilir, görüntüleyebilir, çoklu işlemler yapabiliriz. Bulgulardan birine tıkladığımızda aşağıdaki detaylı analiz kısmı açılmaktadır.

Untitled

Burada kaynak kodun hangi satırında sorun olduğunu görmekteyiz. Sağ tarafta analiz, geçmiş ve bilgi sekmeleri bulunmaktadır. Bilgi kısmında bize zafiyet hakkında bilgiler ve öneriler sunulmaktadır. Geçmiş kısmından bu bulgu üzerinden yapılan işlemleri görüntüleyebiliriz. Analiz kısmında ise; bulguyu birine atayabilir, etiket değeri verebilir ve yorum yapabiliriz. Varsayılan olarak bulunan analiz etiketinin değerleri şu şekildedir:

  • Not an Issue
  • Reliability Issue
  • Bad Practice
  • Suspicious
  • Exploitable

Uygulama güvenliği ekibi, buradan zafiyetlere etiket değeri atarlar. Not an Issue değeri dışındaki değerler, aksiyon alınması gerektiğini göstermektedir. Bu varsayılan analiz etiketi dışında, kendimiz özel etiketler oluşturabiliriz. Bunun için Administration > Templates > Custom Tags sayfasına gitmeliyiz. Buradan özel etiketler ekleyebilir, mevcut etiketleri düzenleyebiliriz. Sonrasında ilgili uygulama versiyonuna bu özel etiketi atamak gerekmektedir. Detaylı bilgi için Fortify SSC User Guide üzerinden ilgili bölüme bakılabilir: Fortify SSC User Guide

Etiketler dışında supressed ve removed mekanizmaları vardır. Supressed, genellikle false positive bulgular için kullanılır. Removed ise, zafiyet bulunan kod bloğunun kaynak koddan silindiği anlamına gelmektedir. Bu iki mekanizma, varsayılan olarak, bulguların raporlardan ve sonraki izleme süreçlerinden çıkarılmasını sağlamaktadır ancak zafiyeti veritabanından silmez. Aşağıdaki profil tercihleri seçilirse, supressed veya removed olan bulguların arayüzde ve export edilerek oluşturulan raporlarda görüntülenmesi sağlanabilir.

Untitled

Yukarıdaki bilgiler ışığında farklı kullanım şekilleri olabileceği çıkarımını yapabiliriz. Aşağıda supress ve etiket kullanımına göre iki farklı yaklaşım sunulmuştur.

  • Fortify’ın varsayılan analiz etiketini kullanarak, false positive gibi raporlarda karşımıza çıkmasını istemediğimiz bulgulara Not An Issue değerini verebiliriz. Varsayılan davranışta bu bulgular arayüzde ve raporlarımızda gözükecektir. Eğer raporlarımızda bu bulguların karşımıza çıkmasını istemiyorsak, bulguları export etmeden önce gelişmiş filtreleme kullanarak bu etiket değerine sahip verilerin rapora eklenmesini engelleyebiliriz. Bu durumda supress ile aynı işlevi görecektir.
  • Fortify’ın analiz etiketini veya kendimizin eklediği özel bir etiketi kullanarak, Not An Issue gibi bir etiket değerini kullanmak yerine görmek istemediğimiz bulguları supress edebiliriz. Supress edilen bulgular varsayılan davranışta arayüzde ve raporlarda karşımıza çıkmayacaktır. İstediğimiz takdirde, yukarıda açıkladığımız gibi denetim sekmesindeki profil ayarlarını değiştirerek raporlarda karşımıza çıkmasını da sağlayabiliriz.

Sonuç olarak, görüldüğü üzere Fortify, denetim sekmesi üzerinden export edilerek oluşturulan raporlar için kullanıcılarına çeşitli kullanım seçenekleri sunmaktadır. Bu alternatiflerden hangisinin tercih edileceği ise tamamen ürünü kullanan ekibin ihtiyaçlarına, çalışma yöntemlerine ve tercihlerine bağlı olarak şekillenecektir.