Güvenli Kod Geliştirme

Slides:



Advertisements
Benzer bir sunumlar
Kullanıcılar için EGEE ve TR-Grid araçları
Advertisements

.NET FRAMEWORK -MASAÜSTÜ VE SUNUCU YAZILIMLARI
This project is produce with the financial assistance of EU
Yazılım Geliştirme ve Java
IIS 6.0. Giriş  Geçtiğimiz yıllarda, Microsoft güvenlik açıkları nedeniyle IIS 4/5 üstünden bir çok saldırıya uğradı.  Bu sebepten Microsoft’un geliştirdiği.
Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP.
.NET FRAMEWORK.
Eğitim Programı Kurulum Aşamaları E. Savaş Başcı ASO 1. ORGANİZE SANAYİ BÖLGESİ AVRUPA BİLGİSAYAR YERKİNLİĞİ SERTİFİKASI EĞİTİM PROJESİ (OBİYEP)
Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the Creative Commons Attribution-ShareAlike.
Web Hacking Yöntemleri
Web Programlama Kursu Bu kurs ne değildir? Neyi amaç edinmiştir?
WEB SERVİS TEKNİK SUNUM
04/02/10 Django Web Uygulamaları Geliştirmede Çağdaş bir Yaklaşım.
© 2011 Adobe Systems Incorporated. Cep Telefonu Değeri Belirlemek için Mobil Uygulama Sabri Dündar / Volkan Altuntaş Celal Bayar Üniversitesi.
Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP.
INTERNET TABANLI HASTA KAYDI PAYLAŞIMI VE TELEKONSÜLTASYON PLATFORMU
Microsoft Danışman Öğrenci
B İ LG İ GÜVENL İĞİ NDE KULLANICI SORUMLULU Ğ U. Sistemi içeriden yani kullanıcıdan gelebilecek hatalara ve zararlara kar ş ı koruyan bir mekanizma yoktur.
Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the Creative Commons Attribution-ShareAlike.
BELGELEME Ian Sommerville, “Software Documentation”,
Uygulamalı Örneklem Seçimi
BTP 108 BİLGİSAYAR AĞ SİSTEMLERİ AĞ KAVRAMI Birden çok bilgisayarın birbirine bağlı olarak kullanılmasıyla oluşturulan çalışma biçimine bilgisayar ağı.
PHP İle GÜVENLİ KODLAMA
Öğretmen Yetkinlikleri
Microsoft Gelişim Atölyesi Kampı 2 Şubat 2010 – Microsoft Türkiye İstanbul Ofisi Mesut MERT Teknoloji Danışmanı Microsoft Corporation.
ÖĞRENME NESNESİ Sibel SOMYÜREK.  Çeşitli öğrenme ortamlarında tekrar kullanılabilen küçük parçalara bölünmüş olan e-içeriklere öğrenme nesnesi denir.
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP.
Bora GÜRSEL CBÜ BAUM Proje Yöneticisi
Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP.
Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP.
EasyChair KULLANIM KILAVUZU Ulusal Meslek Yüksekokulları Çalıştayı ve Öğrenci Sempozyumu Haziran 2012.
Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP.
Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP.
WEB TEKNOLOJİLERİ GİRİŞ
109/06/08 VIVA Eğitim İlişkileri Yönetimi. 209/06/08 Ajanda Hedefler & Gerçekleşenler Proje Yönetimi AR - GE Sistem Testler Sonuç Demo Sorular & Yorumlar.
Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP.
08 Mart 2009 Buluşması.  Nerdeyiz? ◦ Varolan ve Yeni Projeler/Belgeler ◦ Katılım, E-posta Listesi ve Web Sitesi ◦ Buluşmalar/Etkinliklier/Sunumlar 
Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP.
Uygulamalı Örneklem Seçimi
C#.NET 5.0 C# .NET 5.0 Eğitimleri Volkan KANAT.
Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP.
CONTENT MANAGEMENT SYSTEM (İÇERİK YÖNETİM SİSTEMLERİ)
Açık Ders Malzemelerinde (ADM) Teknik Alt Yapı R. Orçun Madran
Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP.
Programs of the Intel Education Initiative are funded by the Intel Foundation and Intel Corporation. Copyright © 2007 Intel Corporation. All rights reserved.
Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP.
Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP.
Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP.
Chapter 11: Exception Handling
Kurumsal İçerik Yönetimi Kapsamında Bilgi Güvenliği
26 Eylül 2009 Buluşması.  Durum Analizi ◦ Projeler, Belgeler ◦ Katılım, E-posta Listesi, Web Sitesi, E-Dergi ◦ Buluşmalar  Genel OWASP ajandası ve durumu.
OWASP-TR & WGT AJANDA 18 EK İ M 2008 Buluşması. İ çerik  Nerdeyiz?  Varolan ve yeni Projeler  Katılım, E-posta Listesi ve Web Sitesi  Uygulama Güvenli.
ÖĞR. GRV. Ş.ENGIN ŞAHİN BİLGİ VE İLETİŞİM TEKNOLOJİSİ.
Erman Yukselturk1 PHP NEDİR? Scripting / Progralama dilidir (C’ye benzer) C ++ ortamında geliştirilmiştir Bedava / Açık Kod Hızlı, açık, dengeli (stable),
ALİ FINDIK Galatasaray Ünİversİtesİ 2015
Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP.
Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP.
Erdemir Grubu İç Denetim Sistemi 9 Mayıs 2015.
Yazılım Geliştirme Projesi
Modül 1: Giriş. Genel Bakış Temel.NET kavramları Geliştirme ortamında gezinti Bir C# projesi oluştur Use Visual Studio.NET Veriye eriş Hata ayıkla ve.
Dosya şifreleme Ftp/Telnet Özelliği Çoklu Pano Desteği Sadece Okuma Modu Otomatik Kod Tamamlama.
SQL Server 2008 ile Verileriniz Daha Güvenli Selçuk UZUN Yazılım Geliştirme Teknolojileri Yöneticisii Microsoft Türkiye.
E-YEDEKLEMELİ SAKLAMA. E-Yedeklemeli Saklama E-Faturalarınız ve e-arşiv faturalarınız EDM e-fatura sistemine kaydolmanız ile beraber sistem üzerinden.
Doküman Yönetim Sistemi (DYS) Kurulumu ve Ayarları
DOĞRULAMA KONTROLLERİ
BOZOK ÜNİVERSİTESİ Merkezi Kimlik Doğrulama Sistemi
Mobil uygulama geliştirme pelin yıldırım Fatma bozyiğit
Mustafa COŞAR- Murat DOĞAN- İsmail ARIK Hitit Üniversitesi
Kütüphan-e Türkiye Projesi BİT Yol Haritası
Sunum transkripti:

