Güvenli Yazılım Geliştirme

Güvenli Yazılım Geliştirme

Güvenli Yazılım Geliştirme Kurallarının Uygulanması

Bir yazılım mimarisi için güvenli yazılım, olası saldırılara karşı alınan önlemler ile tasarlanmış, saldırılara maruz kalmasına rağmen işlevini kaybetmeyip çalışması gibi yazılımları kapsar. Tüm yazılım geliştirme uygulamaları, gelişimi boyunca sadece ihtiyaç duyduğu özelliği veya özelliklerin tespit edilmesi, ara yüz tasarımı, özelliklerinin geliştirilmesi gibi hususlar dahilinde, yazılım tasarımından bitişine kadar olan süreyi kapsamaktadır

Yazılıma karşı yapılan saldırıların amaçları başlıca şunlardır;

  • Yazılımın kaynak kodunun analizini yapmak ve çevresi hakkında bilgi alarak yazılımın zayıf noktasını tespit etmek,
  • Kullanılan ortama sızarak istenilmeyen amaçları gerçekleştirerek,
  • İçerisinde zararlı kodları bulundurur veya yazılımı değiştirerek, yazılımın çalışma akışını değiştirir.
  • Herhangi bir yazılımın çalışmasını tamamen durdurarak veya rutin gidişatını bozmak,
  • İçerisinde zararlı kodları bulundurarak veya yazılımın kendisini tamamen değiştirmek yolu ile çalışma prensibini bozması gibi bir çok amaç bunlara örnektir

 Temel Yazılım Güvenliği İlkeleri 

  • Yetkiyi En Az Verme: Bir bileşene(kullanıcı vb.) belli herhangi bir görevi tamamlaması gereken en az yetki seçeneği sağlamasıdır.
  • Tüm Erişimleri Denetle: Her bir nesneye yapılan erişimde yetki kontrolü yapılarak sürekli denetlenir.
  • Yetkileri Ayırmak: Bir öğeyi verilen koşullara göre sınıflandırılma işlemidir.
  • Ortak Erişilen Kaynaklara Farklı Kanallardan Erişim Sağlamak: Kaynaklara erişen aygıtlar ortak kullanılması güvenliği tehlikeye atar.
  • En Zayıf Halkayı Tespit Et ve Güçlendir: Yazılıma yapılan ilk saldırıda zarar görecek olan taraf en zayıf kısım olan yazılımdır. Bu nedenle de zayıf halkalar olabildiğince azaltılmalı ve güçlendirilmelidir.
  • Saldırı Yüzey Alanını Azalt: Saldırı yüzeyi bir saldırıcının veri alabileceği ortamdır. Bu nedenle saldırı yüzeyine gereksiz özellikler eklenmemeli ve her zaman kontrol edilmelidir.
  • Savunma Derinliği Oluştur: Sisteme sürekli savunma gönderilmesi gerekmektedir. Böylelikle olası bir saldırıda savunma etkisiz kalamaz.
  • Anlaşılabilir ve Kolay Kullanılabilir Güvenlik Mekanizması Tasarla: Yazılımda kullanıcıyla etkileşim gerektiren güvenlik mekanizmaları anlaşılabilir ve kolay kullanılabilir olması gerekmektedir çünkü aksi bir durumda kullanıcı, güvenlik mekanizmalarının etrafından dolaşmak için yollar arayabilir.

YAZILIM GÜVENLİĞİNİ SAĞLAMA YÖNTEMLERİ 

Yazılım güvenliğini sağlama yöntemleriyle yazılımımızı koruyabilir, olası saldırılardan ve açıklardan kurtulabiliriz. Bu yöntemler ise başlıca şunlardır;

Sezgisel (Heuristic) ve Benzetime (Simulation) Dayalı Yöntemler

Statik Analiz(Static Analysis): Bu analiz türü, herhangi bir yazılımın genel özelliklerini gösteren ve bu yazılımın başlatılmadan önce analiz etmeyi amaçlamış bir analiz türüdür. Analizden sonra hangi yazılım hangi türde olduğu ve özelliklerini gösterir.

Sembolik Koşturma(Symbolic Execution): Sembolik koşturma denilen yöntemde ise yazılımın kendisi üzerine işlem yapılarak tüm olası etkenler modellenmektedir. Yazılım testi kullanılarak tanımlanan akış hataları bu denli bulunabilir.

