top of page

Selenium Java Otomasyonunu Güvenlik Testlerine Genişletmek

selcukgenc
3 saat önce
12 dakikada okunur

Fonksiyonel Test Otomasyonu Neden Güvenlik Zayıflıklarını da Aramalı

Selenium en çok fonksiyonel tarayıcı otomasyonuyla bilinir: bir sayfayı açmak, veri girmek, butonlara tıklamak, sonuçları doğrulamak ve bu adımları farklı tarayıcı ve ortamlarda tekrarlamak.

Ancak modern web uygulamaları fonksiyonel doğruluktan fazlasına ihtiyaç duyar.

Bir sayfa başarıyla yüklenebilir. Bir kullanıcı giriş yapabilir. Bir ödeme gönderilebilir. Tüm fonksiyonel doğrulamalar geçebilir.

Ve uygulamada yine de ciddi güvenlik zayıflıkları bulunabilir.

Bu da ilginç bir soruyu akla getiriyor:

Mevcut bir Selenium Java otomasyon çerçevesi, işe yarar güvenlik testleri de yapabilir mi?

Cevap: evet — ama bazı önemli sınırlamalarla.

Amaç Selenium'u sızma testi platformlarının yerine koymak değil. Bunun yerine güvenlik kontrolleri, kurumların zaten çalıştırdığı fonksiyonel testlerin yanında koşan otomatik regresyon testlerinin bir katmanı haline gelebilir.

Fonksiyonel Başarı, Güvenlik Başarısı Demek Değildir

Sıradan bir otomatik giriş testini düşünün:

Uygulamayı aç
Kullanıcı adını gir
Şifreyi gir
Giriş'e tıkla
Panoyu doğrula
Çıkış yap

Fonksiyonel açıdan bu yeterli olabilir.

Güvenlik açısından ise pek çok soru cevapsız kalır:

  • HTTPS doğru kullanıldı mı?

  • Önemli tarayıcı güvenlik başlıkları (header) döndü mü?

  • Kimlik doğrulama çerezleri uygun güvenlik bayraklarıyla korunuyor mu?

  • Oturum kimliği, kimlik doğrulamadan sonra değişti mi?

  • Hassas bilgiler URL'lerde veya sayfa kaynağında açığa çıkıyor mu?

  • Daha düşük yetkili bir kullanıcı bir yönetici sayfasına ulaşabiliyor mu?

  • CSRF koruması var mı?

  • Kimlik doğrulaması gerektiren içerik yanlış şekilde önbelleğe alınıyor mu?

  • Çıkış işlemi önceki oturumu gerçekten geçersiz kılıyor mu?

  • Sunucu veya çerçeve bilgileri gereksiz yere ifşa ediliyor mu?

Geleneksel Selenium test paketleri genellikle bu sorulara cevap vermez; çünkü bunun için tasarlanmamışlardır.

Ama Selenium'da, güvenlik testinin şiddetle ihtiyaç duyduğu bir şey zaten var:

Uygulama bağlamı.

Selenium kullanıcının nerede olduğunu, hangi rolle giriş yapıldığını, hangi sayfaya ulaşıldığını, hangi iş akışının yürütüldüğünü ve bundan sonra ne olması gerektiğini bilir.

Bu bağlam, güvenlik odaklı otomasyonu şaşırtıcı derecede güçlü kılar.

Ek Bir Anahtar Kelime Katmanı Olarak Güvenlik

Anahtar kelime tabanlı bir Selenium çerçevesi zaten şu tür eylemleri destekliyor olabilir:

OpenBrowser
NavigateBrowser
typeInput
clickButton
verifyText
selectDropdown
CloseBrowser

Güvenlik işlevleri de aynı mimariyle eklenebilir.

Örneğin:

SEC_CheckHTTPS
SEC_CheckSecurityHeaders
SEC_CheckCookieFlags
SEC_CheckMixedContent
SEC_CheckSensitiveDataInURL
SEC_CheckSensitiveDataInPageSource
SEC_VerifyCSRFProtection
SEC_CheckSessionRotation
SEC_CaptureAuthenticatedSession
SEC_VerifyOldSessionRejected

Bu yaklaşım, test adımlarının Excel'de veya başka bir veri kaynağında harici olarak tutulduğu hibrit çerçevelerde özellikle kullanışlıdır.

Böylece bir fonksiyonel test hem fonksiyonel test hem de güvenlik regresyon testi olabilir.

Örneğin:

OpenBrowser
NavigateBrowser

SEC_CheckHTTPS
SEC_CheckSecurityHeaders
SEC_CheckSessionRotation