Güvenli Kod Geliştirme Bünyamin DEMİR bunyamindemir@gmail.com www.owasp.org/index.php/Turkey www.webguvenligi.org 31 Mart 2012

Konuşmacılar Bünyamin Demir Symturk, Güvenlik Danışmanı OWASP/Türkiye Chapter Lead

Başarılı saldırıların %80’i uygulama seviyesini hedef almaktadır. -Gartner Otomatik araçlarla test ettiğimiz 12186 web uygulamasının %86’sı zor durumda. -WebAppSec Konsorsiyumu

Yazılım Güvenliği - Kötü Yaklaşımlar Personelimize güvenmeyeceğiz de kime güveneceğiz? (Uygulamacı bakış açısı) Yapılandırma dosyaları ve veritabanlarına güven (Uygulamacı Yaklaşımı) Tek bir metod ile girdi denetimi Firewall’lar ile sistemlerimizi koruruz “Saldırganları uzak tutalım” Kriptografi kullanımı yazılımın güvenliğini sağlar “Tüm verilerimizi şifreli saklıyoruz” Yazılım ürünlerinin bittiğinde test edilmesi Saldır ve yamala (penetrate and patch)‏ Güvenlik özellikleri yazılımlarımızı güvenli kılar “Biz SSL kullanıyoruz” “Biz strong-authentication kullanıyoruz” Güvenlik ortamlar (sunucular) yazılımları güvenli kılmaz. “Biz uygulamamızı izole ortamda tutuyoruz.”

