Content Security Policy jako ochrona przed skutkami ataków XSS. owasp@niebezpiecznik.pl



Podobne dokumenty
FRONT-END SECURITY SZYMON GRZYBOWSKI NSENSE POLSKA S.A.

W odpowiedzi na ataki XSS mechanizm Content-Security-Policy

PRZEGLĄDARKA I JEJ OTOCZENIE

Czym jest AJAX. AJAX wprowadzenie. Obiekt XMLHttpRequest (XHR) Niezbędne narzędzia. Standardowy XHR. XHR z obsługą baz danych

Od assemblera do html5

ANIMACJE W CSS3. Czyli po co płacić podatek o Javy Script i JQuery

CSS + HTML. Front end publikacji internetowej. Cięcie grafiki i CSS Ćwiczenia z CSS Typografia CSS image sprites

AJAX. Wykonał: Marcin Ziółkowski, AGH Kraków, AiR rok 5.

Sprawozdanie Sieci komputerowe i bazy danych Laboratorium nr 4

Aspekty bezpieczeństwa aplikacji internetowych

Polityka prywatności

W3 Total Cache. Skuteczne przyśpieszanie WordPressa. Bartosz Romanowski

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

Co to jest Flexbox, zalety Wsparcie dla przeglądarek, wady Dostępność a Flexbox Przykłady, zastosowanie Test

Języki programowania wysokiego poziomu WWW

Wprowadzenie. 1. Terminal WebRTC. LABORATORIUM 5: WebRTC komunikacja między terminalami.

Cookie Policy. 1. Informacje ogólne.

Języki i narzędzia programowania III. Łukasz Kamiński Wykład II

Dokument hipertekstowy

Zarządzanie sesją w aplikacjach Internetowych. Kraków, Paweł Goleń

Panel Porównanie z: Witryna Odwiedziny. 45,99% Wskaźnik odrzuceń Odsłony stron

Zdalny dostęp SSL. Przewodnik Klienta

Pogadanka o czymś, co niektórzy nazywają AJAX

Spis treści CZĘŚĆ I JĘZYK SIECI 17. Wstęp 13. Rozdział 1 Wprowadzenie do HTML5 19. Rozdział 2 Znajomość znaczników HTML5 37

Polityka prywatności serwisu

Serwis realizuje funkcje pozyskiwania informacji o użytkownikach i ich zachowaniach w następujący sposób:

Laboratorium nr 4 - Badanie protokołów WWW

Responsive Web Design

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

Dokumentacja techniczna. Młodzieżowe Pośrednictwo Pracy

Szkolenie wycofane z oferty. Programowanie w JavaScript (zawiera jquery)

Cemarol Sp. z o.o. Polityka prywatności (pliki cookies) 1. Informacje ogólne.

OWASP OWASP. The OWASP Foundation Cross-Site Scripting. Ryzyko do zaakceptowania? Warszawa, 27 stycznia 2011 Michał Kurek

Angular, cz. II. Tworzenie serwisów Web 2.0. dr inż. Robert Perliński

Programowanie i projektowanie obiektowe

Front-end: solidne podstawy. Wszystko, co warto wiedzieć o HTML, CSS, JavaScript i Bootstrap.

Jarosław Kuchta Administrowanie Systemami Komputerowymi. Internetowe Usługi Informacyjne

KONFIGURACJA PRZEGLĄDAREK. Poniższa konfiguracja dedykowana jest dla Bankowości Internetowej SGB

Przetwarzanie dokumentów XML i zaawansowane techniki WWW Zdarzenia w JavaScript (Zajęcia r.)

Szczegółowy opis przedmiotu zamówienia

elektroniczna Platforma Usług Administracji Publicznej

Języki i narzędzia programowania III. Łukasz Kamiński Wykład I

Współdziałanie przeglądarki i skryptów w pliku HTML (lub XML), oraz współdziałanie przeglądarki i ekranu ilustruje niżej położony rysunek.

