[owasp-tr uygulama güvenliği günü 2016] emre kısa - http güvenlik başlıkları ve...

34
OWASP Türkiye Güvenlik Buluşmaları 2016

Upload: owasp-turkiye

Post on 14-Apr-2017

282 views

Category:

Engineering


5 download

TRANSCRIPT

Page 1: [OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ve Türkiyedeki Sitelerin Analizi

OWASP TürkiyeGüvenlik Buluşmaları2016

Page 2: [OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ve Türkiyedeki Sitelerin Analizi

HTTP Güvenlik Başlıkları ve

Türkiye’deki Sitelerin Analizi

Page 3: [OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ve Türkiyedeki Sitelerin Analizi

||

İçerik 01 Hakkımda

02 Web UygulamalarıHTTP nedir

Nasıl çalışır

Same-origin politikası

03 Kısaca OWASP Top 10

04 HTTP Security HeadersCSP 1.0 – 2.0 & Demo X-XSS Protection

X-Frame-Options & Demo Strict-Transport-Security

Set-Cookie X-Content-Type-Options

X-Download-Options X-Permitted-Cross-Domain-Policies

Public-Key-Pins

05 Türkiye’de Durum – Alexa TR Top 500 İncelemesi

06 Daha Fazlası İçin

07 Sorular HTTP Security Headers I 3

Page 4: [OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ve Türkiyedeki Sitelerin Analizi

||

ÖzgeçmişK. Emre KISA

01

Http Security Headers I 4

Kıdemli Uygulama Güvenliği Mimarı

Türk Telekom

2012 - ODTÜ

2008 – Çankaya Üniversitesi

Page 5: [OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ve Türkiyedeki Sitelerin Analizi

||

Web Uygulamaları

02

HTTP Nedir?

Http Security Headers I 5

Page 6: [OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ve Türkiyedeki Sitelerin Analizi

|

HTTP bir kaynaktan dağıtılan ve ortak kullanıma açık olan hiperortam

(hypermedia) bilgi sistemleri için uygulama seviyesinde bir iletişim

protokolüdür.

(H)yper (T)ext (T)ransfer (P)rotocol

Http Security Headers I 6

Page 7: [OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ve Türkiyedeki Sitelerin Analizi

|

HTTP (Cont.)

Http Security Headers I 7

HTTP

Request

HTTP

Processing

HTTP

Response

Page 8: [OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ve Türkiyedeki Sitelerin Analizi

|

• Farklı kaynaklar birbirinden izole şekilde çalıştırılmalıdır

• Same origin : Aynı protokol + aynı host + aynı port

Same-Origin Politikası

• Same-Origin

Page 9: [OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ve Türkiyedeki Sitelerin Analizi

||

OWASP TOP 10

03

Http Security Headers I 9

Page 10: [OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ve Türkiyedeki Sitelerin Analizi

|

OWASP Top 10

Http Security Headers I 10

Page 11: [OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ve Türkiyedeki Sitelerin Analizi

|| Http Security Headers I 11

HTTP Security Headers

04

Page 12: [OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ve Türkiyedeki Sitelerin Analizi

|

• Browser tarafından hangi adresten, hangi tipte kaynağın yüklenip,

çalıştırılabileceğini belirlememizi sağlayan bir W3C standardıdır.

Content-Security-Policy 1.0

Http Security Headers I 12

Content-Security-Policy : W3C standartı olarak belirlenen başlıktır,

• Chrome versiyon 25+,

• Firefox versiyon 23+,

• Opera versiyon 19+

• Safari 7+

• Microsoft Edge 12 build 10240+ tarafından desteklenmektedir.

X-Content-Security-Policy :

• Internet Explorer 10+,

• Firefox 4+ sonrası tarafından desteklenmektedir.

X-WebKit-CSP :

• Chrome versiyon 14-25,

• Safari 6+ tarafından desteklenmektedir.

Page 13: [OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ve Türkiyedeki Sitelerin Analizi

|

• Desteklenen direktifler;

– default-src : Kaynağın tipi belirtilmedikçe, varsayılan olarak kullanılacak direktiftir. (fallback),

– script-src : Hangi script’in çalıştırılabileceğini belirtir,

– object-src : Pluginlerin nereden yüklenebileceğini belirtir, (<object>, <embed> ya da <applet>)

– style-src : CSS dosyalarının nereden yüklenebileceğini belirtir,

– img-src : İmaj dosyalarının nereden yüklenebileceğini belirtir,

– media-src : Video ve ses dosyalarının nereden yüklenebileceğini belirtir, (<audio>, <video>)

– font-src : Font dosyalarının nereden yüklenebileceğini belirtir,

– connect-src : Scriptler aracılığıyla hangi URI’lerin yüklenebileceğini belirtir,

– form-action : Hangi URI’lerin form elementlerinde action olarak tanımlanabileceğini belirtir,

– sandbox : Kaynağa web tarayıcı tarafından uygulanması istenen HTML sandbox politikası belirtir, (same-origin politikası

uygulanması, pop-up, plugin, script engellenmesi)

– plugin-types : çalışıtırılabilir plug-in tiplerini belirler,

– reflected-xss : Kullanıcının web tarayıcısındaki kendi XSS korumasını aktive etmesini isteyebilir, daha sonra göreceğimiz

standard’ın parçası olmayan X-XSS-Protection headerının eşdeğeridir.

– report-uri : Politika uyumsuzluklarının bildirileceği URI belirlenir.

Content-Security-Policy 1.0 (cont.)

Http Security Headers I 13

Page 14: [OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ve Türkiyedeki Sitelerin Analizi

|

CSPHeader Örnek;

Content-Security-Policy:

// Varsayılan kaynak değerini «none» yaparak, olası hatalı configürasyonların önüne geçiyoruz

default-src none;

// «self» ile Scriptlerin kendi domaininden geldiği sürece çalıştırılabileceğini belirtiyoruz

(Inline javascript çalıştırılmasına, Eval() fonksiyonuna ve Google analytics’e izin vermektedir)

script-src self unsafe-inline unsafe-eval https://ssl.google-analytics.com;

// Pluginlerin yüklenebileceği adresleri belirliyoruz

object-src self;

// CSS’lerin çalışma politikasını belirliyoruz

style-src self;

// İmajların çalışma politikasını belirliyoruz

img-src self;

// Form action’larının çalışma politikasını belirliyoruz

form-action self;

// Ses ve video dosyalarının çalışma politikasını belirliyoruz

media-src self;

// Font’ların çalışma politikasını belirliyoruz

font-src self;

// Scriptlerin bağlanabileceği adres politikasını belirliyoruz

connect-src self;

// Çalıştırılabilir plugin tiplerini belirliyoruz

plugin-types application/pdf application/x-shockwave-flash;

// Web tarayıcını kendi XSS korumasını aktive etmesini sağlıyoruz

reflected-xss block;

Content-Security-Policy 1.0 (cont.)

Http Security Headers I 14

Page 15: [OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ve Türkiyedeki Sitelerin Analizi

|

Content-Security-Policy 1.0 (cont.)

Http Security Headers I 15Referans: http://caniuse.com

Page 16: [OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ve Türkiyedeki Sitelerin Analizi

|

CSP 1.0’da tek tek hangi scriptlerin çalıştırılabileceği seçilememekteydi. Bu durum çoğu zaman yol açtığı problemler

nedeniyle inline scriptlere genel olarak izin verilmesine ve istenilen güvenlik seviyesinin sağlanamamasına neden olmaktaydı.

Content-Security-Policy 2.0

Http Security Headers I 16

CSP 2.0 Nonce kullanımı;

Content-Security-Policy: default-src 'self';

script-src 'self' https://example.com 'nonce-$RANDOM'

Web Tarayıcıya gelen header değeri;

Content-Security-Policy: default-src 'self';

script-src 'self' https://example.com 'nonce-Nc3n83cnSAd3wc3Sasdfn939hc3'

<script>

alert("Blocked because the policy doesn’t have 'unsafe-inline'.")

</script>

<script nonce="EDNnf03nceIOfn39fn3e9h3sdfa">

alert("Still blocked because nonce is wrong.")

</script>

<script nonce="Nc3n83cnSAd3wc3Sasdfn939hc3">

alert("Allowed because nonce is valid.")

</script>

<script src="https://example.com/allowed-because-of-src.js"></script>

<script nonce="EDNnf03nceIOfn39fn3e9h3sdfa"

src="https://elsewhere.com/blocked-because-nonce-is-wrong.js"></script>

<script nonce="Nc3n83cnSAd3wc3Sasdfn939hc3"

src="https://elsewhere.com/allowed-because-nonce-is-valid.js"></script>

Script örnekleri;

Page 17: [OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ve Türkiyedeki Sitelerin Analizi

|

Content-Security-Policy 2.0

Http Security Headers I 17

Page 18: [OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ve Türkiyedeki Sitelerin Analizi

|

Content-Security-Policy 2.0

Http Security Headers I 18Referans: http://caniuse.com

Page 19: [OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ve Türkiyedeki Sitelerin Analizi

|

• Web tarayıcının kendi XSS (Cross-site-scripting) atak korumasını devreye sokar

• Reflected XSS saldırılarına karşın, browser tarafından pattern matching yapılarak, XSS saldırıları

tespit edilmeye çalışılmaktadır.

• x-xss-protection 1 mode=block

Normalde XSS payloadı tespit ettiğinde, yalnızca ilgili payloadı etkisiz hale getirir ancak block

modda çalıştırıldığında tüm sayfadaki scriptlerin çalıştırılmasını durdurur.

• CSP reflected-xss direktifi ile aynı işleve sahip

• Tarayıcı desteği;

– Internet Explorer 8+ (Internet, Trusted, Restricted güvenlik alanlarında varsayılan değer

olarak aktif, Local Intranet güvenlik alanındaki siteler manuel olarak aktive etmelidir.

–Chrome 4+ varsayılan olarak aktiftir.

X-XSS-Protection

Http Security Headers I 19

Page 20: [OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ve Türkiyedeki Sitelerin Analizi

|

• Clickjacking / UI Redress saldırılarına karşı koruma sağlar.

• Click + Hijacking = Clickjacking

X-Frame-Options

Http Security Headers I 20

• Same origin : Hem iFrame hem de web sayfası aynı domaindeyse izin verir.

• Deny : Web sayfasının hiçbir şekilde bir iFrame içersinde gösterimine izin vermez.

• Allow from : Yalnızca izin verilen domainlerde iFrame içerisinde gösterime izin verir.

Page 21: [OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ve Türkiyedeki Sitelerin Analizi

|

X-Frame-Options : DENY

Http Security Headers I 21

Page 22: [OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ve Türkiyedeki Sitelerin Analizi

|

X-Frame-Options : Web Tarayıcı Desteği

Http Security Headers I 22

Page 23: [OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ve Türkiyedeki Sitelerin Analizi

|

• Web tarayıcının HTTP ile iletişim kurmasını engeller, yalnızca HTTPS protokolü ile iletişime izin verir.

• Web Tarayıcı HTTP’ye gelen istekleri otomatik olarak HTTPS’ye çevirir. Böylece sitede unutulan HTTP

bağlantıları olsa bile kullanımını engeller.

• Man-In-The-Middle saldırganı kendi ürettiği sertifikayı kurbana kabul ettirse dahi, HSTS başlığı gören

web tarayıcısı kullanıcının siteye bağlanması engelleyecektir.

• Örnek kullanım;

–Strict-Transport-Security: max-age=3153600

En basit kullanım şeklidir

–Strict-Transport-Security: max-age=3153600; includeSubDomains

Alt domainlere de etki eder

–Strict-Transport-Security: max-age=3153600; includeSubDomains; preload

«Preload» listesindedir.

HTTP Strict-Transport-Security

Http Security Headers I 23

Page 24: [OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ve Türkiyedeki Sitelerin Analizi

|

• «Preload» listesi ile web uygulamanız Web Tarayıcılara HTTPS Only olarak hard-coded

şekilde girer. Liste Chrome tarafından yönetilmektedir. (https://hstspreload.appspot.com)

HTTP Strict-Transport-Security (cont.)

FootNote Http Security Headers I 24

Gereksinimler;

1.Geçerli bir sertifikaya sahip olun

2.Tüm HTTP Trafiğini HTTPS’ye redirect edin

3.Tüm alt domainleri HTTPS’ye çevirin, (DNS kaydında varsa www altdomaini dahil)

4.Ana domainde HSTS başlığını bulundurun:

•Geçerlilik tarihi en az 18 hafta olmalı (10886400 saniye).

• «includeSubdomains» belirteci bulunmalıdır

• «preload» belirteci bulunmalıdır.

• Sayfanızdan dışarıya redirect yönlendirmeleri varsa, ilgili redirect sayfaları için de

(yönlendirme yaptığınız sayfalar değil) HSTS başlığı bulunmalıdır.

Page 25: [OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ve Türkiyedeki Sitelerin Analizi

|

• Set-cookie $RANDOM;

–Temel olarak Kullanıcının sunucu tarafından tanınması amacıyla kullanılmaktadır.

• Set-cookie $RANDOM; HttpOnly;

– Cookie (çerez) değerinin yalnızca HTTP ile iletilmesine izin verir, Javascript, Flash vb. ile cookie

değerine erişim sağlanamaz.

–Cookie deperinin XSS vb. saldırılarla çalınmasını güçleştirir.

• Set-cookie $RANDOM; HttpOnly; Secure;

–Cookie değerinin yalnızca HTTPS üzerinden, güvenli kanallar ile iletilmesini sağlamaktadır.

Set-Cookie

Http Security Headers I 25

Page 26: [OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ve Türkiyedeki Sitelerin Analizi

|

• MIME content-sniffing ataklarına karşı koruma sağlar. Internet Explorer 7 ve öncesinde zafiyet

bulunmaktadır.

• Bu ataklar kullanıcının web uygulamasına imaj, doküman vb. dosya yükleyebildiği, diğer

kullanıcıların da bu dosyalara erişebildiği durumlarda kullanılabilmektedir.

• Content Sniffing : Web tarayıcı byte kod analizi ile yüklenen dosyanın tipini bulur. Uygun bir dosyayı

bulduğunda da sunucunun ilettiğinden bağımsız olarak, kendi anladığı formatta göstermeye çalışır

• Saldırı adımları;

–Kötü niyetli birisi GIF dosyasının içerisine HTML kodu koyarak, bunu web uygulamasına yükler

–GIF dosyasını görüntüleyen diğer kullanıcılar, web tarayıcının GIF dosyasına «content sniffing»

yaparak, içerisinde HTML olduğunu anlaması nedeniyle, kötü niyetli HTML’i istemeden çalıştırır.

• Örnek Kullanım : X-Content-Type-Options: nosniff

X-Content-Type-Options

Http Security Headers I 26

Page 27: [OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ve Türkiyedeki Sitelerin Analizi

|

• Web sunucusundan indirilen bir dosyaya web tarayacı tarafından nasıl davranılacağı belirlenir.

• X-Download-Options: noopen olarak kullanılması durumunda tarayıcı dosyayı download etmekten

başka alternatif sunmaz.

• HTML olarak yüklenen dosyalar Internet Explorer ile «save» yerine «open» edildiğinde, o sitenin

cookie değerlerine erişebilmektedir.

X-Download-Options

FootNote Presentaion Title I 7

X-Download-Options X-Download-Options: noopen

Page 28: [OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ve Türkiyedeki Sitelerin Analizi

|

• Adobe Flash ve Acrobat Reader programlarının web sitesi üzerinde hangi kaynaklara erişebileceğini

kısıtlamak için kullanılır.

• Örnek kullanım;

–X-Permitted-Cross-Domain-Policies : none

Cross-domain erişime izin verilmez.

–X-Permitted-Cross-Domain-Policies : master-only

Yalnızca ilgili domaine ait cross-domain.xml’in okunmasına izin verecektir.

X-Permitted-Cross-Domain-Policies

Http Security Headers I 28

<?xml version="1.0" encoding="UTF-8"?>

<cross-domain-policy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.adobe.com/xml/schemas/PolicyFile.xsd">

<allow-access-from domain="twitter.com" />

<allow-access-from domain="api.twitter.com" />

<allow-access-from domain="search.twitter.com" />

<allow-access-from domain="static.twitter.com" />

<site-control permitted-cross-domain-policies="master-only"/>

<allow-http-request-headers-from domain="*.twitter.com" headers="*" secure="true"/> </cross-domain-policy>

• Twitter cross-domain.xml

Page 29: [OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ve Türkiyedeki Sitelerin Analizi

|

• Certificate Pinning : Sertifikanın istemci tarafından doğrulanması işlemidir.

• Man-In-The-Middle saldırılarına karşı, saldırgan sahte bir sertifika ile HTTPS trafiğini izlemek üzere

araya girmeyi başarsa dahi, istemci tarafında sertifika hash doğrulamasından geçirilmektedir.

• = Base64 (sha256(sertifika))

• Public-Key-Pins: max-age=3000;

pin-sha256="d6qzRu9zOECb90Uez27xWltNsj0e1Md7GkYYkVoZWmM=";

• Tarayıcı desteği;

Public-Key-Pins

FootNote Presentaion Title I 7

Page 30: [OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ve Türkiyedeki Sitelerin Analizi

||

Türkiye’de Durum

05

Http Security Headers I 30

Page 31: [OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ve Türkiyedeki Sitelerin Analizi

| Http Security Headers I 31

Alexa Türkiye Top 500’den, Türkiye odaklı(*) Top 348 site

(*) Türkiye odaklı sitelerin hesaplanmasında, ilgili siteye gelen trafiğe göre, ilk 5’de Türkiye olanlar hesaplamaya dahil edilmiştir.

Page 32: [OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ve Türkiyedeki Sitelerin Analizi

| Http Security Headers I 32

Alexa Türkiye Top 500’den, Türkiye odaklı(*) Top 348 site

Sektörel Dağılım

(*) Türkiye odaklı sitelerin hesaplanmasında, ilgili siteye gelen trafiğe göre, ilk 5’de Türkiye olanlar hesaplamaya dahil edilmiştir.

Page 33: [OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ve Türkiyedeki Sitelerin Analizi

|| Http Security Headers I 33

Daha Fazlası İçin

06

https://securityheaders.io/

Page 34: [OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ve Türkiyedeki Sitelerin Analizi

||

Teşekkürler

Http Security Headers I 34

07

Sorular?