En İyi Yaklaşım Modeli Bilgi güvenliği konusu bir süreç gibi algılanmalı ve gerekli aktiviteler yazılım süreçlerinin her basamağına entegre edilmelidir. Güvenlik açıklarının en etkin çözüm yöntemi girdi ve/veya çıktı denetimidir. Blacklisting her zaman bertaraf edilmeye mahkumdur. Whitelisting en mükemmel çözümdür, ömür boyu etkilidir. Konuya odaklı güvenlik yoktur, mutlak güvenlik vardır Herkes kendi alanından sorumludur Herkes üstüne düşen görevi yapmalı Kimse kimseye güvenmemelidir

Geliştirme Sürecinde Güvenlik Tasarım Prensiplerinin Uygulanması Güvenlik Kalıplarının Uygulanması Güvenlik Gereksinimleri Tespiti Öğren ve İyileştir Güvenlik Denetimi Tehdit Analizi Dış İnceleme İhtiyaç Analizi Tasarımın Tamamlanması Test Planlarının Tamamlanması Kodlamanın Tamamlanması Sunuş Sunuş Sonrası Yukarıdaki şemada tipik bir geliştirme süreci ve bu süreç bağlamında gerçekleştirilebilecek güvenlik aktiviteleri görülmektedir. Sayfanın düşey eksende ortasında soldan sağa doğru tipik bir geliştirme sürecinde yer alan aktiviteler verilmiştir. İhtiyaç analizi, tasarım, test planlaması, kodlama, sunuş ve sunuş sonrası aktiviteleri bu sırada gösterilmiştir. Geliştirme sürecini gösteren çizginin altında ve üstünde ise güvenlik ile ilgili aktiviteler yer almaktadır. İhtiyaç analizi aşamasında güvenlik gereksinimlerinin tespit edilmesi, geliştirme ekibinin güvenlik konusunda temel eğitim almış olmasının sağlanması, benzer uygulama alanlarında farklı ekiplerin geliştirdikleri yazılımlardaki geçmiş zafiyetlerinin incelenmesi, güvenli tasarım prensiplerinin ve tasarım güvenlik kalıplarının uygulanması ve yazılımın tehdit modellemesinden geçirilmesi gibi çeşitli teknikler ihtiyaç analizi ve tasarım aşamasında uygulanabilmektedir. Geliştirme aşamasından hemen önce tasarımın bağımsız bir kuruluş tarafından bağımsız incelemeye tabi tutulması, testler kapsamında güvenlik testlerinin de planlanması ve uygulanması, güvenli programlama tekniklerinin uygulanması, kaynak kodların kontrol altında tutulması ve analiz araçları ile güvenlik zafiyetlerine karşı sınanması ve penetrasyon testleri sunuş öncesinde uygulanabilecek tekniklerdir. Yazılım projelerinde bu aktiviteler değerlendirmeli ve geliştirme sürecine entegre edilmesi mümkün olanlarının sürece dahil edilmesi sağlanmalıdır. Destek ve Olay Müdahalesi Dış İnceleme Geliştirici Eğitimi Güvenli Programlama Teknikleri Kaynak kod incelemesi Statik kod analiz araçları Güvenlik Testleri Geliştirilmesi Geçmiş Zafiyetlerin İncelenmesi

OpenSAMM Yazılım geliştirmenin tüm üst düzey konularını adresler Çok geneldir ve her ekibe uyarlanabilir Yönetim,Yapım,Doğrulama,Kurulum

Web Uygulama Güvenliği Kontrol Listesi 2012 Web Uygulama Güvenliği Kontrol Listesi, web uygulamalarında bilgi güvenliği açısından gerçekleştirilmesi, aktif olması gereken kontrolleri içeren ve denetçi bakış açısıyla hazırlanmış olan bir dokümantasyon projesidir. Dokümanın genel yapısı; her kontrol için bir Kategori, Sorumlu, ASVS kategorisi ve Risk Seviyesi şeklinde oluşturulmuştur. code.google.com/p/wasclist

Assurance World Risk World accountability verification architecture policy visibility Assurance World patterns metrics threats exploits controls assurance completeness pentest impact Risk World flaws risks attacks scanning vulnerabilities

Neden Hata Yapıyoruz? - Bir Proje Hikayesi Müşteri Proje Yöneticisi Analist Programcı Satıcı Dokümantasyon Kurulum Ücretlendirme Destek Olması Gereken 10

