Web Uygulama Güvenliği ve ISO 27001
Netsparker raporlama yelpazesine eklediği ISO 27001 raporu ile, tespit ettiği zafiyetleri ISO 27001 standartlarına göre sınıflandırarak kuruluşların kendi risk düzeylerini belirlemesi ve bu riskleri en aza indirerek uygulama güvenliğini artırması için rehberlik etmektedir. Bu yazımızda, ISO 27001’e göre sınıflandırmış olduğumuz bazı başlıkların detaylarına göz atacağız.
Bilgi güvenliğini sağlamak ve tehditlere karşı kontrol mekanizması oluşturmak adına hazırlanmış olan ISO 27001 Bilgi Güvenliği Yönetim sistemi, en kapsamlı uluslararası standarttır. ISO 27001, içerisinde bir uygulamanın hazırlanması, geliştirilmesi, onarımı ve çalıştırılması aşamalarında gerçekleştirilecek kontroller barındırır. Netsparker ise yeni versiyonda raporlama yelpazesine eklediği ISO 27001 raporu ile, tespit ettiği zafiyetleri ISO 27001 standartlarına göre sınıflandırarak kuruluşların kendi risk düzeylerini belirlemesi ve bu riskleri en aza indirerek uygulama güvenliğini artırması için rehberlik etmektedir. Bu yazımızda, ISO 27001’e göre sınıflandırmış olduğumuz bazı başlıkların detaylarına göz atacağız.
A.6 İç Organizasyon
ISO 27001, bilişim teknolojileri operasyonları ve uygulama geliştirme de dahil olmak üzere, kurum genelinde görevlerin ayrılması gerektiğini belirtir. Bu kontrolün amacı, herhangi bir güvenlik ihlalinin kötüye kullanımını engellemektir.
Uygulama geliştirme ve bakım süreçlerinde, sorumlulukların ayrıştırılması hem işlevsel aksamaların hem de güvenlik eksiklerinin tespit edilmesi için önemlidir. Örnek verecek olursak kodlara hakim bir yazılımcının, sistemi manipüle etmeyeceğinden ya da bankacılık sektöründeki bir yazılımcının büyük miktarda bir parayı otomatik olarak taşımak için transfer protokollerini manipüle etmeyeceğinden emin olamayız. Görevlerin ayrılması, bu gibi durumlarda olası risklere karşı bir önlem olabilir.
A.9 Erişim Kontrolleri
Kullanıcı Kaydı Oluşturulması ve Kaydın Silinmesi
Bu kontrolün amacı, sahte kimlikleri ve yetkisiz erişim risklerini azaltmaktır.
Kullanıcı kaydı oluşturulması ve kayıtların silinmesi için ayrı süreçler oluşturulmalıdır. Kayıt işlemi, bir kişi kuruluşa katıldığı zamandan başlamalıdır ve bir yetkilendirme süreci oluşturulmalıdır. Bu süreçte insan kaynakları ve IT iletişim halinde olmalıdır. Erişim izinleri verilmeden önce yeni kullanıcı kimliği önce gerekli onaylardan geçmeli ve bu erişimler kayıt olan kişinin görev ve sorumluluklarına dayanmalıdır. Yetkilendirmeler için gerekli iş akışlarını sağlayacak ve kullanıcıların kendilerinin uygulama sistemlerine erişim talep edebileceği bir portal da oluşturulabilir. Bu şekilde otomatize edilmiş bir sistem süreci hızlandıran bir çözüm sunar. Benzer şekilde aynı süreç kullanıcı kaydının silinmesi için de olmalıdır. İnsan kaynakları, bir kişi kuruluştan ayrıldığı anda IT' yi bilgilendirmelidir. Silme işleminden önce belirli bir süre için kullanıcı kimliği kaldırılmalı veya devre dışı bırakılmalıdır. Daha sonra silme süreci devam ettirilmelidir. Birçok kuruluşta sık rastlanan ortak bir risk ise uygulamalarda birden fazla yönetici kullanıcı kimliğinin bulunmasıdır. Kötüye kullanma olasılığını azaltmak için uygulamalarda yönetici kimlikleri en aza indirilmeli ve sistemler periyodik olarak kontrol edilmelidir.
Güvenli Oturum Açma Prosedürleri
ISO 27001 parolaları yönetmek için denetim ve kontroller sağlar.
Muhtemel riskleri, kullanım ve uygulama kolaylığını dikkate alan iyi tanımlanmış bir parola politikasına sahip olmak gerekir. İnternet bankacılığı uygulamaları için ciddi bir tehdit haline gelen Kimlik Avı (Phishing) saldırıları, kullanıcıları parolalarını orijinal siteye benzeyen sahte bir web sitesine göndermeleri için yönlendirerek parolaları yakalar. Bu nedenle, bu tür uygulamaların daha karmaşık parola yönetim mekanizmalarına sahip olması gerekmektedir. Kimlik doğrulama sistemleri iki faktörlü kimlik doğrulama mekanizmalarıyla güçlendirilmelidir.
Yardımcı Programların Kullanımı
Uygulamaları ve sistem verilerini yönetmek ve gidermek için kullanılan veritabanı yönetim yazılımı vb. araçlardır. Bu yardımcı programların çoğu kritik sistem kaynaklarına erişebilir. Bu nedenle de etkili saldırı araçları haline gelirler. Bir veritabanı yöneticisinin uygulama erişim kontrollerini ve denetimlerini de göz önünde bulundurmak ya da bu tür sistem araçlarının kullanımını sınırlamak gerekir.
Uygulamanın Kaynak Kodu İçin Erişim Kontrolü
Bu kontrolün amacı, yetkisiz erişim yoluyla zararlı bir yazılımın uygulamalara girişini engellemektir.
Kaynak kodu merkezi olarak saklanmalıdır. Bu bağlamda kaynak kodu, tasarım belgeleri, fonksiyonel özellikler ve diğer yazılım geliştirme yaşam döngüsü (Software Development Life Cycle (SDLC)) belgelerini de içerir. Uygulanan sıkı erişim kontrol süreçleri ile merkezi bir yönetim aracı kullanarak kod check-in ve check-out işlemleri resmi bir yetkilendirme sürecinden geçer ve kod erişimi için denetim günlükleri kaydı tutulur.
A.12 Operasyonel Güvenlik
Geliştirme, Test ve Operasyonel Ortamların Ayrılması
Bu kontrolün amacı, geliştirme, test ve operasyon ortamlarının ayrılarak, production ortamına yetkisiz erişimi engellemektir.
Kodun production ortamına aktarılması için onay alındıktan sonra kod kontrolü için bir süreç tanımlanmalıdır. Geliştirme, test ve operasyonel ortamların ayrılması, production ortamına yetkisiz erişimleri engellemek adına önemlidir. Test ortamları da geliştirme ortamından ayrılmalı ve production ortamını olabildiğince yakından takip etmelidir. Test ortamından doğru bir şekilde çıkarılamayan yazılımlar, hizmet kesintilerine neden olabilir. Production ortamındaki sistemleri doğrudan test etmek, bozulma riskini artırır.
Yönetici Erişim Kayıtları
Bu kontrolün amacı, uygulamalar için izleme kontrollerini oluşturmaktadır. Buraya kadar incelediğimiz çoğu kontrol, korunmaya odaklanmışken, bu kontrol tespit etmeye odaklanıyor.
İzleme ve denetim için denetim günlüklerinin etkinleştirilmesi gerekir ve periyodik olarak gözden geçirilebilir. Günlüklerinin içerikleri ise şu şekilde olmalıdır;
• Hem başarılı hem de başarısız girişler, kullanıcı kimliği, olayın adı ve açıklaması, kullanıcının ve uygulama sunucusunun IP adresi, tarih, saat ve erişilen nesne,
• Yönetici hesaplarının kullanımı, dosyalardaki izinlerdeki değişiklikler, yetki değişiklikleri, uygulama güvenlik ayarlarında yapılan değişiklikler ve nesnelerin oluşturulması / silinmesi
• Hata günlükleri, hata kimliği, olay açıklaması, tarih ve saat, geçerliyse kullanıcı kimliği ve uygulama sunucusu IP adresi / adı yakalanmalıdır.
Günlüklerin de bir saldırgan tarafından manipüle edilebilme ihtimaline karşılık erişim güvenliklerinin sağlanması önemlidir. Merkezi bir günlük sunucusunda tutulup yalnızca gerekli kişilerin erişmesine izin vermek gerekir. Günlüklerin dijital olarak imzalanması da daha sonra günlüklerin bütünlüğünü doğrulamak için iyi bir yöntemdir.
A.13 İletişim Güvenliği
Ağların Ayrıştırılması
Bu kontrol, ağlar arasında kaynak paylaşımı nedeniyle operasyonel etkileri sınırlamak için yapılır.
İlk aşamada pratik olarak bu uygulama maliyet açısından kuruluşların tasarrufu için etkin bir çözüm olmayabilir. Bir donanım, tasarruf açısından birçok işlemde kullanılmak istenebilir. Fakat daha sonra uygulamanın farklı bileşenleri uyumlu olmayabilir ve performans sorunları ortaya çıkabilir. Mümkün olduğunca, kritik uygulamalar için kaynak paylaşımı sınırlandırılmalıdır. Bunun için farklı çözümler de düşünülebilir, uygulamaların aynı donanım içindeki iki mantıksal alanda çalıştırılması, kapasite gereksinimleri karşılandığı sürece iyi bir çözüm olabilir.
Ağların ayrıştırılmasının ana amacı sunucuları mantıksal ağ bölümlerine ayırarak segmentler arasındaki erişim denetimlerini yapabilmektir. Segmentler sunucuların kritikliğine, erişim gereksinimlerine ve güven düzeylerine bağlı olarak oluşturulabilir. Böylece, belirli bir segmentte kesinti olsa bile, kritik sunuculara sahip bölümlerin izole edilmesini ve etkilenmemesini sağlayacaktır.
A.14 Sistem, Geliştirme ve Bakım
Bilgi Güvenliği Gereksinimleri, Analizi ve Özellikleri
ISO 27001, yazılım geliştirme döngüsü sürecinde öncelikle güvenliğin oluşturulması gerektiğini vurgular. Uygulamaya geliştirme sürecinin erken aşamalarında entegre edilen güvenlik özellikleri daha sonra bu özellikleri eklemek için harcanacak maliyeti önlemiş olur.
Uygulama tasarım aşamasında iken güvenlik özelliklerini belirlemek için gereksinimlerin listelenmesi gerekir. Tasarım ve gereksinimlerin belirlenmesinden sonraki süreci, bu özelliklerin geliştirilmesi ve test edilmesi takip eder. Bu gereksinimlerin doğruluğunun onaylanmış veya değerlendirilmiş olması gerekir.
Uygulama Hizmetleri İşlemlerini Koruma
Bu kontrolün amacı, e-ticaret işlemlerini de kapsayan ağlar arası veri güvenliğini sağlamaktır.
E-ticaret siteleri için işlemleri ve bilgileri korumak ve güvenli elektronik ödeme mekanizmalarına sahip olmak için bazı kontrollerin yapılması gereklidir. Bankalar üzerinden örnek verecek olursak yüksek para transferleri için dijital imza kullanımı tehditleri azaltmak için kullanılması gereken bir yöntemdir. Kurumların uyması gereken yasal gereklilikleri göz önünde bulundurursak CA tarafından imzalanmış dijital imzalar gerekebilir. Gizliliğin sağlanması için tüm iletişimin TLS 1.1/1.2 ile şifrelemesi gerekir. HTTPS üzerinden kurulan tüm iletişimler ise HTTP (Strict Transport Security (HSTS) ‘i desteklemelidir, böylece web sunucularının yalnızca TLS bağlantılarını kabul etmesi sağlanır.
Müşteri verilerinin gizliliği de dikkat edilmesi gereken önemli bir noktadır. Müşteriler ve müşteri işlemleriyle ilgili veriler, ağda, uygulamada ve fiziksel katmanlarda güvenli bir biçime saklanmalıdır. E-ticaret siteleri, toplanan ve saklanan bilgilerin türünü de dikkate almalıdır. Müşterilere belirli işlemler için erişim yetkisi sağlayan kredi kartı numaraları, sosyal güvenlik kimlik numaraları, doğum tarihi gibi verileri saklamamalıdır. Bu veriler, müşterinin izni olmaksızın ilave veya ek işlemlerde kullanılmamalıdır. Siteler ayrıca iş şartlarını, gizlilik politikalarını ve güvenlik kontrollerini proaktif olarak açıklamalıdır.
Sistem Değişikliği Kontrol Prosedürleri
ISO 27001, uygulamaların altyapısına bağlı olarak, yapılan değişikliklerin sisteme yeni riskler getirip getirmediğinin kontrolünü sağlar.
Uygulamalarda yapılan sistematik değişikliklerin bazı aksaklıklara ve kesintilere yol açmaması için doğrulanması ve kontrol edilmesi gerekir. Bu aksaklıkların doğrulamasının ve kontrolünün yapılmaması, daha sonra yapılacak denetimler esnasında sistemde çıkan ve tanımlanamayan bazı güvenlik açıklarına yol açabilir. Tehlikeleri ortadan kaldırmak adına yapılan değişimler için bir değişim yönetimi süreci başlatarak analizlerin yapılması ve doğrulandıktan sonra uygulamaya yayınlanması gereklidir. Sistemde yapılan yeni bir değişiklik başka noktalarda uygulamanın doğru bir şekilde çalışmasını engelleyebilir ve kullanıcılar için önemli güvenlik tehditleri doğabilir.
Platform Değişiklikleri Değerlendirmeleri
Bu kontrolün amacı, işletim sistemi seviyesinde yapılan değişikliklerden sonra uygulamaların güvenliğini ölçmektir.
Bazı uygulamalar, işletim sisteminde bulunan dizin izinlerini ve özelliklerini kullanır. Bu yüzden uygulamanın güvenliği, işletim sistemi yapılandırmasındaki veya binary dosyalardaki değişikliklerden etkilenebilir. İşletim sistemi güncellemeleri, binary “.dll” dosyalarını da değiştirebilir ve işlevselliğinin bozulmasına yol açabilir. İşletim sistemi seviyesindeki değişikliklerin kontrolü ve doğrulanması için denetimlerin yapılıp değişikliklerin gözden geçirilmesi gerekir.
Yazılım Paketlerindeki Değişiklikler ile İlgili Kısıtlamalar
Bir yazılımda çok fazla değişiklik yapılması hatalara yol açabilir ve güvenliğini etkileyebilir. Bu kontrolün amacı yazılım değişikliklerini en aza indirmektir.
Yazılım üzerinde sadece gerekli değişiklikler yapılmalı ve tüm değişiklikler sıkı bir şekilde kontrol edilmelidir. Yazılımın özelleştirilmesinden kaynaklanabilecek riskler ve güvenlik etkilerinin de göz önünde bulundurulması gerekir.
Güvenli Sistem Mühendisliği İlkeleri
Belirlenen prosedürlere göre güvenli bir sistemde değişiklikler yapılırken, veri girişi ve çıktısının izlenmesi gerekir. Web uygulamalarında ortaya çıkan risklerle birlikte girilen verilerin doğrulanması kritik bir önem kazandı. ISO 27001' deki bu kontrol ise bu tür riskleri azaltmayı hedeflemektedir.
Veri doğrulama sisteminin zayıf olması ile karşımıza çıkabilecek saldırı türleri arasında SQL Injection ve XSS (Cross-site scripting) saldırılarını örnek olarak verebiliriz. Doğrulamanın mümkün olduğunca otomatik hale getirilmesi yapılacak kontrolleri de kolaylaştırmaktadır. Veri doğrulama yaklaşımının, beyaz listeye alınmış olan, bilinen ve gerekli karakterlere izin vererek yapılıyor olması güvenlik açısından daha kontrollü bir sistem oluşturur.
Sistem Kabul Testi
ISO 27001, kullanılabilirlik, performans ve güvenlik ile ilgili riskleri en aza indirmek için uygulamaları production ortamına almadan önce yapılması gereken kontrolleri sağlar.
Uygulama belli standartlar doğrultusunda doğru ve sıkılaştırılmış bir şekilde yapılandırılmalı ve production ortamına girmeden önce kapasite ve performans gereksinimleri dikkate alınarak test ortamında test edilmelidir. Test ve doğrulama işleminden sonra onaylanmalıdır. Ayrıca sertifikaların alındığından emin olunmalıdır. Sistem kabul testi kontrol listeleri oluşturularak bir planın hazırlanması ve süreç prosedürleri belgelenmelidir. Sistem kabul testi, sistemin kullanımını etkileyebilecek tüm potansiyel riskleri inceleyerek doğrulayacak kapsamda olmalıdır.
Test Verilerinin Korunması
Test verileri, production ortamı verilerinin gerçekliğine yakın olacak şekilde sistemi taklit etmesi için oluşturulmuş verilerdir. Bu kontrolün amacı, test verilerini korumak ve bu verilerin test ortamında bozulmamasını sağlamaktır.
Yazılımı test etme aşamasında kullanılması gereken production verileri, kullanıldıktan sonra derhal temizlenmeli veya karıştırılmalıdır (scrubbing & scrambling) . Müşterinin ismi, doğum tarihi, e-posta kimlikleri, kredi kartı numaraları gibi kişisel verileri, production'a geçmeden önce değiştirilmediği takdirde müşterilerin hassas verilerini içeren production verileri sızar ve büyük cezalarla sonuçlanan veri ihlallerine yol açar. Production verisinin test aşamasında kullanılması gerektiği durumlarda yönetimden izin alınmalı ve test tamamlandıktan sonra, test verilerini silmek için test ortamı denetlenmelidir.
Sonuç
ISO 27001 Ek A ile yapılan kontroller sistemlerin tanımlanan teknik standartlara uygunluğunu ölçmektedir. Yukarıda ayrıntılarına değindiğimiz ve uygulama güvenliği açısından ele aldığımız kontrollerin doğru bir şekilde uygulanması ve planlı bir şekilde denetlenmesi, geliştirilen uygulamanın risklere ve tehditlere karşı savunmasız kalması ihtimalini güçleştirmiş olur.
Netsparker 5.2.0.22027 versiyonundan itibaren zafiyet ayrıntılarında ISO 27001 klasifikasyonuna yer vermektedir. Kullanıcılar dilerse ISO 27001 için resmi olmayan fakat güvenlik risk düzeylerini değerlendirebilecekleri bir rapor çıktısı alabilirler.