Wymagania techniczne systemu AudaNet/BRE

Informujemy, iż wszystkie dane są gromadzone jedynie za Państwa przyzwoleniem.

HTML, CSS i JavaScript / Laura Lemay, Rafe Colburn, Jennifer Kyrnin. Gliwice, cop Spis treści

Wprowadzenie. Narzędzia i środowiska programistyczne. Laboratorium 1. Prowadzący: Kierunek: Semestr: Rok: Tomasz Gądek Informatyka Zimowy 2

WŁĄCZANIE W PRZEGLĄDARKACH INTERNETOWYCH OBSŁUGI SKRYPTÓW JAVASCRIPT

Wybrane działy Informatyki Stosowanej

REKLAMY. Specyfikacja techniczna: formy reklamowe na podyplomie.pl. 1. Billboard-pagetop. 2. Double Billboard-pagetop. 3.

Serwis PTF Dodanie informacji bieżącej w podserwisie oddziału

Zdalny dostęp do źródeł elektronicznych BUR dla pracowników i studentów Uniwersytetu Rzeszowskiego

REKLAMY. Specyfikacja techniczna: formy reklamowe na podyplomie.pl. 1. Billboard-pagetop. 2. Double Billboard-pagetop. 3.

Wprowadzenie do kryptografii i bezpieczeństwa. Po raz czwarty

HTTP W 5-CIU PYTANIACH MICHAŁ KOPACZ

Serwis nie zbiera w sposób automatyczny żadnych danych, z wyjątkiem danych zawartych w plikach cookies podczas samego korzystania z Witryny.

Tworzenie Stron Internetowych. odcinek 10

Wybrane działy Informatyki Stosowanej

Włączanie obsługi protokołu TLS w ustawieniach przeglądarki internetowej

Zdalny dostęp do zasobów elektronicznych BGiOINT dla pracowników Politechniki Wrocławskiej

Udostępnianie obrazu z kamer Sanyo HD na stronach WWW PORADNIK

Wojciech Dworakowski. Zabezpieczanie aplikacji. Firewalle aplikacyjne - internetowych

Patryk Jar Meet.js, Gdańsk 11 marca 2013 r. MODULARNY JAVASCRIPT

Instrukcja składania wniosku o dofinansowanie w systemie informatycznym IP na potrzeby konkursu nr 1/1.1.1/2015

OGŁOSZENIE O ZAMÓWIENIU O WARTOŚCI PONIŻEJ EURO. Zn. spr. ZG /2014

Funkcjonalność ochrony antywirusowej w urządzeniach UTM oraz specjalizowanych rozwiązaniach zabezpieczeń AV

Google Web Toolkit Michał Węgorek ZPO 2009

Przykład integracji kalkulatora mbank RATY na platformie IAI

Dokumentacja modułu Woocommerce

Programowanie w Internecie

BADANIE SZYBKOŚCI ŁADOWANIA

JavaScript obiektowość

FEO w Joomla!, czyli jak przyspieszyć swoją stronę

Przewodnik użytkownika (instrukcja) AutoMagicTest

Wybrane działy Informatyki Stosowanej

Pomoc dla systemu WordPress

Włączanie obsługi protokołu TLS w ustawieniach przeglądarki oraz panelu Java

SYSTEM PROXY. Zdalny dostęp do zasobów elektronicznych BGiOINT Politechniki Wrocławskiej

JavaScript - korzenie

SUM Edukacja Techniczno Informatyczna Języki i Systemy Programowania. ł ęść. dr Artur Bartoszewski - WYKŁAD: Języki i Systemy Programowania,

Aplikacje webowe z wykorzystaniem Node.js oraz Express

Program szkolenia: Symfony, nowoczesny framework PHP

Bezpieczeństwo Danych

Aplikacje WWW Wprowadzenie

Kompresja stron internetowych