Zafiyetler ve Güvenlik Kontrolleri Yapılmayan kontroller (%35) Zayıf kontroller (%30) Uygulamanın güvenlik kontrolleri var iken, devreye alınmayanlar (%20) Yanlış kullanılan veya yapılandırılan kontroller (%15)

The OWASP Enterprise Security API ( ESAPI ) OWASP ESAPI – Misyon Güçlü, güvenli ve basit güvenlik kontrollerinin her uygulama geliştiricisi ve her uygulama platformu için sağlanması.

ESAPI Nedir? OWASP Topluluğu tarafından geliştirilen bir projedir. Uygulama geliştiricilerinin, güvenlik problemlerinin giderilmesi için kullanılabilecekleri yardımcı kütüphanedir. Uygulamaların güvenlik operasyonlarını sağlayabilmesi için bir arada sunulmuş sınıf ailesidir. JAVA EE, .NET, Javascript, ASP, PHP, Python gibi için farklı sürümleri vardır. Sadece JAVA EE uygulamalarında olmak üzere WAF (Web Uygulama Güvenlik Duvarı) özelliği vardır. ESAPI’nin tüm sürümleri BSD lisansı altında dağıtılmaktadır.

Uygulama Geliştirici İhtitaçları ve ESAPI Custom Application Enterprise Security API Authenticator User AccessController AccessReferenceMap Validator Encoder HTTPUtilities Encryptor EncryptedProperties Randomizer Exception Handling Logger IntrusionDetector SecurityConfiguration 14

Girdi Denetimi Neden Zordur? <  < &#X03C \U003C < &#X003C < &#X0003C CSS Escape < &#X00003C \3c < &#X000003C \03c   &#X3c < \003c Percent Encoding &#X03c < \0003c %3c &#X003c < \00003c %3C &#X0003c < \3C &#X00003c < \03C HTML Entity Encoding &#X000003c < \003C &#60 < &lt \0003C &#060 < &lT \00003C &#0060 < &Lt &#00060 < &LT Overlong UTF-8 &#000060 < < %c0%bc &#0000060 < &lT; %e0%80%bc < &#x3C &Lt; %f0%80%80%bc < &#x03C &LT; %f8%80%80%80%bc < &#x003C %fc%80%80%80%80 %bc < &#x0003C < &#x00003C JavaScript Escape US-ASCII < &#x000003C \< ¼ &#x3c < \x3c &#x03c < \X3c UTF-7 &#x003c < \u003c +ADw- &#x0003c < \U003c &#x00003c < \x3C Punycode &#x000003c < \X3C <- < &#X3C \u003C Simple Double Encoding < --> < --> lt&#59 (double entity) < --> %3c --> %253c (double percent) etc...   Double Encoding with Multiple Schemes < --> < --> %26lt%3b (first entity, then percent) < --> %26 --> 26 (first percent, then entity) Simple Nested Escaping < --> %3c --> %%33%63 (nested encode percent both nibbles) < --> %3c --> %%33c (nested encode first nibble percent) < --> %3c --> %3%63 (nested encode second nibble percent) < --> < --> &&108;t; (nested encode l with entity) Nested Escaping with Multiple Schemes < --> < --> &%6ct; (nested encode l with percent) < --> %3c --> %3c (nested encode 3 with entity) 1,677,721,600,000,000 ways to encode <script>

or ? Sık Yaptığımız Hata – Tekerleğin Keşfi XSS Zafiyeti - Test <script>alert(document.cookie)</script> <script>alert(document.cookie)</script> <script>alert(document.cookie)</script> or ? 17

XSS Zafiyeti –Çözüm Encodingden geçirilen kullanıcı girdisi (Imagine this .jsp) <Table> <TR><TD> Full Name: </TD> <TD> <%=user.getFirstName()%> <%=user.getLastName()%> Display Name: <%=user.getDisplayName()%> <Table> <TR><TD> Full Name: </TD> <TD> <%=ESAPI.encodeForHTML( user.getFirstName())%> <%= ESAPI.encodeForHTML( user.getLastName())%> Display Name: <%= ESAPI.encodeForHTML( user.getDisplayName())%> Denetlenmemiş kullanıcı girdisi kullanımı