Dinamik Analiz (Dynamic Analysis): Bir uygulamadaki yazılım açıklarını tespit etmek amacıyla yapılan analizlere “Dinamik Analiz (Dynamic Analysis)” denilmektedir. Dinamik analiz için farklı araçlar vardır. Bunlar;

  • Ağ tarayıcısı: Ağ üzerindeki cihazlar ile yazılımları belirler ve özelliklerine erişir. Örnek olarak “nmap” verilebilir.
  • Ağ dinleyicisi: Ağ üzerindeki etkileşimleri dinleyerek anlık veya sonradan kaydedip analiz yapan araçlardır. Örnek olarak “wireshark” verilebilir
  • Ağ zayıflık tarayıcısı: Herhangi bir cihaz veya yazılımın üzerinde bulunan servise daha önceden oluşmuş ağ etkileşimleri gönderilerek güvenliğe uygunluğu veya zayıflığı tespit edilir. Örneğin “OpenVAS” buna bir örnektir.

Bilgisayar tabanlı zayıflık tarayıcısı: Kurulum sırasında kullanılan yazılım ile ilgili güvenlik açığı var ise tespit ederek bilgisayar üzerindeki etkilerini ve denetim araçlarını test eden araçlardır. Örneğin “OpenSCAP” örnek verilebilir.

Uygulama zayıflık tarayıcısı: Seçilen uygulamanın özellikleri esas alınarak, zayıflıklarının olup olmadığını kontrol ve tespit etmeyi amaçlamış bir araçtır. Örneğin “sqlmap, Scuba” araçları veri tabanı kısmında kullanılır ve örnek birer araçtır.

  • Zafiyeti Tespit Etme ve Engelleme Nedir? Nasıl kullanılır?

Yazılım içerisinde bulunan zafiyetler tespit edilerek güvenlik önlemleri çerçevesinde düzenlemelerin yeniden yapılmasıdır. Yazılımlara yapılan bu saldırılarda genellikle zafiyet oranı yüksek alanlar kullanılmaktadır. Güvenlik Zafiyeti içinde bulunan yazılımlarda zafiyet taraması yapılır ve bu testlerin amacı güvenlik tespitleridir. Eğer bir açık bulunursa gereken güvenlik arttırması yapılır. Peki zafiyet testi nasıl yapılır?

Zafiyet Testi Adımları:

Saldırı Yapılabilecek Ara Yüz Alanlarının Minimuma İndirilmesi:

Ara yüzde sunucuya bilgi gönderilmesi veya alınması alanlarının azaltılmasıdır. Yazılım ara yüzünde bulunan iletişim alanları, daha az olması gerekir. Eğer çok olursa yazılım güvenliğini arttırma tehlikesi ile karşı karşıya kalırız.

İlginizi Çekebilecek Makaleler​

LLM (Large Language Models) Nedir?

Günümüzde yapay zeka ve makine öğrenmesi, teknolojinin birçok alanında devrim niteliğinde ilerlemeler kaydetmiştir. Bu ilerlemelerin merkezinde yer alan büyük dil modelleri (LLM – Large Language

Devamı »
Message Broker Nedir?

Message broker, birçok farklı uygulama veya sistem arasında iletişim kurmak için kullanılan bir yazılım aracıdır. Bu araç, bir uygulama tarafından gönderilen mesajları bir veya daha

Devamı »
Loglama Nedir?

Loglama, bilgisayar sistemlerindeki olayları, hataları ve diğer önemli durumları kaydetme işlemidir. Bu kayıtlar, sistem yöneticileri ve geliştiriciler tarafından, sistemlerin işleyişini anlamak, hataları tespit etmek ve

Devamı »
Vcenter Üzerinden ESXI Upgrade’i Nasıl Yapılır?

Öncelikle herkese merhaba arkadaşlar, sizlere Vcenter üzerinde ESXI hostunuzu nasıl upgrade edeceğinizi anlatacağım. Öncelikle hangi versiyona yükselteceksek o versiyonun ISO dosyasını indiriyoruz. Ardından Vcenter’ımızı açıyoruz.

Devamı »