EnterUsername
EnterPassword
ClickLogin

SEC_CheckSessionRotation
SEC_CaptureAuthenticatedSession
SEC_CheckCookieFlags

ExecuteBusinessWorkflow

Logout

SEC_VerifyAuthenticationCookieRemoved
SEC_VerifyOldSessionRejected
SEC_VerifyLogoutRedirect

Güvenlik kontrolleri, tamamen ayrı bir test süreci gerektirmek yerine sıradan, yeniden kullanılabilir otomasyon adımlarına dönüşür.

Zamanlama Önemlidir

Güvenlik anahtar kelimeleri her Selenium testinin sonuna öylece eklenemez.

Bir güvenlik kontrolünün ne zaman çalıştığı, çoğu zaman neyi kontrol ettiği kadar önemlidir.

İşe yarar bir güvenlik testi yaşam döngüsü şöyle görünebilir:

TEST BAŞLANGICI
    |
    v
GİRİŞTEN ÖNCE
    |
    |-- HTTPS Doğrula
    |-- Güvenlik Başlıklarını Kontrol Et
    |-- Karışık İçeriği Kontrol Et
    |-- Giriş Korumasını Doğrula
    `-- Giriş Öncesi Oturumu Kaydet
    |
    v
GİRİŞ SIRASINDA
    |
    |-- Şifre Alanı Güvenliği
    |-- Geçersiz Giriş Davranışı
    `-- MFA Kontrolleri
    |
    v
GİRİŞTEN SONRA
    |
    |-- Oturum Yenileme
    |-- Kimliği Doğrulanmış Oturumu Kaydet
    |-- Çerez Güvenliği
    `-- CSRF Kontrolleri
    |
    v
KİMLİĞİ DOĞRULANMIŞ İŞ AKIŞI
    |
    |-- Yetkilendirme
    |-- Hassas Veri
    |-- Ağ Trafiği
    |-- API Güvenliği
    `-- Erişim Kontrolü
    |
    v
ÇIKIŞ
    |
    v