Scala - programowanie obiektowo-funkcyjne


POLITYKA Prywatności. Przetwarzanie i Ochrona Danych Osobowych

Windows Serwer 2008 R2. Moduł x. IIS

Hosting WWW Bezpieczeństwo hostingu WWW. Dr Michał Tanaś (

Zrąb JavascriptMVC. Krzysztof Płocharz. 6 kwiecień Uniwersytet Warszawski

Podstawy programowania w języku JavaScript

KONFIGURACJA STACJI KLIENCKIEJ UMOŻLIWIAJĄCA KORZYSTANIE Z APLIKACJI ewniosek

Konfiguracja przeglądarek internetowych

Bezpieczeństwo portali społecznościowych w ujęciu robaków Web 2.0

Specyfikacja reklamy tekstowej i bannerowej na portalu GazetaPraca.pl

if ((_root.clickthru == undefined) && (_root.clicktag)) { _root.clickthru = _root.clicktag;

BADANIE SZYBKOŚCI ŁADOWANIA

Transkrypt:

Content Security Policy jako ochrona przed skutkami ataków XSS owasp@niebezpiecznik.pl

niebezpiecznik.pl testujemy serwisy internetowe, ludzi i sieci komputerowe pod kątem odporności na ataki (nie tylko komputerowe...) doradzamy i konsultujemy projekty IT pod kątem bezpieczeństwa szkolimy programistów i administratorów

XSS Mamy i z nim nie wygramy jakie są skutki? jakie są payloady?

+ADw-script+AD4-alert(/xss/)+ADw-/script +AD4- <svg:g onload="alert(8)"/>

$=~[];$={ :++$,$$$$:(![]+"")[$], $:++$,$_$_:(![] +"")[$],_$_:++$,$_$$:({}+"")[$],$$_$:($[$]+"")[$],_$$: ++$,$$$_:(!""+"")[$],$ :++$,$_$:++$,$$ :({}+"")[$], $$_:++$,$$$:++$,$ :++$,$ $:++$};$.$_=($.$_=$ +"")[$.$_$]+($._$=$.$_[$. $])+($.$$=($.$+"")[$. $])+((!$)+"")[$._$$]+($. =$.$_[$.$$_])+($.$=(!""+"") [$. $])+($._=(!""+"")[$._$_])+$.$_[$.$_$]+$. +$._$ +$.$;$.$$=$.$+(!""+"")[$._$$]+$. +$._+$.$+$.$$;$. $=($. )[$.$_][$.$_];$.$($.$($.$$+"\""+$.$_$_+(![] +"")[$._$_]+$.$$$_+"\\"+$. $+$.$$_+$._$_+$. +"("+$. $+")"+"\"")())();

GIF89ad d! Y, d d s 扦 ʁ L Ģ L* J H j N (8HXhx ix GIF89ad.d...!.Y <PUBLIC:COMPONENT> <PUBLIC:ATTACH EVENT="onclick" ONEVENT="alert(1)" /> </PUBLIC:COMPONENT>.,...d.d...s...H...L......L*...J...j...N......(8HXhx...iX..;

CSP Pomysł Mozilla Foundation Pierwsza implementacja w Fx 4.0 Generalnie whitelista ładowanych zasobów

Nagłówek HTTP Content- Security- Policy Oficjalny (Fx, Chrome, Safari nie wspiera): X-Content-Security-Policy Fx 4+ i preview IE 10: X-WebKit-CSP Webkit (Safari 6+ Chrome 16+)

składnia Prefix: zasób [ scheme hostname port ]; Content-Security-Policy: script-src https://foo.pl:42; img-src *.foo.pl; zadziała: *://*.example.com:*...ale nie dopasuje example.com :)

nie ma inline ani skryptów <script>trololo()</script> ani eventów onerror, onclick ani urli javascript: ani evali eval(), new Function(), settimeout() ani styli inline owych Poprawna implementacja przez: zamianę na addeventlistener( ) parsowanie JSON.parse

<script> function foo() { alert('bar'); } </script> <button onclick='foo();'>trololo</button> //index.html <script src='foobar.js'></script> <button id='foo'>trololo</button> //foobar.js function foo() { alert('bar'); } document.addeventlistener('domcontentready', function () { document.getelementbyid('foo').addeventlistener('click', foo); });

kontrola zasobów connect-src połączenia via XHR, WebSockets, and EventSource font-src skąd serwować web fonts. np. https://themes.googleusercontent.com frame-src co może być ramkowane? Uwaga, to nie zamiennik dla X-Frame- Options! media-src video i audio. object-src Flash i inne wtyczki style-src nie domyślicie się... img-src trololo

data: dla obrazków inline

self Obecny origin strony jest ważny, inaczej hostname self przeciwieństwo none i podzbiór *

default-src jeśli nie zdefiniowano wartości dla np. object-src, to wszystkie obiekty dziedziczą wartość z default-src dawniej np. allow self jeśli obiekt ma ustawioną wartość, to nie jest ona łączona z default-src! domyślna wartość to *

report-uri przeglądarka POST-uje JSON-a z naruszeniami polityki pomaga wykryć fuckup programisty fuckup przepuszczający XSS fuckup w implementacji CSP

{ "csp-report": { "document-uri": "http://example.org/page.html", "referrer": "http://evil.example.com/", "blocked-uri": "http://evil.example.com/evil.js", "violated-directive": "script-src 'self' https:// apis.google.com", "original-policy": "script-src 'self' https:// apis.google.com; report-uri http://example.org/ my_amazing_csp_report_parser" } }

zapomnij o tym slajdzie 'unsafe-inline' 'unsafe-eval'

ficzersy sandbox allow-forms allow-same-origin allow-scripts allow-top-navigation

przykład Google +1 button: script-src https://apis.google.com; frame-src https://plusone.google.com Restrykcyjna Content-Security-Policy: default-src 'none'; script-src https://cdn.foo.pl; style-src https://cdn.foo.pl; img-src https://cdn.foo.pl; connect-src https:// api.foo.pl; frame-src 'self'

dodatki do CSM-ów są :)

można tylko testować Content-Security-Policy-Report-Only:

ale lepiej używać to nie boli nikomu nie przeszkadza (wyłączając programistów :>) jest wstecznie kompatybilne

case Twittera (2011) jquery 1.4 testuje eval() rozszerzenia wstrzykują inline JS ISP wstrzykuje JS i zmienia URL obrazków na cache serwery rozwiązanie: SSL :>

case Niebezpiecznika 1 kwietnia można było dodać post do Niebezpiecznika fałszywy panel admina generowany w JS zapisywał dane client-side (ciasteczko) JS odczytywał ciastko na wejściu i pokazywał złośliwego posta Wielu próbowało wstrzykiwać JS - a my im tego nie utrudnialiśmy (brak encodingu) Kilka osób poznało magię CSP ;) Cały czas można wrzucić swój kod na dozwolone serwery (u nas np. Google, AdTaily lub Helion)

Linki https://bugzilla.mozilla.org/show_bug.cgi?id=663566 https://bugs.webkit.org/show_bug.cgi?id=53572 http://developer.chrome.com/extensions/contentsecuritypolicy.html https://developer.mozilla.org/en-us/docs/security/csp/csp_policy_directives https://developer.mozilla.org/en-us/docs/security/csp/ Using_Content_Security_Policy http://people.mozilla.org/~bsterne/content-security-policy/ http://www.w3.org/tr/csp/ https://dvcs.w3.org/hg/content-security-policy/raw-file/tip/cspspecification.dev.html#directives

owasp@niebezpiecznik.pl +48 12 44 202 44 +1 42 42 HACKME facebook.com/niebezpiecznik google.com/+niebezpiecznik