Yapay zekadan makale özeti
- Kısa
- Ayrıntılı
- Bu video, uygulama güvenliği konusunda tecrübeli bir eğitimci tarafından sunulan yaklaşık iki saatlik bir DevSecOps giriş eğitimidir. Eğitimci, yıllardır uygulama güvenliği alanında çalışmaktadır.
- Video, uygulama güvenliği ve yazılım geliştirme süreçlerinin zaman içindeki değişimlerini anlatarak başlıyor, ardından DevOps sürecinde güvenlikçilerin rolünü, kod güvenliği, GitHub özellikleri, statik ve dinamik kod analizi araçlarını, otomatik tarama sistemlerini ve uygulama güvenlik süreçlerini detaylı şekilde ele alıyor. İçerik, semantik analiz araçları, pull request analizleri, CI/CD pipeline entegrasyonları ve canlı ortamda güvenlik önlemleri gibi konuları kapsamaktadır.
- Eğitim, kod içinde sensitive verilerin saklanmaması, GitHub Dependabot, Semgrep, CodeQL gibi araçların kullanımı, Docker ve Kubernetes ile otomatik tarama sistemlerinin kurulumu, Cloudflare ve WAF gibi güvenlik çözümleri ve developerların güvenlik eğitiminin önemi gibi pratik bilgiler sunmaktadır. Ayrıca, credencial stuffing ataklarından korunma, pentest, bug bounty programları ve zaafiyet tespit teknikleri de videoda ele alınan konular arasındadır.
- 00:02DevSecOps Eğitimine Giriş
- Eğitmen, uygulama güvenliği ve güvenlikle ilgili eğitim videoları paylaşacağını belirtiyor.
- Bu videoda DevSecOps konusunu giriş seviyesinde ele alacak ve kendi tecrübelerinden ve genel konseptlerden bahsedecek.
- DevSecOps kavramı hakkında bir görsel bulamadığı için, farklı konuların bir araya gelmesi gibi anlamsız bir görsel kullanmış.
- 01:28Uygulama Güvenliğinin Önemi
- Eğitmen yıllardır uygulama güvenliği ile ilgileniyor ve günümüzde her şey bir uygulamaya dönüştüğü vurgulanıyor.
- Uygulama güvenliği konusu yıllar içinde daha çok önem kazanmış.
- Eskiden uygulama geliştirme prensipleri ve güvenlik testleri bugün artık geçerliliğini yitirmiş durumda.
- 02:53Eskiden ve Bugün Uygulama Geliştirme Süreçleri
- Eskiden bir uygulama versiyonu çıktığında sızma testi (pentest) yapılırdı, uygulama biter, test edilir, zafiyetler düzeltilir ve canlıya çıkardı.
- Günümüzde agile yazılım geliştirme prensipleri ön planda, günde yüzlerce, binlerce kez uygulamalar değiştiriliyor.
- Uygulamalar artık canlı bir varlık haline gelmiş, her gün yenileniyor ve yeni özellikler ekleniyor.
- 06:23Microservice Mimarisinin Etkisi
- Eskiden monolit architecture (tek platformda tüm sistem) kullanılırken, günümüzde microservice architecture (küçük hizmetler) tercih ediliyor.
- Microservice mimarisinde her hizmet farklıdır: URL'leri, programlama dilleri, GitHub repoları farklı olabilir.
- Pentest yapmak zorlaşmış, her microservice için ayrı test yapılması gerekiyor ve erişim sorunları yaşanabiliyor.
- 08:40Güvenliğin Yeri
- Günümüzde çoğu uygulama penteste uğramadan kullanıcıyla buluşuyor.
- Ekonomik sistem, uygulamaların sürekli daha fazla kullanıcı elde etmeye ve para kazanmaya çalışmasını gerektiriyor.
- Güvenlikçiler, rockstar'ın bodyguardı gibi düşünülebilir; kullanıcıyı koruyup riski azaltmak zorundalar.
- 10:40DevOps ve Güvenlik
- DevOps, bir uygulamanın kodunun yazılması anından itibaren canlıya çıkmasına kadar geçen operasyonel süreci ifade eden bir kavramdır.
- DevOps süreci; kodun yazılması, incelenmesi, test sürecinden geçmesi, konteynerlere gidişi, staging ortamında test edilmesi ve sonunda production'a çıkması aşamalarını kapsar.
- DevSecOps, bu süreçte güvenlik adımlarının dahil edilmesi ve minimum miktarda güvenlik açığı ile uygulamanın canlıya çıkması hedefini taşır.
- 13:41Pre-Commit Aşaması ve Kod Hijyeni
- Pre-commit aşaması, bir kodun commit edilmeden önceki aşamadır ve bu aşamada kodun hijyeni (code best practice'leri) kontrol edilmelidir.
- Kodun içinde private key, hard coded parolalar gibi sensitive verilerin bulunmaması gerekir, aksi takdirde saldırganlar bu verileri kullanarak güvenlik açıklarına ulaşabilir.
- Developerların hatasıyla private repoları kişisel hesaplarına fork etmeleri veya klonlamanın USB belleğe aktarılması gibi durumlar, sensitive verilerin çalınma ihtimalini artırır.
- 17:04Güvenli Secret Yönetimi
- GitHub gibi platformlarda "encrypted secret" özelliği kullanılarak sensitive veriler kodun içine yazılmadan, organizasyon ayarlarında güvenli bir şekilde saklanabilir.
- GitLab'de environment variables veya HashiCorp Vault gibi secret management yazılımları da kullanılabilir.
- Şirket içindeki repo'lar düzenli aralıklarla tarama yapılmalı ve GitHub'ın secret scanner gibi araçlar kullanılabilir.
- 20:48Secret Scanning
- Güvenlik açığı tespit etmek için düzenli aralıklarla (günlük veya haftalık) tarama yapılmalıdır.
- Open source yazılımlar (örneğin Git Secret) veya paralı yazılımlar kullanılarak kod içindeki sensitive veriler tespit edilebilir.
- Tarama işlemlerinin otomatikleştirilmesi için bir architecture kurulumu yapılması gerekir.
- 22:32Kütüphane Güvenliği ve Dependabot
- Geliştiriciler yazılımlara çeşitli kütüphaneler (lib) import ederken, bu kütüphanelerdeki zafiyetler ana projeye de geçebilir.
- GitHub'ın Dependabot servisi, import edilen kütüphanelerdeki zafiyetleri tespit ederek uyarılar sunar ve bu servis ücretsizdir.
- Kütüphaneleri import ettiğinizde versiyon numarasını belirtmeniz önemlidir, böylece o kütüphanenin repository'si hacklendiyse bile saldırganın kodu size ulaşmayacaktır.
- 27:46Commit Doğrulama ve Güvenlik
- SolarWinds olayında, hesabının çalındığı düşünülen bir geliştirici üzerinden codebase'e atılan bir backdoor ile yazılım ve kullananlar ele geçirilmiştir.
- GitHub'ın commit verification özelliği, bir commit'in gerçekten o geliştiricinin bilgisayarı üzerinden mi yapıldığını doğrular.
- Bu doğrulama, hesap bilgileri çalındığında bile, saldırganın GitHub üzerinden yapılan değişiklikleri tespit etmemizi sağlar.
- 30:45Statik Uygulama Güvenlik Testi (SAST)
- SAST, kodun içine bakarak zafiyetleri tespit eden yazılımlardır ve dinamik uygulama güvenlik testi (DAST) ile karşılaştırılabilir.
- SAST araçları iki ana kategoriye ayrılır: pattern matching ile çalışanlar ve kodu compile ederek analiz edenler.
- Pattern matching ile çalışan araçlar hızlı çalışır ve ekstra konfigürasyon gerektirmez, ancak kodu compile eden araçlar daha uzun sürebilir ve daha iyi sonuçlar verebilir.
- 34:36Samgrap Yazılımı ve Özellikleri
- Samgrap, pattern matching ile çalışan, açık kaynaklı ve ücretsiz bir yazılımdır, ancak ücretli enterprise versiyonları da bulunmaktadır.
- Yazılımda yüzlerce farklı dillere özgü kural bulunmaktadır ve hızlı çalışır, pozitif hata oranı çok azdır.
- Codequal, GitHub'ın satın aldığı, eskiden açık kaynaklı olan ve ücretsiz versiyonları da olan başka bir yazılımdır.
- 36:03Yazılım Seçimi ve Kullanım Alanları
- Küçük ölçekli organizasyonlarda, kod analizi yazılımlarını kolayca ayarlayabilir ve test edebilirsiniz.
- Büyük ölçekli organizasyonlarda (binlerce repository) semantik analiz yapan yazılımlar daha avantajlıdır çünkü kod değişikliklerini hızlı bir şekilde tarayabilirler.
- Samgrap gibi yazılımlar, kod değişikliklerini text dosyası olarak ele alacağından, ne kadar uygulama değişirse değişsin hızlı bir şekilde tarayabilir.
- 37:27Kod Tarama Yöntemleri
- Kod taraması için iki yöntem vardır: CI/CD araçlarına (GitHub Actions, Jenkins gibi) step ekleyerek veya paralel bir pipeline oluşturarak.
- CI/CD araçlarına step ekleyerek tarama yaparsanız, bir güvenlik açıklaması (wannable) varsa deployment işlemi duracaktır.
- Büyük ölçekli organizasyonlarda, binlerce repository için her birinin konfigürasyon dosyasını değiştirmek yerine, paralel bir pipeline oluşturup tarama yapmak daha uygundur.
- 40:34Pull Request Taraması
- Developer bir pull request oluşturduğunda, sadece bu pull request'in içindeki kod değişikliklerindeki güvenlik açıklamalarını taramak gerekir.
- Tüm repository'yi taramak yerine, sadece pull request'in içindeki değişikliklerdeki güvenlik açıklamalarını taramak daha etkilidir.
- GitHub'ın webhook özelliği, pull request oluşturulduğunda belirtilen bir adrese bildirim göndererek değişiklikleri bildirir.
- 43:32Webhook ve Tarama İşlemi
- GitHub webhook ile bildirim geldiğinde, bir uygulama pull request'i klonlayabilir.
- Klonlanan kod, Samgrap gibi bir araçla tarama işlemine tabi tutulabilir.
- Samgrap'in diff-aware özelliği sayesinde, ana proje ve pull request arasındaki farkları taramak ve sadece yeni eklenen güvenlik açıklamalarını belirlemek mümkündür.
- 46:55Code Scanning ve GitHub Entegrasyonu
- Sam Grap aracı ile kod tarandığında C-Code Injection ve XSS gibi güvenlik açıkları tespit edilebilir.
- GitHub API'si kullanılarak tespit edilen güvenlik açıkları (wonderability) pull request'lerin içine komut olarak eklenebilir.
- Sam Grap gibi araçlar, GitHub Actions, Travis gibi araçlarla entegrasyon sunabilir, ancak bu entegrasyonlar ücretli olabilir.
- 49:25Ölçeklenebilir Mimari Tasarımı
- Yüksek sayıda pull request alan sistemlerde sürekli çalışan bir sunucu yerine Amazon SQS gibi bir mesaj kuyruk servisi kullanılabilir.
- Kubernetes gibi bir orkestrasyon aracı ile SQS'deki iş sayısına göre otomatik olarak Docker konteynerleri ayağa kaldırılabilir.
- Her konteyner içinde Sam Grap gibi bir araç çalıştırılarak pull request'ler taranabilir ve tespit edilen güvenlik açıkları GitHub'a gönderilir.
- 53:26Geliştirici Deneyimi ve Dinamik Analiz
- Geliştiriciler kod içinde güvenlik açıklarını önceden tespit edebilmek için Sam Grap gibi araçları IDE'lerine plugin olarak kurabilirler.
- Kod statik analizinden geçtikten sonra, Docker konteyneri oluşturulabilir ve bu konteyner içinde de güvenlik açıkları tespit edilebilir.
- Staging ortamında çalışan uygulamalar için dinamik uygulama tarama araçları (dynamic application scanner) kullanılabilir, örneğin Burp Suite veya Invicti gibi.
- 58:42Dinamik Uygulama Güvenlik Taraması
- Staging ortamında çalışan uygulamalar canlıya çıkmadan önce dinamik güvenlik taraması yapılmalıdır.
- Burp Suite ve Invicti gibi araçlar, XSS, SQL injection gibi güvenlik açıklarını tespit etmek için kullanılabilir.
- Dinamik güvenlik taraması, statik kod analizi (SAST) yöntemlerine göre daha iyi sonuçlar verebilir çünkü daha fazla güvenlik açıklarını tespit edebilir.
- 1:00:39Dinamik Tarayıcıların Entegrasyonu
- Dinamik tarayıcılar (DAST) gibi Burp Suite ve Invict gibi araçlar, CI/CD araçlarıyla entegrasyon için pluginler sunuyor.
- Bu entegrasyon sayesinde, uygulama deployment aşamasında otomatik olarak taranabilir ve zafiyetler tespit edildiğinde deployment durdurulabilir.
- Ancak çoğu organizasyonda bu aşamada dinamik tarayıcı kullanılmıyor çünkü oturum açma işlemleri otomatikleştirilmesi zor ve tarayıcılar çok uzun sürebiliyor.
- 1:03:49Dinamik Tarayıcı Kullanımındaki Zorluklar
- Dinamik tarayıcılar (DAST) çok uzun sürebiliyor, bir uygulama tarayısı 7-8 saat, hatta 24 saat sürebilir.
- Günde yüzlerce, binlerce deployment yapılan organizasyonlarda bu kadar uzun tarayıcı beklemek mümkün değil.
- Dinamik tarayıcılar sadece pull requestte yapılan değişiklikleri algılayamıyor, bu yüzden genellikle uygulama canlıya çıktıktan sonra manuel olarak taranıyor.
- 1:06:59Canlı Uygulama Güvenliği
- Uygulama canlıya çıktıktan sonra da güvenlik önlemleri almak gerekiyor.
- Canlı uygulama genellikle bir web sunucusu üzerinde çalışıyor ve kullanıcılar üzerinden erişiliyor.
- Güvenlikte "ataş surface" (saldırı yüzeyi) ne kadar az olursa o kadar iyi, bu yüzden sunucunun açık portları minimuma indirilmeli.
- 1:10:25Canlı Uygulamayı Koruma Yöntemleri
- Canlı uygulamayı korumak için Web Application Firewall (WAF) kullanılıyor, bu sistem gelen trafiği analiz ederek SQL injection ve XSS gibi saldırıları engelliyor.
- Cloudflare gibi WAF sistemleri ücretsiz veya uygun fiyatlı olarak sunuluyor ve aynı zamanda rate limiting (istek sayısını sınırlama) özelliği de sunuyor.
- E-ticaret siteleri için bot trafiğini önlemek önemli, çünkü botlar sitenin fiyatlarını çalabilir veya çalınmış kullanıcı bilgileri ile giriş denemesi yapabilir (credential stuffing).
- 1:13:51Güvenlik Çözümleri ve Bot Koruma
- Cloudflare, credential stuffing saldırılarına karşı rate limiting mekanizması sunar ancak IP bazlı çalıştığı için saldırgan IP değiştirirse sorun devam edebilir.
- PerimeterX gibi firmalar, JavaScript kodu ile kullanıcıların bot veya gerçek insan olduğunu ayırt edebilen ileri teknoloji çözümleri sunar ve Cloudflare'dan daha iyi performans gösterir.
- Bu tür çözümler credential stuffing saldırılarını, web scraping ve fiyat verilerini çeken botları engelleyebilir.
- 1:15:02Pentest ve Güvenlik Testleri
- Pentest (güvenlik testi) uygulamalara yılda iki kere yapılması gereken, regülasyonlar tarafından zorunlu kılan bir süreçtir.
- Otomatik güvenlik sistemleri genellikle kolay tespit edilebilen zafiyetleri bulurken, business lojik zaafiyetleri veidorları tespit edemez.
- Bug bounty programları, güvenlik açığı bulan etik hackerlara ödemeyi içerir ve sadece düzenli pentestler arasında oluşan zafiyetleri tespit etmeyi sağlar.
- 1:17:03Vulnerability Scanning
- Nessus, çalışan yazılımları ve servisleri analiz ederek zafiyet tespiti yapan popüler bir vulnerability scanner tooludur.
- Nessus'u satın almak yerine, port hijyeni iyi yapılmış, düzenli güncelleme yapan ve Cloudflare firewall kullanılmış sunucular için alternatif çözümler kullanılabilir.
- Cloudflare kullanıldığında, saldırgan gerçek sunucu IP'sini bilemeyerek doğrudan bağlantı kuramaz ve bu da zafiyet tespitini zorlaştırır.
- 1:19:13Açık Kaynak Vulnerability Scanning
- Nuclei, Nessus'tan daha verimli sonuçlar veren açık kaynak bir vulnerability scanner tooludur.
- Nuclei, Nessus'tan daha fazla zaafiyet kuralı ve şablonu içerir ve düzenli olarak kullanılması önerilir.
- Sadece 80 ve 443 portlarının açık olması güvenliği sağlayamaz, çünkü diğer web protokolleri üzerinden çalışan yazılımlarda da zafiyetler bulunabilir.
- 1:21:21Güvenlik Taraması İçin Hazırlık
- Güvenlik taraması yapabilmek için öncelikle tarama yapılacak sistemlerin envanteri (asset listesi) oluşturulması gerekir.
- Cloudflare gibi DNS yönetim sistemleri, tüm sub domainleri takip edebilir ve bu da bir envanter olarak kullanılabilir.
- Asset listesi olmadan güvenlik taraması yapmak zor olur ve tarama yapılacak sistemler belirlenemez.
- 1:23:16DevSecOps ve Güvenlik Otomasyonu
- Jenkins gibi araçlar sadece geliştiriciler tarafından değil, güvenlik ekibi tarafından da kullanılabilir.
- Güvenlik ekibi her sabah Jenkins ile çalıştırılabilen bir Python kodu oluşturabilir, bu kod Cloudflare'dan domain listesini alıp her birine nükleer tarama yapabilir.
- Tarama sonucunda bulunan zafiyetler (onerable list) Jira'ya otomatik olarak ticket açılarak takip edilebilir.
- 1:25:16DNS Hijyeni ve Subdomain Takeover
- Subdomain takeover, bir estre bucket veya S3 depolama alanı silindiğinde, DNS kaydı hala mevcut kalabilir ve başka biri tarafından ele geçirilebilir.
- Ele geçirilen subdomain üzerinden saldırgan, istenmeyen içerik yayınlayabilir.
- DNS hijyenini sağlamak için, Amazon'dan silinen her estre bucket veya S3 depolama alanı için DNS kaydını da silmek gerekir.
- 1:27:04Güvenlik Otomasyonu ve Eğitim
- Subdomain takeover taraması için otomatik kodlar yazılabilir veya mevcut açık kaynak kodlu araçlar kullanılabilir.
- Güvenlik ekibi, her sabah çalıştırılan bir Python kodu ile Cloudflare'dan subdomainleri alıp takeover taraması yapabilir ve zafiyetleri Jira'ya bildirebilir.
- Developerların güvenlik eğitimi önemlidir çünkü bazen zafiyetlerin varlığını bilmezler.
- 1:29:18Güvenlik Eğitimi Kaynakları
- Contra gibi interaktif güvenlik eğitim platformları, XSS gibi zafiyetlerin nasıl ortaya çıktığını göstererek geliştiricilere güvenlik farkındalığı kazandırır.
- Secure Code Warrior, Contra'nın gelişmiş versiyonu olarak çeşitli eğitimler ve turnuvalar sunar.
- Eğitim, zafiyetlerin büyük bir bölümünü daha yaşanmadan çözebilecek bir sistemdir.
- 1:30:31DevSecOps'ün Geleceği
- Bu eğitim yaklaşık iki saatlik bir DevSecOps giriş eğitimidir.
- DevSecOps, geleceği olan bir alandır ve araştırmalarla ilerleyebilirsiniz.
- İzleyicilerden videoyu beğenmeleri ve yorum yapmaları rica edilmiştir.