XSS Zafiyeti Önlemleri – Çıktı Denetimi Kural #1: HTML Element Content ESAPI.encoder.encodeForHTML(input) Kural #2: HTML Common Attributes ESAPI.encoder.encodeForHTMLAttribute(input) Kural #3: HTML Javascript Data Values ESAPI.encoder.encodeForJavaScript(input) Kural #4: HTML Style Property Values ESAPI.encoder.encodeForCSS(input) Kural #5: HTML URL Attributes ESAPI.encoder.encodeForURL(input)

Oturum anahtarının saldırgan tarafından kullanıcıya kabul ettirilmesi Oturum Sabitleme Zafiyeti (Session Fixation) Oturum anahtarının saldırgan tarafından kullanıcıya kabul ettirilmesi Kullanıcının başarılı oturum sağlaması sonucu oturum (session) anahtarının değiştirilmesi. ESAPI.httpUtilities().changeSessionIdentifier()

ESAPI - Input Validation Codecs: HTML Entity Encoding Percent Encoding JavaScript Encoding VBScript Encoding CSS Encoding MySQL Encoding Oracle Encoding LDAP Encoding … Validate: getValidDate() getValidCreditCard() getValidSafeHTML() getValidInput() getValidNumber() getValidFileName() getValidRedirect() safeReadLine() … Decoding Engine Validation Engine Any Encoding Any Interpreter User Controller Business Functions Data Layer Backend PresentationLayer

ESAPI – Output Encoding User Controller Business Functions Data Layer Backend PresentationLayer Encode: setCharacterEncoding() encodeForHTML() encodeForHTMLAttribute() encodeForJavaScript() encodeForVBScript() encodeForCSS() encodeForURL() encodeForXML() encodeForLDAP() encodeForDN() … Encoding Engine

Dikkat Edilmesi Gereken Java API’ları System.out.println() -> Logger.* Throwable.printStackTrace() -> Logger.* Runtime.exec() -> Executor.safeExec() Reader.readLine() -> Validator.safeReadLine() Session.getId() -> Randomizer.getRandomString() (better not to use at all) ServletRequest.getUserPrincipal() -> Authenticator.getCurrentUser() ServletRequest.isUserInRole() -> AccessController.isAuthorized*() Session.invalidate() -> Authenticator.logout() Math.Random.* -> Randomizer.* File.createTempFile() -> Randomizer.getRandomFilename() ServletResponse.setContentType() -> HTTPUtilities.setContentType() ServletResponse.sendRedirect() -> HTTPUtilities.sendSafeRedirect() RequestDispatcher.forward() -> HTTPUtilities.sendSafeForward() ServletResponse.addHeader() -> HTTPUtilities.addSafeHeader() ServletResponse.addCookie() -> HTTPUtilities.addSafeCookie() ServletRequest.isSecure() -> HTTPUtilties.isSecureChannel() Properties.* -> EncryptedProperties.* ServletContext.log() -> Logger.* java.security and javax.crypto -> Encryptor.* java.net.URLEncoder/Decoder -> Encoder.encodeForURL/decodeForURL java.sql.Statement.execute -> PreparedStatement.execute ServletResponse.encodeURL -> HTTPUtilities.safeEncodeURL (better not to use at all) ServletResponse.encodeRedirectURL -> HTTPUtilities.safeEncodeRedirectURL (better not to use at all)

ESAPI Swingset

ESAPI Book! http://www.owasp.org/images/7/79/ESAPI_Book.pdf

ESAPI - Linkler OWASP Home Page http://www.owasp.org ESAPI Project Page http://www.esapi.org ESAPI-Users Mailing List https://lists.owasp.org/mailman/listinfo/esapi-users ESAPI-Dev Mailing List https://lists.owasp.org/mailman/listinfo/esapi-dev

Duyuru: Güvenli Android Uygulama Geliştirme İpuçları Androd geliştiricilerin kullanabileceği bir dökümandır. Android uygulama geliştirme esnasında ve uygulamanın kullanımında, uygulama geliştirici tarafından sağlanması gereken güvenlik ipuçlarını barındırır. http://www.webguvenligi.org/docs/Guvenli_Android_Gelistirme_Ipuclari.pdf

google: owasp turkey mail list Teşekkürler! www.webguvenligi.org www.owasp.org E-posta listesine kayıt olmak için google: owasp turkey mail list