E N D
TemelVeri Güvenliği Unsurları(Yazılım Odaklı) www.cihanozhan.com
Güvenlik Nedir? Güvenlik = (Farkındalık+ Koruma)
Hacker? • White Hat • Black Hat • Meraklı Kullanıcılar • Heyecan Arayanlar • Kupa Avcıları • ScriptKiddies • Politik Aktivisler • Profesyoneller • GrayHat
Tam Güvenliğe Erişilemez! • "The only secure computer is one that's unplugged, locked in a safe, and buried 20 feet under the ground in a secret location. AndI'm not even too sure about that one."(DennisHughes, FBI) • %100 güvenlik yoktur.
Ne Kadar Güvenlik? • Gereksinimler ile hedefler eşleşmeli • İhtiyacınız olan kadarını gerçekten iyi şekilde yerine getirin • Periyodik yeniden gözden geçirme
Güvenlik Zihniyetine Ulaşmak • Herkes, her zaman… • Zincirin en zayıf halkası senin güvenlik seviyeni belirler. • Ortalama kullanıcılar da güvenlik zihniyetine sahip olmalı • Hazır değilsen, hazırlan! Eğitim planı… • Güvenlik zaman ve para gerektirir • Proje timeline’ı güvenlik içermeli! • Yapılan tercihlerin güvenliğe etkisi!
Düzenli Güvenlik Gözden Geçirmeleri • Kullanılan tüm teknolojileri(hardware, software) gözden geçirmek • Halen geliştirme sürecinde olan ve kullanılan kod • Prosedürler • Erişim yetkileri • Eğitim ve yeniden eğitim
İyi Programcı Olmak (!) • İyi bir programcı daha güvenli yazılımlar geliştirir. • Temel güvenlik politikalarını uygulayan yazılım güvenlik testlerini yazar
Güvenlik Politikaları • Bilgi varlıklarının nasıl korunduğunu bildirir • Kurallar veklavuzlarhazırlamak • Basit, temiz ve kolay takip edilebilir tut • Tüm paydaşlar dahil edilmeli! • IT personal, Business Leaders, System Administrators, • Human Resources, Legal Representatives, Auditors, Users • Periyodik olarak gözden geçirin - güvenlikle ilgili değişiklikler • Politikanın kapsamı! • Korunacak veya kontrol edilecek verileri tanımlayın ve sınıflandırın • İnsanlarla sistem arasındaki etkileşimi haritalandırmak • Hangi kullanıcı ve gruplar hangi birim, hangi sistem ve nesnelere erişebilir ve nelere erişmesi gerekiyor. • Her veri türü için işleme prosedürlerini tanımlayın • Örn: Bir veritabanı yedeğinin nasıl, kim tarafından, hangi saat-zaman dilimlerinde hangi disk ve hangi şartlarda alınacağı, sorumluluklar, sistem taraflı ve yönetimsel sorumluluklar vb.
En Küçük Ayrıcalıklar "Every program and every priviliged user of the system should operate using the least amount of privilege necessary to complete the job. "JeromeSaltzer
Basitlik Daha Güvenli • Karmaşahataya davetiye çıkarır • Açık isimlendirilmiş fonksiyonlar ve değişkenler • Açıklama satırları • Uzun kod bölümlerini küçük işlevlere ayırma • Don’trepeatyourself • Eski kod bir güvenlik sorunudur • Built-in fonksiyonlar genellikle kendi sürümlerinizden daha iyidir • Kullanılmayan özellikleri kapat ya da sil
Kullanıcılara Asla Güvenme! • İyi niyetli kullanıcılar sorunlara neden olabilir… • Paranoyak olmak! • Admin kullanıcılara bile güvenme! • Mutsuz çalışanlar ya da eski çalışanlar • Güvenliği ciddiye almıyor olabilir. • Kimliği çalınmış olabilir. • Taraflar ile dikkatli çalışmak • İçeriden ve dışarıdan gelen durumlar • Özellikle geçici olanlar… • Erişimleri geri alma politikalarının basitleştirilmiş olması • Offline Mode • Phone • Email • Printing
Beklenmeyenleri Beklemek • Suçu gerçekleşmeden önlemek • "Bir kullanıcının bu sayfada deneyebileceği her şey var mı?" • Keskin kenarları düşünmek • Yaratıcı düşünmek • Örnekler • Length : Çok kısa ya da çok fazla • Content Type : ASCII, Multi-Byte • Content : \ " ' () {} [] <> ` & ? $ % * + - ; • Formats : Tüm formatların güvenliğini garantilemek • StructureandInputs : Değiştirilebilirler mi?
Derinlikli Savunma • Katmanlı Savunma! • Bir saldırganın ilerleyişini yavaşlatmak • Saldırılara ivme kaybettirmek • Gereksiz güvenlik (T1, T2 …) • Saldırganın kafasını karıştırmak için yapılan ama geliştiricininkini de karıştıran çözümler(!) • İnsan! • Teknoloji • Operasyonlar
Belirsizlik Yoluyla Güvenlik • Gereğinden fazla bilgi hacker’ın yararınadır. • İstemciye(herhangi biri) bilgiyi sınırla! • Sınırlı geri bildirimler • Güvenlik demek yanlış yönlendirmek demek değildir. • Misdirection :Fake folder/directory names or paths, or usernames or DBcolumn names
WhiteListvs. WhiteList • BlackList:Engellenenler listesi • WhiteList:Kabul edilecekler listesi
WhiteListvs. WhiteList • items A, B, C • BlackListing: A, C • WhiteList: B
WhiteListvs. WhiteList • Blacklist = [div, span, image, input, form, …] • WhiteList = [p, br, strong]
Nasıl Korunuruz?(WhiteList nasıl uygulanır?) • Güvenilmeyen tüm veriler iyi bilinen değerler ile doğrulanmalıdır. • WhiteList, güvenli olduğu iyi bilinen/belirlenmiş değerlerden oluşur. • Bu çok net/açık bir kontrol yöntemidir. • Güvenmediğimiz olası herşeyi filtreler. • BlackList, güvenli olmadığı bilinen/belirlenmiş değerlerden oluşur. • Çok net olmayan ve üstü kapalı bir yöntem. • Listede olmayan herşeyin güvenli olduğunu öngörür.
Nasıl Korunuruz?(WhiteListyaklaşımları) • Tür dönüşümü • Integer, Date, GUID vb… • RegularExpressions • Email, Telefon No, Ad(Dikkatli ol!) • Açıkça bilinen verilerin listesi • Renkler, Markalar, Ülkeler, Şehirler, Ürünler vb…
Maruz Kalma Noktaları • Gelen Maruz Kalma Noktaları • URL’ler • Form’lar • Cookie’ler ve Session’lar • Veritabanı okuma işlemleri • PublicAPI’ler • Giden Maruz Kalma Noktaları • HTML • JavaScript / JSON / XML / RSS • Cookie’ler ve Session’lar • Veritabanı yazma işlemleri • 3-Parti API’ler
Veri Geçitleri(Veri Geçitlerini Haritalamak) • Hangi path’ler veri alır? • Güvenlik = (Farkındalık + Koruma) • Beklenmeyenleri beklemek!
Request’leri Düzenlemek • Request Metotları • GET Request : URL ve Link’ler • POST Request :forms • CONNECT, DELETE, HEAD, OPTIONS, PUT, TRACE • Request/Response Formatları • Content-Type gönderilen verinin formatıdır. • Accept geri dönen verilerin formatıdır. • HTML, JSON, XML, Text • MIME Types: RSS, PDF, Image, Audio, Video
Girişleri Doğrulamak • İlgili giriş kabul edilebilir mi? • Veri beklentilerini belirlemek. Fazlasına asla geçit yok! • Hack’i önlediğimiz gibi hataları da önlemek • Uygulama ve veritabanı gereksinimlerini düşünmek • Gönderilerde sadece beklenen verilere izin ver. • Fields : firstName, lastName, email • Mr. Hacker : birthdate, pwd, tcNo • Varsayılan değerler oluşturmak/belirlemek.
Girişleri Doğrulamak • Ortak Doğrulamalar • 15 karakter beklerken 14/16 değerleri gelse bile isteği logla ve iptal et! • Tür • Hangi veri tipi bekleniyorsa onun haricindeki tüm istekleri logla ve iptal et! • Veri tipi olarak file bekleniyorsa bunun haricindeki tüm istekleri logla ve iptal et • Image, Excel, Rar vs. • Format • İstekte gelen veri formatını kontrol et : Email bekliyorsan emailregexile ve phonevb… • RegEx’e dikkat. En ufak bir hatalı işaretleme ile RegEx tehlike haline gelebilir. • Nesnenin Kendisinde (Model Katmanı?) • Benzersizlik • Zaten mevcut olan bir kayıt asla tekrarlanamaz! • Double-Check • == Vs. === • null/nil • undefined/unset • NaN
Veri Temizlemek • Veri potansiyel bir tehlike mi? • Nötrleştir, zararsız hale getir • Temizle : SQL, HTML, JavaScript, JSON, XML vs… • EncodingCharacters • Karakterleri eşdeğerleri ile değiştir. • HTML : <with <and >with > • EscapingCharacters • Güçlü karakterlerden önce kaçış karakterleri ekle • SQL :"WHERE name='fake\'" AND 1=1--'"; • Özelleştirilmiş temizleme metotları kullanma • İyi test edilmiş ve language-specific fonksiyonları kullan • Tüm gereksinimleri ele almak ve her senaryo için uygunluğunu garantilemek çok zor • Geçersiz veriyi silme ya da geçerli hale getirme(Sonraki slide ile bir) • Verinin nereye gideceğini düşün • Verinin nereye gidebileceğini düşün • Erken temizle, geç temizle, sık sık temizle
Veri Temizlemek(Değişkenleri Etiketlemek) • Dirty : Kirli • Raw : Ham • Tainted : Kusurlu • Unsafe : Güvensiz • Clean : Temiz • Filtered : Filtrelendi • Sanitized : Temizlendi • Safe : Güvenli
Kodu Özel Tutmak • Public Directory • Web Server tarafından erişilebilir • Web sitenizin başlangıç noktasını temiz, özel ve sınırlı erişimli tutmak • PublicPages’deki kodlar için tekrar ve tekrar düşün • Libraries Directory • Web Server tarafından erişilemez. • Dosya sistemi üzerinden kodlar tarafından erişilebilir. • Web Server Configuration • Konfigürasyon verisini gizli tut ve sistem admini harici bir erişim olmasın. • Konfigürasyon dosyasını şifrele ya da içerisindeki kritik veri alanlarını şifrele • .htaccess & Web.config • Ayar dosyalarını ya da içerisindeki özel bilgi olan parçaları şifrele… • Robots.txt • Public olmayan tüm path, folder ve directory bilgilerini arama motorlarına engelle. • Public olmayan dosyaları arama motorlarına engelle : pdf, doc vb.
Kimlik Bilgilerini Özel Tutmak • PlainText kimlik bilgileri tehlikelidir • En kritik öneme sahip veriye, en yüksek ilgiyi vermek • Koddan ayrı tutmak • Versiyon kontrol sistemlerinden ayrı tutmak • Mümkün olduğu kadar az kopyasını al • Parolaları tekrar kullanma! • Her bilgisayar, ortam ve veritabanı için benzersiz parolalar • Mümkün olduğunca şifreli parolaları kullanmak • Hata mesajlarını belirsiz tutmak • Production sunucusunda hata detaylarını raporlama • İstemcilere standart/jenerik 404 ve 500 sayfaları dönmek • Geliştiriciler log dosyalarında hataları arayabilmelidir. • Web sunucuları ayrı hata sayfalarını kullanacak şekilde konfigüre et.
Smart Logging • Hatalar • Kullanıcı, sistem, yazılım vb. tüm hataları logla… • Hassas Aksiyonlar • Örn: Login, Inserted a Record, Deleted, Logging, Changed a password • Gerçekleşen Saldırılar • Teknik olarak farkında olunan tüm saldırıların önceki ve sonraki etkilerini logla… • Tahmin edilemeyenler için kullanıcı aktivite loglarına güvenebilmek… • Loglamaya Değer Veri • Tarih ve Zaman • Source :user, IP vb… • Action : Saldırı için kullanılan yöntem/aksiyon • Target : Saldırı hedeflenen sistem ve kaynak ne idi? DB, tablo, sütun vb. • Cookie/Session • URL’ler ve tüm parametreler • Backtrace : Saldırıda hedeflenen sistem ve kaynakta yer alan her adım(code-kaynak vb.)için geriye doğru analiz yaparak incelemek ve yanlış giden şeyleri bulmak.
Smart Logging(Activity Logging) • Activity History & AuditTrail • Logs tablosu oluştur • Timestamp bilgi kullanacak bir fonksiyon oluştur • Herhangi bir kullanıcı, geliştirici, admin bir işlem yaptığında bu fonksiyonu çağır ve logla. • Logları düzenli olarak gözden geçir
Smart Logging(Hassas Veriyi Asla Loglama) • Uygulama built-in logging sistemine sahipse hassas verilerin loglanmamasına dikkat! • POST parametreleri ve veritabanı sorgularına dikkat! • Parolalar, anahtarlar ve token’ları filtreleyerek loglanmasını engelle!
Smart Logging(Eski Veriyi Tut) • Versiyonla • Silme!(Paranoiddelete)
Tehdit Modelleme(Microsoft ThreatModelingTool) • Tehdit modellemesi yapmak için kullanılan bir diyagram aracıdır. • Şu gibi sorulara cevap bulunabilir: • Bir saldırgan kimlik doğrulama verilerini nasıl değiştirebilir? • Bir saldırganın kullanıcıların verilerini okuyabilmesinin etkileri neler olabilir? • Kullanıcı profillerinin saklandığı veri tabanına erişim gerçekleşmezse neler olur? • Microsoft tehdit listesi oluştururken STRIDE modelini kullanır. ToolDownload : https://www.microsoft.com/en-us/download/details.aspx?id=49168STRIDEDoc : https://users.encs.concordia.ca/~clark/courses/1601-6150/scribe/L04c.pdf
Tehdit Modelleme(ThreatModeling) • Sistemi anla. • Olası tehditleri listele. • Çözüm önerileri hazırla. • Risk seviyesine göre önceliklendir.
Microsoft ThreatModelingTool(STRIDE) • Microsoft tehdit listesi oluştururken STRIDE modelini kullanır. • Spoofing : Yanıltıcı Kimlik • Tempering : Veriyle Oynamak • Repudiation : Reddetme • Information Disclosure : Bilgi Açıklama • Denial of Service : Servis Reddi • Elevation of Privilege : Ayrıcalık Seviyesi • Olası tehditlerle alakalı etki azaltma önerileri de şu şekildedir: • Auditing & Logging • Authentication • Authorization • Communication Security • Configuration Management • Cryptography • Exception Management • InputValidation • Sensitive Data • Session Management
HTTP Durum Kodları(StatusCodes) • https://httpstatuses.com/ • https://restfulapi.net/http-status-codes/ • https://www.restapitutorial.com/httpstatuscodes.html Eğer web ve API mimarisine yabancı isen…https://speakerdeck.com/cihanozhan/restful-api-mimari-ve-tasarimi
Kaynaklar & Referanslar • https://www.guvenliweb.org.tr/ • https://www.webguvenligi.org/ • https://www.microsoft.com/en-us/securityengineering/sdl/ • http://halilozturkci.com/microsoft-tehdit-modelleme-araci-ile-guvenli-yazilim-gelistirme/ • https://www.microsoft.com/en-us/download/details.aspx?id=49168&WT.mc_id=rss_windows_allproducts • https://www.synopsys.com/blogs/software-security/threat-modeling-vocabulary/ • STRIDE PDF :https://users.encs.concordia.ca/~clark/courses/1601-6150/scribe/L04c.pdf • http://www.cihanozhan.com/guvenli-yazilim-gelistirme-owasp/ • http://www.cihanozhan.com/category/data-security/ • OWASP Kaynak 1 : http://www.cihanozhan.com/guvenli-yazilim-gelistirme-owasp/ • OWASP Kaynak 2 : https://slideplayer.com/slide/17625478/ • SQL Server : https://www.slideshare.net/cihanzhan/documents • SQL Server (Full) : http://www.cihanozhan.com/ileri-seviye-t-sql-programlama-kitabi/ • Veri Bütünlüğü : https://www.slideshare.net/cihanzhan/leri-seviye-tsql-programlama-chapter-04 • SSMO Kaynak : https://www.slideshare.net/cihanzhan/leri-seviye-tsql-programlama-chapter-21 • Optimizasyon & Performans : https://www.slideshare.net/cihanzhan/leri-seviye-tsql-programlama-chapter-19 • Sorgu ve Erişim Güvenliği : https://www.slideshare.net/cihanzhan/leri-seviye-tsql-programlama-chapter-18 • Birçok Sunum ve Kaynağa Erişim :http://www.cihanozhan.com/cihan-ozhan/
Araştırma Önerileri • Siber güvenlikte yapay zeka(data science, machinelearning) • Siber güvenlikte blockchain teknolojileri • IoT & IIoT cihazlarda siber güvenlik • Otonom araçlarda siber güvenlik • Akıllı ev sistemlerinde siber güvenlik • Endüstriyel üretimde siber güvenlik Yukarıdaki alanlarda bilgi edinmek için cihanozhan.com’u takipte kalınız.