ÇIKIŞTAN SONRA
    |
    |-- Kimlik Doğrulama Çerezi Silindi
    |-- Önceki Oturum Reddedildi
    `-- Korunan Kaynak Engellendi
    |
    v
GÜVENLİK ANALİZİ / RAPORLAMA

Oturum yenileme (session rotation), zamanlamanın neden önemli olduğunu gösteren iyi bir örnektir.

Oturum kimliğini yalnızca girişten sonra kontrol etmek bize çok az şey söyler.

Daha güçlü bir otomatik test, kimlik doğrulama öncesi oturumu kaydeder, girişi yapar ve ardından kimliği doğrulanmış oturumu ilk oturumla karşılaştırır.

Benzer şekilde, eski bir oturumun hâlâ kullanılabilir olup olmadığını test etmek çıkıştan sonra anlamlıdır, öncesinde değil.

Bu nedenle güvenlik otomasyonu, birbirinden kopuk güvenlik kontrolleri çalıştırmak yerine uygulamanın durumunu anlamaktan fayda görür.

Selenium DOM'dan Fazlasını Test Edebilir

Güvenlik odaklı bir Selenium çerçevesi birkaç katmanda çalışabilir.

Tarayıcı ve Sayfa Güvenliği

Pasif güvenlik kontrolleri şunları inceleyebilir:

  • HTTPS kullanımı

  • Karışık içerik (mixed content)

  • URL'deki hassas parametreler

  • Sayfa kaynağındaki hassas bilgiler

  • Tarayıcı konsol mesajları

  • Önbellekleme davranışı

  • Şifre alanı yapılandırması

  • Güvenlikle ilgili HTTP başlıkları

  • Sunucu bilgisi ifşası

Bu kontroller caziptir; çünkü çoğu, normal fonksiyonel regresyon testleri sırasında görece az ek riskle çalışabilir.

Kimlik Doğrulama ve Oturum Güvenliği

Selenium, gerçek kullanıcı yolculuğunu kontrol ettiği için kimlik doğrulama ve oturum testlerinde özellikle kullanışlıdır.

Anonim
    |
    v
Kimlik doğrulanıyor
    |
    v
Kimliği doğrulanmış
    |
    v
Yetkili iş akışı
    |
    v
Çıkış
    |
    v
Kimliği doğrulanmamış

Selenium kullanıcının bu yaşam döngüsünde nerede olduğunu bildiği için otomasyon şunları test edebilir:

  • Oturum yenileme

  • Çıkışta oturumun geçersiz kılınması

  • Kimlik doğrulama çerezleri

  • Oturum zaman aşımı davranışı

  • Korunan sayfa davranışı

  • Rol kısıtlamaları

  • Doğrudan URL erişimi

  • Yatay erişim kontrolü

  • Dikey erişim kontrolü

Bu, fonksiyonel otomasyonu güvenlik testiyle birleştirmenin özellikle değerli olabildiği bir alandır.

Yetkilendirme Testleri

Güvenlik odaklı bir Selenium çerçevesi şu tür soruları otomatikleştirebilir:

A Kullanıcısı, B Kullanıcısına ait bir nesneye erişebilir mi?

Ya da:

Normal bir kullanıcı bir yönetici URL'sine doğrudan erişebilir mi?

Ya da:

Bu yetkiye sahip olmaması gereken bir kullanıcı, yönetici işlevlerine erişebiliyor mu?

Bu testler çok değerli olabilir; çünkü fonksiyonel otomasyon çerçevesi bu kaynaklara ulaşmak için gereken kullanıcı hesaplarını, locator'ları, URL'leri, test verilerini, kimlik doğrulama akışlarını ve iş akışlarını çoğu zaman zaten içerir.

Her şeyi ayrı bir güvenlik aracında yeniden kurmak yerine, mevcut fonksiyonel çerçeve bu bilgiyi yeniden kullanabilir.

Ancak bir butonu kullanıcı arayüzünde gizlemek, sunucu tarafında yetkilendirmeyi uygulamakla aynı şey değildir.

Bu nedenle iyi bir güvenlik testi hem kullanıcı arayüzü davranışını hem de mümkünse korunan kaynağa doğrudan erişimin gerçekten reddedilip reddedilmediğini doğrulamalıdır.

Ağ Farkındalıklı Güvenlik Testi

Modern Selenium yetenekleri, ekranda görünen sayfanın ötesinde görünürlük sağlayabilir.

Tarayıcıya ve uygulamaya bağlı olarak ağ odaklı güvenlik kontrolleri şunları inceleyebilir:

HTTP İstekleri
HTTP Yanıtları
Durum Kodları
İstek Başlıkları
Yanıt Başlıkları
Üçüncü Taraf İstekleri
Hassas Veri İfşası
Beklenmeyen Ağ İletişimi

Bu, sıradan arayüz otomasyonu ile güvenlik analizi arasındaki boşluğun bir kısmını kapatmaya yardımcı olur.

Örneğin bir Selenium testi finansal bir işlem yaparken çerçeve ilgili ağ trafiğini gözlemleyebilir.

Güvenlik katmanı daha sonra hassas değerlerin isteklerde, URL'lerde veya yanıtlarda beklenmedik şekilde açığa çıkmadığını doğrulayabilir.

API Güvenliği de Aynı Çerçevenin Parçası Olabilir

Her güvenlik testi bir tarayıcı gerektirmez.

Bir Selenium Java çerçevesi, tarayıcı güvenliği anahtar kelimelerinin yanında API güvenliği anahtar kelimeleri de içerebilir.

Örnekler:

SEC_API_CheckAuthentication
SEC_API_CheckAuthorization
SEC_API_VerifyMissingTokenRejected
SEC_API_CheckHTTPMethods
SEC_API_CheckContentType
SEC_API_CheckSchemaValidation
SEC_API_CheckRateLimit
SEC_API_CheckJWT
SEC_API_CheckJWTClaims
SEC_API_CheckTokenExpiration
SEC_API_CheckSensitiveData

Bu sayede tek bir otomasyon çerçevesi hem kullanıcı arayüzü iş akışını hem de ilgili API'leri doğrulayabilir.

Örneğin Selenium, tarayıcı üzerinden uygulama durumunu oluşturabilir veya değiştirebilir.

Ardından bir API güvenlik testi, arka ucun bu durumu düzgün şekilde koruyup korumadığını doğrulayabilir.

Yalnızca API'ye yönelik güvenlik regresyon testleri hiç tarayıcı başlatmadan da çalışabilir.

Bu, güvenlik katmanının aynı otomasyon mimarisinin parçası olarak kalırken Selenium'un ötesine genişlemesini sağlar.

Selenium'u OWASP ZAP ile Entegre Etmek

Selenium, OWASP ZAP gibi özel bir dinamik güvenlik test aracıyla birlikte kullanıldığında daha da ilginç hale gelir.

ZAP, tarayıcı ile uygulama arasına giren (intercepting) bir proxy olarak çalışabilir.

Akış şöyle olur:

Selenium
    |
    v
Tarayıcı
    |
    v
OWASP ZAP
    |
    v
Uygulama

Selenium gerçekçi iş akışlarını yürütürken ZAP trafiği gözlemler.

Otomasyon şu tür işlemleri yönetebilir:

ZAP Oturumunu Başlat

Selenium İş Akışını Çalıştır

Pasif Taramanın Bitmesini Bekle

ZAP Uyarılarını Al

Uyarıları Güvenlik Bulgusu Olarak İçe Aktar

Güvenlik Kalite Kapılarını Uygula

Güvenlik Raporu Oluştur

Bu birleşim değerlidir; çünkü tarayıcı (scanner), gerçek uygulama iş akışlarının ürettiği trafiği görür.

Buna, bağımsız bir tarayıcının (crawler) ulaşmakta zorlanabileceği kimlik doğrulamalı alanlar da dahildir.

Bir Selenium testi zaten nasıl giriş yapılacağını, menülerde nasıl gezinileceğini, uygulama kayıtlarının nasıl açılacağını, formların nasıl gönderileceğini ve korunan sayfalara nasıl ulaşılacağını bilir.

Güvenlik tarayıcısı bu mevcut otomasyondan yararlanabilir.

Aktif tarama da entegre edilebilir, ancak net bir sınır gerektirir.

Aktif zafiyet denemeleri yalnızca test edilmesine açıkça izin verilmiş sistemlerde çalıştırılmalıdır.

Bunlar normalde sıradan pasif regresyon testlerinden ayrı tutulmalıdır.

Güvenlik Bulguları PASS ve FAIL'den Fazlasını Gerektirir

Geleneksel fonksiyonel otomasyon üç temel sonuçla rahattır:

PASS
FAIL
SKIP

Güvenlik bulguları çok daha fazla bağlam gerektirir.

Otomasyonun şunu raporladığını varsayalım:

SEC_CheckSecurityHeaders : FAIL

İşe yarar bir güvenlik raporu burada durmamalıdır.

Ne olduğunu açıklamalıdır.

Örneğin:

Ne Bulundu

Uygulama yanıtında, beklenen bir veya daha fazla tarayıcı güvenlik başlığı eksik.

Beklenen Davranış

Uygulama, test edilen kaynak için uygun güvenlik başlıklarını döndürmelidir.

Neden Önemli

Güvenlik başlıkları, çeşitli saldırı türlerine ve bilgi ifşasına karşı tarayıcı tarafında derinlemesine savunma sağlar.

Gerçek Sonuç

Rapor tam olarak hangi başlıkların eksik olduğunu belirtmelidir.

Önerilen Düzeltme

Uygun yanıt başlıklarını uygulama, web sunucusu, ters proxy, API ağ geçidi veya yük dengeleyici seviyesinde yapılandırın.

Olgun bir otomatik güvenlik bulgusu şunları içerebilir:

Bulgu ID
Güvenlik Kontrolü
Önem Derecesi
Güvenlik Kategorisi
Etkilenen URL
Test Senaryosu
Ne Test Edildi
Ne Bulundu
Beklenen Davranış
Gerçek Davranış
Sorun Neden Önemli
Olası Saldırı / Risk
Kanıt
Önerilen Düzeltme
OWASP Eşlemesi
CWE Eşlemesi
ASVS Eşlemesi
Otomatik Güven Düzeyi
Manuel Doğrulama Gereksinimi
Yanlış Pozitif Değerlendirmeleri

Bu, bir Selenium hatasını bir geliştiricinin, test uzmanının, güvenlik mühendisinin veya yöneticinin gerçekten inceleyebileceği bir şeye dönüştürür.

Yanlış Güven Duygusundan Kaçınmak Kritiktir

Güvenlik otomasyonunun, sıradan fonksiyonel testlerde daha az karşılaşılan önemli bir sorunu vardır:

Bir gözlem, her zaman bir zafiyetin kanıtı değildir.

Otomatik bir çıkış testinin, daha önce kaydedilmiş bir oturumla korunan bir kaynağa erişmeye çalıştığını düşünün.

Sunucu şu yanıtı verir:

HTTP 200

Çerçevenin şunu raporlaması cazip olabilir:

YÜKSEK - Oturum çıkıştan sonra da geçerli.

Ama tek başına HTTP 200 bunu kanıtlamaz.

Sunucu şunlardan birini döndürmüş olabilir:

  • Bir giriş sayfası

  • Bir erişim reddedildi sayfası

  • Genel bir açılış sayfası

  • Bir hata sayfası

  • Gerçekten korunan, kimlik doğrulamalı içerik

Bu nedenle otomasyon daha dikkatli bir şey raporlamalıdır, örneğin:

Olası eski oturum yeniden kullanımı tespit edildi.

Otomatik Güven Düzeyi: Orta

Manuel Doğrulama: Önerilir

Bu ayrım önemlidir.

Bir güvenlik otomasyon çerçevesi üç seviyeyi ayırt etmelidir:

Gözlem
    |
    v
Olası Bulgu
    |
    v
Doğrulanmış Bulgu

CSRF de İyi Bir Örnektir

Otomasyonun bir POST formunu incelediğini ve görünür bir anti-CSRF token'ı bulamadığını varsayalım.

Şunu raporlamak cazip olabilir:

CSRF zafiyeti tespit edildi.

Ama bu sonuç yanlış olabilir.

Uygulama şunları kullanıyor olabilir:

  • SameSite çerezleri

  • Özel istek başlıkları

  • Çerçeve düzeyinde sahtecilik önleme (antiforgery) mekanizmaları

  • Origin doğrulaması

  • Otomatik kontrolün tanımadığı başka bir koruma yöntemi

Daha iyi bir otomatik sonuç şöyle olurdu:

Tanınan, görünür bir anti-CSRF token'ı tespit edilmedi.

Bulgu Durumu:
Olası Bulgu

Otomatik Güven Düzeyi:
Orta

Manuel Doğrulama:
Önerilir

Bu, gerçekte kanıtlanmamış bir zafiyet iddia etmekten çok daha profesyoneldir.

Bu nedenle iyi bir güvenlik otomasyonu; kanıtı, güven düzeyini, olası yanlış pozitif koşullarını ve manuel doğrulamanın önerilip önerilmediğini raporlamalıdır.

En Büyük Fayda Güvenlik Regresyon Testi Olabilir

Bir zafiyeti bir kez bulmak değerlidir.

Altı ay sonra zafiyetin geri geldiğini otomatik olarak tespit etmek ise daha da değerli olabilir.

Güvenlik odaklı bir otomasyon çerçevesi, kabul edilmiş bir referans noktası (baseline) oluşturabilir.

Örneğin:

Güvenlik Puanı: 91

Kritik Bulgular: 0
Yüksek Bulgular: 0
Orta Bulgular:   2
Düşük Bulgular:  4

Uygulamanın gelecekteki bir derlemesi şunu üretebilir:

Güvenlik Puanı: 76

Kritik Bulgular: 0
Yüksek Bulgular: 1
Orta Bulgular:   4
Düşük Bulgular:  5

Çerçeve yeni çalıştırmayı kabul edilmiş referans noktasıyla karşılaştırabilir.

Bulguları şu şekilde sınıflandırabilir:

YENİ
ÇÖZÜLDÜ
TEKRARLAYAN
ÖNEMİ ARTTI
ÖNEMİ AZALDI

Bu da şu tür güvenlik regresyon kurallarını mümkün kılar:

Yeni Kritik > 0 ise derlemeyi başarısız say

Yeni Yüksek > 0 ise derlemeyi başarısız say

Güvenlik Puanı < 80 ise derlemeyi başarısız say

Puan Düşüşü > 5 ise derlemeyi başarısız say

Bu, güvenlik testini ara sıra yapılan bir faaliyetten sürekli güvenlik regresyon testine dönüştürür.

CI/CD'de Güvenlik Testi

Güvenlik kontrolleri tekrarlanabilir otomasyon adımlarına dönüştüğünde CI/CD hatlarına dahil olabilir.

Bir hat şu adımları içerebilir:

Uygulamayı Derle

Test Ortamına Dağıt

Fonksiyonel Regresyonu Çalıştır

Pasif Güvenlik Regresyonunu Çalıştır

API Güvenlik Testlerini Çalıştır

Onaylı Dinamik Güvenlik Testlerini Çalıştır

Güvenlik Bulgularını Oluştur

Referans Noktasıyla Karşılaştır

Güvenlik Kalite Kapısını Uygula

Raporları Yayınla

Önemli olan, güvenliğin normal yazılım geliştirme geri bildirim döngüsünün bir parçası haline gelmesidir.

Geliştiriciler, belirli türdeki güvenlik regresyonlarını keşfetmek için artık sürüm döngüsünün sonunu beklemek zorunda kalmaz.

Bu, resmi güvenlik testlerini ortadan kaldırmaz. Daha erken geri bildirim sağlar.

Yapay Zekâ Nerede Yardımcı Olabilir — ve Nerede Olmamalı

Yapay zekâ, özellikle bulguları yorumlarken güvenlik otomasyonunu güçlendirebilir.

Deterministik otomasyonun şunu bulduğunu varsayalım:

Eksik Güvenlik Başlıkları:

Strict-Transport-Security

X-Content-Type-Options

Referrer-Policy

Yapay zekâ şu konularda yardımcı olabilir:

  • Bu başlıkların neden önemli olduğunu açıklamak

  • Düzeltme önermek

  • Takip niteliğinde güvenlik testleri önermek

  • Geliştirici dostu bir açıklama üretmek

  • Yönetici özeti hazırlamak

  • İlgili OWASP veya CWE kategorilerini önermek

  • Ek doğrulama önermek

Ancak orijinal deterministik güvenlik kontrolünün geçip geçmediğine karar vermek yapay zekânın sorumluluğunda olmamalıdır.

Daha güvenli bir mimari şöyledir:

Selenium / API / ZAP
        |
        v
Deterministik Kanıt
        |
        v
Güvenlik Bulgusu
        |
        v
Yapay Zekâ Analizi

Önce kanıt gelmelidir.

Yapay zekâ analizi zenginleştirmeli, kanıt üretmemelidir.

Bu ayrım, yapay zekâ güvenlik testlerine dahil edildiğinde son derece önemlidir.

Selenium'a Güvenlik Testi Eklemenin Avantajları

En büyük avantaj yeniden kullanımdır.

Kurumların elinde şunları içeren binlerce Selenium testi olabilir:

  • Kimlik doğrulama akışları

  • Uygulama içi gezinme

  • Role özel kullanıcılar

  • İş verileri

  • Ekran görüntüleri

  • Raporlar

  • CI/CD entegrasyonu

  • Ortam yapılandırması

  • Yıllara dayanan uygulama bilgisi

Bir güvenlik katmanı bu yatırımı yeniden kullanabilir.

Sürekli Güvenlik Regresyonu

Güvenlik kontrolleri yalnızca ara sıra yapılan güvenlik değerlendirmelerinde değil; her gece, her derlemede veya ilgili her sürümde kontrol edilebilir.

Kimlik Doğrulamalı Uygulama Kapsamı

Selenium, kimlik doğrulaması yapmayan tarayıcıların kolayca keşfedemeyeceği iş akışlarına ulaşabilir.

İş Bağlamı Farkındalığı

Otomasyon kullanıcıları, rolleri, nesneleri, işlemleri, iş akışlarını ve beklenen uygulama davranışını anlar.

Tekrarlanabilirlik

Bir güvenlik bulgusu, onu üreten otomatik iş akışıyla birebir ilişkilendirilebilir. Geliştiriciler aynı adım dizisini tekrar oluşturabilir.

Birleşik Fonksiyonel ve Güvenlik Kanıtı

Tek bir çalıştırma iki farklı soruyu cevaplayabilir:

Uygulama çalışıyor mu?

ve

Önemli bir güvenlik kontrolü geriledi mi?

Daha Erken Geri Bildirim

Geliştiriciler belirli güvenlik sorunlarını resmi bir sızma testinden önce öğrenebilir.

Yeniden Kullanılabilir Güvenlik Profilleri

Farklı uygulama türleri için ortak güvenlik kontrolü grupları oluşturulabilir:

Herkese Açık Web Siteleri

Kimlik Doğrulamalı Uygulamalar

Yönetici Portalları

API'ler

Dosya Yükleme İş Akışları

Tam Güvenlik Regresyon Paketleri

Bu, güvenlik testini standartlaştırmayı kolaylaştırır.

Dezavantajlar ve Sınırlamalar

Aynı derecede önemli sınırlamalar da vardır.

Selenium Bir Sızma Testi Aracı Değildir

Güvenlik anahtar kelimeleri eklemek Selenium'u Burp Suite'e, OWASP ZAP'a, bir altyapı tarayıcısına, bir kaynak kod güvenlik analizörüne veya profesyonel bir sızma testi uzmanına dönüştürmez.

Pek çok zafiyet şunları gerektirir:

  • Özel güvenlik araçları

  • İnsan muhakemesi

  • Altyapı görünürlüğü

  • Kaynak kod analizi

  • Tehdit modelleme

  • Zincirleme saldırı senaryoları

  • Derin uygulama bilgisi

Selenium güvenlik otomasyonu bu faaliyetleri tamamlamalı, onların yerini almamalıdır.

Yanlış Pozitifler Mümkündür

Otomatik gözlemler bağlam gerektirir.

Eksik bir başlık belirli bir kaynak için kasıtlı olabilir. Bir çerez, kimlik doğrulama çerezi değil bir analitik çerezi olabilir. Bir HTTP 200 yanıtı, erişim reddedildi sayfası içerebilir.

Bu nedenle güvenlik otomasyonu sonuçları abartmaktan kaçınmalıdır.

Yanlış Negatifler Mümkündür

Tüm otomatik güvenlik kontrollerinden geçmek, bir uygulamanın güvenli olduğu anlamına gelmez.

Çerçeve yalnızca uygulanmış güvenlik koşullarını test etmeyi bilir.

Bir saldırgan ise otomasyon çerçevesindeki test senaryolarıyla sınırlı değildir.

Bakım Yükü Artar

Güvenlik kontrolleri de birer yazılımdır. Bakım gerektirirler.

Tarayıcılardaki, kimlik doğrulama sistemlerindeki, API mimarisindeki, uygulama çerçevelerindeki, güvenlik politikalarındaki ve uygulama davranışındaki değişiklikler, güvenlik otomasyonunun güncellenmesini gerektirebilir.

Aktif Testler Risk Taşır

Pasif gözlem, rutin QA regresyonu için genellikle daha uygundur.

Aktif zafiyet denemeleri ise farklıdır. Şunlara yol açabilirler:

Uygulama Verilerini Değiştirmek

Olağandışı Trafik Üretmek

Güvenlik Savunmalarını Tetiklemek

Çok Sayıda İstek Oluşturmak

Uygulama Kararlılığını Etkilemek

Bu nedenle aktif testler açıkça etkinleştirilmeli ve yetkili ortamlarla sınırlandırılmalıdır.

Güvenlik Uzmanlığı Hâlâ Gereklidir

Otomasyon şunu tespit edebilir:

Bu yanıtta CSRF koruması yok gibi görünüyor.

Bir güvenlik uzmanının yine de şunu belirlemesi gerekebilir:

Bu durum, bu uygulamanın mimarisinde gerçekten istismar edilebilir mi?

Bu ayrım önemlidir.

Selenium Güvenlik Otomasyonu Güvenlik Testlerini Tamamlamalı, Yerini Almamalı

En güçlü model şu değildir:

Sızma Testi
yerine
Selenium

Daha güçlü model şudur:

Fonksiyonel Otomasyon
        +
Güvenlik Regresyon Otomasyonu
        +
Statik Uygulama Güvenlik Testi (SAST)
        +
Yazılım Bileşen / Bağımlılık Analizi
        +
Dinamik Uygulama Güvenlik Testi (DAST)
        +
Manuel Güvenlik Testi
        +
Sızma Testi

Her katman farklı türde sorunları yakalar.

Selenium'un rolü özellikle tekrarlanabilir, uygulama bağlamını bilen güvenlik kontrollerinde öne çıkar.

Fonksiyonel ve Güvenlik Testleri Birlikte Çalışabilir

Geleneksel olarak fonksiyonel test ve güvenlik testi çoğu zaman ayrı disiplinler olarak var olmuştur.

Fonksiyonel otomasyon şunu sorar:

Kullanıcı iş akışını tamamlayabiliyor mu?

Güvenlik testi ise şunu sorar:

İş akışı kötüye kullanılabilir mi?

İkisinin yönlerini birleştirmek daha ilginç sorular ortaya çıkarır.

Örnek 1 — Hesap Erişimi

Fonksiyonel Test

Normal bir kullanıcı kendi hesabını açabiliyor mu?

Güvenlik Uzantısı

Aynı kullanıcı bir kimlik değerini değiştirerek
başka birinin hesabını açabiliyor mu?

Örnek 2 — Çıkış

Fonksiyonel Test

Çıkış çalışıyor mu?

Güvenlik Uzantısı

Önceki kimliği doğrulanmış oturum,
çıkıştan sonra korunan kaynaklara
hâlâ erişebiliyor mu?

Örnek 3 — Dosya Yükleme

Fonksiyonel Test

Bir kullanıcı belge yükleyebiliyor mu?

Güvenlik Uzantısı

Uygulama beklenmeyen veya
tehlikeli dosya türlerini reddediyor mu?

Örnek 4 — Yönetim

Fonksiyonel Test

Bir yönetici, yönetim
sayfasına erişebiliyor mu?

Güvenlik Uzantısı

Normal bir kullanıcı aynı yönetim
URL'sine doğrudan gidebiliyor mu?

Mevcut Selenium otomasyonu, güvenlik testlerine işte burada önemli bir değer katabilir.

Güvenlik Testi, Kalite Mühendisliğinin Parçası Haline Gelir

Pek çok kurumda güvenlik testi geçmişte geliştirmenin sonlarına doğru yapılırdı.

Uygulama geliştirilir. Fonksiyonel testler tamamlanır. Ardından bir güvenlik ekibi değerlendirme yapar.

Geç keşfedilen sorunları düzeltmek pahalı olabilir.

Güvenlik odaklı otomasyon bu sürecin bir kısmını değiştirir.

Belirli güvenlik kontrolleri normal regresyon testleri sırasında sürekli olarak kontrol edilebilir.

Böylece bir güvenlik regresyonu günler hatta haftalar önce fark edilebilir.

Bu, otomatik kontrollerin uzman güvenlik değerlendirmelerinin yerini alabileceği iddiasına girmeden, güvenliği sola kaydırma (shift left) fikrini destekler.

Test Otomasyonunun Doğal Evrimi

Test otomasyonu geleneksel olarak şunu sorar:

Uygulama çalışıyor mu?

Modern kalite mühendisliğinin ise giderek daha fazla şunu sorması gerekiyor:

Uygulama doğru, güvenilir ve güvenli şekilde çalışıyor mu?

Olgun bir Selenium çerçevesi, uygulama iş akışlarını çoğu genel araçtan daha iyi anlar. Şunları bilir:

Kullanıcıların Nasıl Kimlik Doğruladığını

Önemli Uygulama Sayfalarının Nerede Olduğunu

Hangi Rollerin Bulunduğunu

İş İşlemlerinin Nasıl Yürüdüğünü

Hangi Nesnelerin Hangi Kullanıcılara Ait Olduğunu

Hangi İşlemlere İzin Verilmesi Gerektiğini

Hangi İşlemlerin Reddedilmesi Gerektiğini

İş Akışlarının Nasıl Tekrar Oluşturulacağını

Ekran Görüntüsü ve Kanıtın Nasıl Toplanacağını

Raporların Nasıl Oluşturulacağını

Bu çerçeveyi güvenlik odaklı anahtar kelimeler, oturum testleri, API kontrolleri, ağ incelemesi, tarayıcı entegrasyonu, yapılandırılmış bulgular, güvenlik referans noktaları ve regresyon kapılarıyla genişletmek, mevcut bilgiyi değerli bir güvenlik yeteneğine dönüştürebilir.

Bir siber güvenlik ekibinin yerini almaz. Almaya da çalışmamalıdır.

Ama seçilmiş güvenlik testlerini sürekli, tekrarlanabilir, ölçülebilir ve geliştirme yaşam döngüsünde çok daha erken yapılabilir hale getirebilir.

Belki de en değerli sonuç kültüreldir.

Güvenlik, yalnızca yayından önce yapılan bir şey olmaktan çıkar.

Bunun yerine güvenlik, otomasyonun her gün kontrol etmeye yardımcı olabileceği bir başka uygulama kalitesi özelliği haline gelir.

Sonuç

Güvenlik odaklı Selenium otomasyonu, geleneksel fonksiyonel test ile uzman güvenlik değerlendirmesi arasında işe yarar bir orta noktada durur.

Değeri, Selenium'un her zafiyeti bulabileceğini iddia etmesinde değildir.

Değeri; gerçek uygulama iş akışlarına sıkı sıkıya bağlı güvenlik kontrollerini sürekli denetlemesinde, kanıtı korumasında, regresyonları tespit etmesinde ve insanların dikkatini daha derin incelemeyi hak eden alanlara yönlendirmesindedir.

Şunlar göz önünde bulundurularak tasarlandığında:

Net Güvenlik Sınırları

Doğru Çalıştırma Zamanlaması

Yapılandırılmış Kanıt

Güven Düzeyleri

Yanlış Pozitif Farkındalığı

Uygun Manuel Doğrulama

güvenlik regresyon testi, mevcut bir Selenium Java otomasyon stratejisinin pratik bir uzantısı olabilir.

Amaç her Selenium otomasyon mühendisini bir sızma testi uzmanına dönüştürmek değildir.

Amaç otomatik testleri daha güvenlik odaklı hale getirmektir.

Ve uygulamalar karmaşıklaştıkça, güvenlik beklentileri artmaya devam ettikçe, bu yaklaşım modern kalite mühendisliğinin giderek daha önemli bir parçası haline gelebilir.

 
 
 

Yorumlar


bottom of page