SlideShare a Scribd company logo
1 of 66
Simone Onofri

Hackers vs Developers - HTML5 Security


simone.onofri@techub.it - Techub S.p.A.
Introduzione
h"p://onofri.org/u/html5sec
Introduzione
cosa	
  cambia	
  con	
  l’HTML5	
  in	
  ambito	
  
                  Security?
Quali	
  sono	
  gli	
  a=acchi	
  e	
  le	
  minacce?


                       Events                Tag	
  &	
  ACributes              Thick	
  Features          Abuso	
  di	
  funzioni	
  (es.	
  
                                                                                                           Drag	
  ‘n	
  Drop,	
  Geloca;on)

                    Web	
  Workers
                                                                               Abusi	
  su	
  Widget	
  
                   Botnet/Spyware              XSS	
  /	
  Redirect            esterni	
  e	
  Mashup

                                                                                                           Furto	
  di	
  Informazioni
 ClickJacking      Parser/Threads                    DOM                      Storage/Database             Inserimento	
  di	
  informazioni	
  
UI	
  Redressing                                                                                           malevole/DoS	
  per	
  gli	
  uten;

                        XHR                      WebSocket                      Plug-­‐in	
  Sockets       Abuso	
  della	
  rete	
  del	
  client
                                                                                                           tramite	
  API	
  e	
  Socket	
  (es.	
  Ddos,	
  
                                    Browser	
  Na;ve	
  Network	
  Services                                interceCazione,	
  scansioni)



                            Sandbox                                   Same	
  Origin	
  Policy              Abusi	
  e	
  CSRF
A=acchi	
  più	
  o	
  meno	
  Bpici	
  su	
  HTML5

La	
  sicurezza	
  si	
  sposta	
  lato	
  client,	
  il	
  bene	
  principalmente	
  a3accato	
  è	
  
l’utente	
  con	
  il	
  suo	
  disposi7vo.
Cross	
  Site	
  ScripBng	
  (XSS)
Cross	
  Site	
  Request	
  Forgery	
  (CSRF)




                                                              s
                                                            ou
                                                      a lici                gia
                                                                               ta
                                              	
  m                     for
                                          sito                 est
                                                                  a	
  
                             	
  al	
                       chi
                       ita                       r         i
                   vis                	
  la	
  
                                    on
                             a	
  c
                          gin
                        pa


                                                                    esecuzione	
  della	
  richiesta	
  forgiata

                                                                          conferma	
  dell’esecuzione
Click	
  Jacking/UI	
  Redressing


                    evil.com
                    user:
                    pass:
Abusi	
  su	
  funzionalità	
  di	
  interazione
Abusi	
  di	
  risorse	
  degli	
  utenB/InformaBon	
  Leak
Cosa	
  bisogna	
  fare
Tags	
  &	
  A=ributes	
  /	
  DOM

Su	
  Tag,	
  A3ribu7	
  e	
  nel	
  DOM	
  insiste	
  una	
  delle	
  vulnerabilità	
  più	
  note	
  della	
  
sicurezza	
  delle	
  applicazioni	
  web:	
  il	
  Cross	
  Site	
  ScripBng.	
  HTML5,	
  
proponendo	
  nuovi	
  elemen7	
  e	
  a3ribu7	
  -­‐	
  aumenta	
  la	
  superficie	
  a3accabile.	
  
I	
  rischi	
  connessi	
  sono	
  molteplici	
  e	
  sono	
  alla	
  base	
  di	
  mol7	
  scenari	
  di	
  abuso	
  
o	
  ulteriori	
  problema7che	
  di	
  sicurezza.	
  
nuovi	
  elemenB	
  =	
  nuovi	
  punB	
  di	
  
              a=acco
eventuali	
  blacklist	
  vanno	
  aggiornate	
  
 (un	
  moBvo	
  in	
  più	
  per	
  non	
  usarle)
verificare	
  e	
  codificare!
<form id="test"></form><button form="test" formaction="javascript:alert(1)">X</
                                    button>

                      <input onfocus=write(1) autofocus>

              <input onblur=write(1) autofocus><input autofocus>

                  <video poster=javascript:alert(1)/></video>

   <body onscroll=alert(1)><br><br><br><br><br><br>...<br><br><br><br><input
                                  autofocus>

      <form id=test onforminput=alert(1)><input></form><button form=test
                       onformchange=alert(2)>X</button>

                      <video><source onerror="alert(1)">

              <video onerror="alert(1)"><source></source></video>

           <form><button formaction="javascript:alert(1)">X</button>




                            Nuovi	
  ve3ori	
  XSS...
<body oninput=alert(1)><input autofocus>


              <math href="javascript:alert(1)">CLICKME</math>


       <input name="injected" value="injected" dirname="password" />


         0?<script>Worker("#").onmessage=function(_)eval(_.data)</
                                  script>
:postMessage(importScripts('data:;base64,cG9zdE1lc3NhZ2UoJ2FsZXJ0KDEpJyk'))


<script>crypto.generateCRMFRequest('CN=0',0,0,null,'alert(1)',384,null,'rsa-
                            dual-use')</script>




                          ...e	
  altri	
  ve3ori	
  XSS
Storage	
  e	
  Client-­‐side	
  Database

Storage	
  locali,	
  di	
  sessione	
  o	
  i	
  Client-­‐side	
  Database	
  possono	
  mantenere	
  
svariate	
  quan7tà	
  di	
  da7.	
  E’	
  possibile	
  rubare,	
  cancellare	
  manipolare	
  i	
  daB,	
  
es.	
  tramite	
  un	
  Cross	
  Site	
  Scrip7ng	
  o	
  semplicemente	
  accedendo	
  
localmente	
  al	
  browser.	
  	
  I	
  da7	
  devono	
  quindi	
  essere	
  sempre	
  validaB	
  e	
  non	
  
uBlizzaB	
  per	
  scelte	
  di	
  “sicurezza”.
l’accesso	
  è	
  regolato	
  dalla	
  triple=a	
  
    protocollo-­‐dominio-­‐porta...
...ma	
  non	
  dal	
  path!
uBlizzare	
  il	
  sessionStorage	
  per	
  
         i	
  daB	
  temporanei
i	
  daB	
  sono	
  manipolabili,	
  quindi	
  
considerarli	
  sempre	
  come	
  “non	
  
                 affidabili”
non	
  memorizzare	
  daB	
  sensibili,	
  
   come	
  token	
  di	
  sessione
il	
  WebStorage	
  è	
  potenzialmente	
  
vulnerabile	
  alle	
  SQL	
  InjecBon,	
  usare	
  
          le	
  prepared	
  statement
    db.executeSql('SELECT
    name FROM names WHERE
           id=?',[name]);
a=enzione	
  ai	
  Cross	
  Site	
  ScripBng
Web	
  Messaging

Funzionalità	
  di	
  HTML5	
  che	
  perme3ere	
  di	
  trasme3ere	
  informazioni	
  tra	
  
documenB	
  di	
  origine	
  differente	
  (es.	
  domini)	
  per	
  esempio	
  a3raverso	
  
iframe	
  differen7.
quando	
  si	
  invia	
  un	
  messaggio,	
  
indicare	
  esplicitamente	
  l’origine	
  che	
  
      ci	
  aspe`amo.	
  es.	
  evitare	
  
window.postMessage("Test"
                   , "*")
quando	
  riceviamo	
  i	
  daB	
  a=enzione	
  
     ai	
  Cross	
  Site	
  ScripBng!
es.	
  al	
  posto	
  di	
  usare	
  
element.innerHTML uBlizzare	
  
  element.textContent
verificare	
  sempre,	
  in	
  maniera	
  
efficace,	
  l’origine	
  della	
  richiesta!
 es.	
  evitare	
  controlli	
  come	
  
message.orgin.indexOf(".e
         xample.org")!=-1
Web	
  Sockets

Protocollo	
  introdo3o	
  in	
  HTML5,	
  perme3e	
  una	
  comunicazione	
  full-­‐duplex	
  
all’interno	
  di	
  una	
  connessione	
  TCP.	
  Il	
  collegamento	
  con	
  HTTP	
  si	
  limita	
  
all’handshake.	
  A3enzione:	
  alcuni	
  proxy	
  potrebbero	
  non	
  gradire	
  il	
  426	
  
Upgrade	
  Required.
evitare	
  vecchi	
  protocolli	
  insicuri	
  
come	
  hixie-75	
  o	
  hixie-76/
hybi-00.	
  UBlizzare	
  l’RFC-6455
a=enzione	
  ai	
  Cross	
  Site	
  ScripBng
non	
  è	
  un	
  protocollo	
  che	
  gesBsce	
  
l’autenBcazione	
  o	
  l’autorizzazione:	
  
     va	
  gesBta	
  lato	
  applicaBvo
i	
  daB	
  sensibili	
  non	
  devono	
  passare	
  
in	
  chiaro	
  (ws://)	
  ma	
  essere	
  cifraB	
  
                   (wss://)
verificare	
  sempre	
  gli	
  input	
  e	
  gli	
  
               output
verificare	
  sempre	
  l’Origin
Cross	
  Origin	
  Resource	
  Sharing

Perme3e	
  di	
  bypassare	
  la	
  Same	
  Origin	
  Policy	
  -­‐	
  senza	
  usare	
  workaround	
  
come	
  JSONP	
  e	
  comunicare	
  con	
  URL	
  esterni.	
  Questo	
  vale	
  anche	
  per	
  
l’XMLH3pRequest,	
  la	
  policy	
  si	
  concre7zza	
  in	
  alcuni	
  header	
  HTTP	
  che	
  
vanno	
  u7lizza7	
  in	
  maniera	
  opportuna	
  per	
  evitare	
  che	
  i	
  propri	
  ogge`	
  siano	
  
richiama7	
  da	
  fon7	
  esterne	
  e	
  u7lizzare	
  l’Origin	
  come	
  potenziale	
  protezione	
  
di	
  Cross	
  Site	
  Request	
  Forgery.
verificare	
  sempre	
  le	
  richieste	
  
       passate	
  da	
  XHR
Access-Control-Allow-
Origin: * solo	
  per	
  URL	
  che	
  non	
  
 espongono	
  informazioni	
  sensibili
uBlizzare	
  il	
  principio	
  del	
  privilegio	
  
minimo:	
  blacklist	
  su	
  tu=o	
  e	
  whitelist	
  
      dei	
  soli	
  domini	
  permessi
a=enzione	
  all’uBlizzo	
  di	
  
Access-Control-Allow-
Credentials: true e	
  non	
  
       rifle=erlo	
  mai
a=enzione	
  alla	
  cache,	
  uBlizzaere	
  
              l’header	
  
Access-Control-Max-Age
considerare	
  che	
  il	
  tu=o	
  può	
  essere	
  
 bypassato	
  con	
  un	
  HTTP	
  Response	
  
                spli`ng
L’Origin può	
  essere	
  alterato,	
  per	
  
  cui	
  non	
  fare	
  affidamento	
  solo	
  su	
  
                        quello
Sandboxing

U7lizzare	
  il	
  sandboxing	
  per	
  ges7re	
  iframe	
  con	
  contenu7	
  dove	
  non	
  
abbiamo	
  controllo	
  per	
  o3eniamo	
  così	
  una	
  sandbox	
  rispe3o	
  l’origin,	
  form	
  
e	
  script	
  disabilita7,	
  i	
  link	
  non	
  possono	
  uscire	
  dal	
  contesto,	
  trigger	
  
automa7ci	
  disabilita7,	
  plugin	
  disabilita7,	
  così	
  da	
  isolare	
  eventuali	
  Widget	
  
o	
  Mashup	
  malevoli	
  e	
  mi7gare	
  il	
  Clickjacking/UI	
  Redressing.
uBlizzare	
  l’a=ributo	
  sandbox
negli	
  iframe	
  che	
  possono	
  contere	
  
 contento	
  sul	
  quale	
  non	
  abbiamo	
  
                 controllo
è	
  possibile	
  abilitare	
  un	
  controllo	
  
granulare	
  su	
  form,	
  pop-­‐up,	
  same-­‐
       origin,	
  script	
  e	
  gesBone	
  del	
  
                    puntatore
Web	
  Workers

Nuova	
  funzionalità	
  di	
  HTML5,	
  perme3e	
  di	
  eseguire	
  porzioni	
  di	
  codice	
  
Javascript	
  in	
  maniera	
  asincrona,	
  al	
  ne3o	
  del	
  codice	
  visualizzato.	
  Anche	
  se	
  
non	
  hanno	
  accesso	
  al	
  DOM	
  possono	
  comunque	
  eseguire	
  richieste	
  XHR	
  ed	
  
essere	
  abusaB	
  sfru=ando	
  eccessivamente	
  la	
  CPU	
  per	
  eseguire	
  operazioni	
  
di	
  calcolo	
  distribuito	
  (es.	
  password	
  cracking)	
  oppure	
  DoS	
  verso	
  l’utente	
  
mobile	
  (es.	
  consumando	
  velocemente	
  la	
  ba3eria).
validare	
  sempre	
  i	
  daB,	
  sia	
  per	
  
evitare	
  che	
  sia	
  possibile	
  inserire	
  
 codice	
  malevolo	
  nel	
  worker...
...sia	
  per	
  evitare	
  DOM	
  XSS	
  (es.	
  non	
  
    usare	
  eval()	
  nei	
  parametri	
  
                     passaB)
Thick	
  Features

Funzionalità	
  di	
  HTML5	
  che	
  perme3ono	
  di	
  integrarsi	
  con	
  il	
  disposi7vo	
  
u7lizzato	
  dall’utente	
  come	
  la	
  Goloca7on	
  API	
  e	
  File	
  API.	
  Le	
  problema7che	
  
possono	
  essere	
  l’abuso	
  della	
  funzionalità	
  -­‐	
  anche	
  tramite	
  ClickJacking/UI	
  
Redressing,	
  CSRF	
  o	
  XSS	
  -­‐	
  per	
  so=rarre	
  informazioni/file	
  agli	
  utenB.	
  
anche	
  se	
  l’RFC	
  prevede	
  la	
  conferma	
  
 lato	
  UA,	
  prevedere	
  comunque	
  un	
  
interazione	
  prima	
  dell’invio	
  dei	
  daB
HTTP	
  Header	
  ProtecBon

Se	
  le	
  minacce	
  sono	
  sul	
  client,	
  le	
  protezioni	
  sono	
  negli	
  HTTP	
  Header.	
  I	
  vari	
  
vendor	
  hanno	
  proposto	
  svaria7	
  header	
  di	
  protezione	
  che	
  si	
  sono	
  man	
  
mano	
  diffusi.	
  Sono	
  disponibili	
  header	
  come	
  protezione	
  accessoria	
  contro	
  i	
  
Cross	
  Site	
  ScripBng,	
  Clickjacking/UI	
  Redressing	
  e	
  problemaBche	
  nel	
  
livello	
  di	
  trasporto.
X-Content-Type-Options:
nosniff per	
  forzare	
  il	
  mime-­‐type	
  
   specificato	
  ed	
  evitare	
  	
  XSS
X-XSS-Protection: 1;
 mode=block	
  per	
  abilitare	
  le	
  
protezioni	
  anB-­‐XSS	
  del	
  browser
X-Frame-Options: deny	
  per	
  
evitare	
  il	
  ClickJacking/UI	
  Redressing
Strict-Transport-
Security: max-age=60000;
includeSubDomains	
  per	
  evitare	
  
   problemaBche	
  nel	
  livello	
  di	
  
          trasporto
Content-Security-Policy/
X-WebKit-CSP/X-Content-
Security-Policy	
  per	
  evitare	
  
 XSS,	
  ClickJacking/UI	
  Redressing,	
  
                 MiTM
Conclusioni
;-­‐)
http://onofri.org/
http://twitter.com/simoneonofri
http://it.linkedin.com/simoneonofri
http://slideshare.net/simoneonofri




GRAZIE!
http://onofri.org/
http://twitter.com/simoneonofri
http://it.linkedin.com/simoneonofri
http://slideshare.net/simoneonofri




DOMANDE
                                      ?

More Related Content

Viewers also liked

Introduzione al Web Semantico: URI, XML, RDF, SPARQL, RDFS, OWL
Introduzione al Web Semantico: URI, XML, RDF, SPARQL, RDFS, OWLIntroduzione al Web Semantico: URI, XML, RDF, SPARQL, RDFS, OWL
Introduzione al Web Semantico: URI, XML, RDF, SPARQL, RDFS, OWL
Simone Onofri
 
ITSMF Conferenza 2014 - L'officina Agile per innovare l'IT Service Management
ITSMF Conferenza 2014 - L'officina Agile per innovare l'IT Service ManagementITSMF Conferenza 2014 - L'officina Agile per innovare l'IT Service Management
ITSMF Conferenza 2014 - L'officina Agile per innovare l'IT Service Management
Simone Onofri
 
Il Web del Futuro Web Marketing e Web Semantico semarketing
Il Web del Futuro Web Marketing e Web Semantico semarketingIl Web del Futuro Web Marketing e Web Semantico semarketing
Il Web del Futuro Web Marketing e Web Semantico semarketing
Simone Onofri
 

Viewers also liked (20)

Hackers vs developers: progettere le applicazioni mobile tra OWASP e OSSTMM
Hackers vs developers: progettere le applicazioni mobile tra OWASP e OSSTMMHackers vs developers: progettere le applicazioni mobile tra OWASP e OSSTMM
Hackers vs developers: progettere le applicazioni mobile tra OWASP e OSSTMM
 
Il Web del Futuro: RDFa per l organizzazione della conoscenza sul web - Web S...
Il Web del Futuro: RDFa per l organizzazione della conoscenza sul web - Web S...Il Web del Futuro: RDFa per l organizzazione della conoscenza sul web - Web S...
Il Web del Futuro: RDFa per l organizzazione della conoscenza sul web - Web S...
 
Introduzione al Web Semantico: URI, XML, RDF, SPARQL, RDFS, OWL
Introduzione al Web Semantico: URI, XML, RDF, SPARQL, RDFS, OWLIntroduzione al Web Semantico: URI, XML, RDF, SPARQL, RDFS, OWL
Introduzione al Web Semantico: URI, XML, RDF, SPARQL, RDFS, OWL
 
Il Web del Futuro - Progettare applicazioni con il Web Semantico
Il Web del Futuro - Progettare applicazioni con il Web SemanticoIl Web del Futuro - Progettare applicazioni con il Web Semantico
Il Web del Futuro - Progettare applicazioni con il Web Semantico
 
Accessibilità dei Contenuti per il Web secondo il W3C: Introduzione alle WCAG...
Accessibilità dei Contenuti per il Web secondo il W3C: Introduzione alle WCAG...Accessibilità dei Contenuti per il Web secondo il W3C: Introduzione alle WCAG...
Accessibilità dei Contenuti per il Web secondo il W3C: Introduzione alle WCAG...
 
Web Semantico: da XHTML a RDF in 3 click
Web Semantico: da XHTML a RDF in 3 clickWeb Semantico: da XHTML a RDF in 3 click
Web Semantico: da XHTML a RDF in 3 click
 
ITSMF Conferenza 2014 - L'officina Agile per innovare l'IT Service Management
ITSMF Conferenza 2014 - L'officina Agile per innovare l'IT Service ManagementITSMF Conferenza 2014 - L'officina Agile per innovare l'IT Service Management
ITSMF Conferenza 2014 - L'officina Agile per innovare l'IT Service Management
 
Il Web del Futuro: Enterprise e Web Semantico
Il Web del Futuro: Enterprise e Web SemanticoIl Web del Futuro: Enterprise e Web Semantico
Il Web del Futuro: Enterprise e Web Semantico
 
Lean Startup Machine - Rome - Agile e Lean Project Management
Lean Startup Machine - Rome - Agile e Lean Project ManagementLean Startup Machine - Rome - Agile e Lean Project Management
Lean Startup Machine - Rome - Agile e Lean Project Management
 
Il Web Del Futuro Visioni E Idee Sul Web Semantico
Il  Web Del Futuro    Visioni E  Idee Sul  Web  SemanticoIl  Web Del Futuro    Visioni E  Idee Sul  Web  Semantico
Il Web Del Futuro Visioni E Idee Sul Web Semantico
 
Hackers vs Developers: vulnerabilità e soluzioni nello sviluppo di applicazio...
Hackers vs Developers: vulnerabilità e soluzioni nello sviluppo di applicazio...Hackers vs Developers: vulnerabilità e soluzioni nello sviluppo di applicazio...
Hackers vs Developers: vulnerabilità e soluzioni nello sviluppo di applicazio...
 
Hackers vs Developers - SQL Injection - Attacco e Difesa
Hackers vs Developers - SQL Injection - Attacco e DifesaHackers vs Developers - SQL Injection - Attacco e Difesa
Hackers vs Developers - SQL Injection - Attacco e Difesa
 
Mamma, da grande voglio essere un Penetration Tester HackInBo 2016 Winter
Mamma, da grande voglio essere un Penetration Tester HackInBo  2016 WinterMamma, da grande voglio essere un Penetration Tester HackInBo  2016 Winter
Mamma, da grande voglio essere un Penetration Tester HackInBo 2016 Winter
 
Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Applica...
Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Applica...Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Applica...
Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Applica...
 
Hackers vs Developers - Nuove e vecchie vulnerabilità con la OWASP TOP 10 2013
Hackers vs Developers - Nuove e vecchie vulnerabilità con la OWASP TOP 10 2013Hackers vs Developers - Nuove e vecchie vulnerabilità con la OWASP TOP 10 2013
Hackers vs Developers - Nuove e vecchie vulnerabilità con la OWASP TOP 10 2013
 
Project management: Gestire progetto web con Agilità (con DSDM, Agile Project...
Project management: Gestire progetto web con Agilità (con DSDM, Agile Project...Project management: Gestire progetto web con Agilità (con DSDM, Agile Project...
Project management: Gestire progetto web con Agilità (con DSDM, Agile Project...
 
Agile Lean Management - MoSCoW, Timeboxing e Kanban
Agile Lean Management - MoSCoW, Timeboxing e KanbanAgile Lean Management - MoSCoW, Timeboxing e Kanban
Agile Lean Management - MoSCoW, Timeboxing e Kanban
 
TEDX TorVergataU - Intuition, Hacking e Nuove Tecnologie
TEDX TorVergataU -  Intuition, Hacking e Nuove TecnologieTEDX TorVergataU -  Intuition, Hacking e Nuove Tecnologie
TEDX TorVergataU - Intuition, Hacking e Nuove Tecnologie
 
Agile e Lean Management
 Agile e Lean Management Agile e Lean Management
Agile e Lean Management
 
Il Web del Futuro Web Marketing e Web Semantico semarketing
Il Web del Futuro Web Marketing e Web Semantico semarketingIl Web del Futuro Web Marketing e Web Semantico semarketing
Il Web del Futuro Web Marketing e Web Semantico semarketing
 

Similar to HTML5 Security

Malware Analysis. A Case Study
Malware Analysis. A Case StudyMalware Analysis. A Case Study
Malware Analysis. A Case Study
Gianni Amato
 
Come sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLCome sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTML
Sinergia Totale
 
Tesi Triennale: Navigazione automatica e rilevazione di errori in applicazion...
Tesi Triennale: Navigazione automatica e rilevazione di errori in applicazion...Tesi Triennale: Navigazione automatica e rilevazione di errori in applicazion...
Tesi Triennale: Navigazione automatica e rilevazione di errori in applicazion...
Federico Villa
 

Similar to HTML5 Security (20)

Web Application Insecurity Uncensored
Web Application Insecurity UncensoredWeb Application Insecurity Uncensored
Web Application Insecurity Uncensored
 
Hackers vs. Developers: Nuove e vecchie vulnerabilità con la OWASP TOP 10 2013
Hackers vs. Developers: Nuove e vecchie vulnerabilità con la OWASP TOP 10 2013Hackers vs. Developers: Nuove e vecchie vulnerabilità con la OWASP TOP 10 2013
Hackers vs. Developers: Nuove e vecchie vulnerabilità con la OWASP TOP 10 2013
 
Hackers vs Developers - Cross Site Scripting (XSS) Attacco e difesa
Hackers vs Developers - Cross Site Scripting (XSS) Attacco e difesaHackers vs Developers - Cross Site Scripting (XSS) Attacco e difesa
Hackers vs Developers - Cross Site Scripting (XSS) Attacco e difesa
 
ASP.NET MVC3 - Tutti i compiti del Controller
ASP.NET MVC3 - Tutti i compiti del ControllerASP.NET MVC3 - Tutti i compiti del Controller
ASP.NET MVC3 - Tutti i compiti del Controller
 
Owasp parte3
Owasp parte3Owasp parte3
Owasp parte3
 
HTML5, il lato client della forza...
HTML5, il lato client della forza... HTML5, il lato client della forza...
HTML5, il lato client della forza...
 
Virtually Pwned: Hacking VMware [ITA - SMAU10]
Virtually Pwned: Hacking VMware [ITA - SMAU10]Virtually Pwned: Hacking VMware [ITA - SMAU10]
Virtually Pwned: Hacking VMware [ITA - SMAU10]
 
Malware Analysis. A Case Study
Malware Analysis. A Case StudyMalware Analysis. A Case Study
Malware Analysis. A Case Study
 
Come sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLCome sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTML
 
Hackers vs developers: dalla parte degli sviluppatori web, mobile e non solo,...
Hackers vs developers: dalla parte degli sviluppatori web, mobile e non solo,...Hackers vs developers: dalla parte degli sviluppatori web, mobile e non solo,...
Hackers vs developers: dalla parte degli sviluppatori web, mobile e non solo,...
 
Tesi Triennale: Navigazione automatica e rilevazione di errori in applicazion...
Tesi Triennale: Navigazione automatica e rilevazione di errori in applicazion...Tesi Triennale: Navigazione automatica e rilevazione di errori in applicazion...
Tesi Triennale: Navigazione automatica e rilevazione di errori in applicazion...
 
Asynchronous Java ME and XML
Asynchronous Java ME and XMLAsynchronous Java ME and XML
Asynchronous Java ME and XML
 
September 2010 - Gatein
September 2010 - GateinSeptember 2010 - Gatein
September 2010 - Gatein
 
JWT: JSON Web Tokens - bye bye Session and Cookie - RFC7519
JWT: JSON Web Tokens - bye bye Session and Cookie - RFC7519JWT: JSON Web Tokens - bye bye Session and Cookie - RFC7519
JWT: JSON Web Tokens - bye bye Session and Cookie - RFC7519
 
Sicurezza e resilienza di Architetture a Containers
Sicurezza e resilienza di Architetture a ContainersSicurezza e resilienza di Architetture a Containers
Sicurezza e resilienza di Architetture a Containers
 
Json Web Tokens
Json Web TokensJson Web Tokens
Json Web Tokens
 
Novità di Asp.Net 4.0
Novità di Asp.Net 4.0Novità di Asp.Net 4.0
Novità di Asp.Net 4.0
 
CisCon 2018 - Piattaforme AntiDDoS – Lo scudo 2.0 nell’era della guerra tele...
CisCon 2018 -  Piattaforme AntiDDoS – Lo scudo 2.0 nell’era della guerra tele...CisCon 2018 -  Piattaforme AntiDDoS – Lo scudo 2.0 nell’era della guerra tele...
CisCon 2018 - Piattaforme AntiDDoS – Lo scudo 2.0 nell’era della guerra tele...
 
Botnet e nuove forme di malware
Botnet e nuove forme di malwareBotnet e nuove forme di malware
Botnet e nuove forme di malware
 
20230208-webinar_IDP_resiliente.pdf
20230208-webinar_IDP_resiliente.pdf20230208-webinar_IDP_resiliente.pdf
20230208-webinar_IDP_resiliente.pdf
 

More from Simone Onofri

More from Simone Onofri (18)

Attacking and Exploiting Ethereum Smart Contracts: Auditing 101
Attacking and Exploiting Ethereum Smart Contracts: Auditing 101Attacking and Exploiting Ethereum Smart Contracts: Auditing 101
Attacking and Exploiting Ethereum Smart Contracts: Auditing 101
 
Attacking IoT Devices from a Web Perspective - Linux Day
Attacking IoT Devices from a Web Perspective - Linux Day Attacking IoT Devices from a Web Perspective - Linux Day
Attacking IoT Devices from a Web Perspective - Linux Day
 
Attacking Ethereum Smart Contracts a deep dive after ~9 years of deployment
Attacking Ethereum Smart Contracts  a deep dive after ~9 years of deploymentAttacking Ethereum Smart Contracts  a deep dive after ~9 years of deployment
Attacking Ethereum Smart Contracts a deep dive after ~9 years of deployment
 
Linux Day 2018 Roma - Web Application Penetration Test (WAPT) con Linux
Linux Day 2018 Roma - Web Application Penetration Test (WAPT) con LinuxLinux Day 2018 Roma - Web Application Penetration Test (WAPT) con Linux
Linux Day 2018 Roma - Web Application Penetration Test (WAPT) con Linux
 
Agile Lean Conference 2017 - Leadership e facilitazione
Agile Lean Conference 2017 - Leadership e facilitazioneAgile Lean Conference 2017 - Leadership e facilitazione
Agile Lean Conference 2017 - Leadership e facilitazione
 
Agile Business Consortium - LEGO SERIOUS PLAY e i Principi di Agile Project M...
Agile Business Consortium - LEGO SERIOUS PLAY e i Principi di Agile Project M...Agile Business Consortium - LEGO SERIOUS PLAY e i Principi di Agile Project M...
Agile Business Consortium - LEGO SERIOUS PLAY e i Principi di Agile Project M...
 
Agile Project Framework
Agile Project FrameworkAgile Project Framework
Agile Project Framework
 
Agile nei servizi di cyber security (Security Summit Edition)
Agile nei servizi di cyber security (Security Summit Edition)Agile nei servizi di cyber security (Security Summit Edition)
Agile nei servizi di cyber security (Security Summit Edition)
 
Security Project Management - Agile nei servizi di Cyber Security
Security Project Management - Agile nei servizi di Cyber SecuritySecurity Project Management - Agile nei servizi di Cyber Security
Security Project Management - Agile nei servizi di Cyber Security
 
Cyber Defense - How to find and manage zero-days
Cyber Defense - How to find and manage zero-days Cyber Defense - How to find and manage zero-days
Cyber Defense - How to find and manage zero-days
 
Cyber Defense - How to be prepared to APT
Cyber Defense - How to be prepared to APTCyber Defense - How to be prepared to APT
Cyber Defense - How to be prepared to APT
 
ISACA - Gestire progetti di Ethical Hacking secondo le best practices
ISACA - Gestire progetti di Ethical Hacking secondo le best practicesISACA - Gestire progetti di Ethical Hacking secondo le best practices
ISACA - Gestire progetti di Ethical Hacking secondo le best practices
 
OWASP AppSec EU 2016 - Security Project Management - How to be Agile in Secu...
OWASP AppSec EU 2016 - Security Project Management -  How to be Agile in Secu...OWASP AppSec EU 2016 - Security Project Management -  How to be Agile in Secu...
OWASP AppSec EU 2016 - Security Project Management - How to be Agile in Secu...
 
Penetration Testing con Python - Network Sniffer
Penetration Testing con Python - Network SnifferPenetration Testing con Python - Network Sniffer
Penetration Testing con Python - Network Sniffer
 
ORM Injection
ORM InjectionORM Injection
ORM Injection
 
Nuove minacce nella Cyber Security, come proteggersi
Nuove minacce nella Cyber Security, come proteggersiNuove minacce nella Cyber Security, come proteggersi
Nuove minacce nella Cyber Security, come proteggersi
 
Agile lean conference - Agile, Lean & Business
Agile lean conference - Agile, Lean & BusinessAgile lean conference - Agile, Lean & Business
Agile lean conference - Agile, Lean & Business
 
IPMA 2014 World Congress - Stakeholder Engagement between Traditional and Ag...
IPMA 2014 World Congress -  Stakeholder Engagement between Traditional and Ag...IPMA 2014 World Congress -  Stakeholder Engagement between Traditional and Ag...
IPMA 2014 World Congress - Stakeholder Engagement between Traditional and Ag...
 

HTML5 Security

  • 1. Simone Onofri Hackers vs Developers - HTML5 Security simone.onofri@techub.it - Techub S.p.A.
  • 3.
  • 6. cosa  cambia  con  l’HTML5  in  ambito   Security?
  • 7. Quali  sono  gli  a=acchi  e  le  minacce? Events Tag  &  ACributes Thick  Features Abuso  di  funzioni  (es.   Drag  ‘n  Drop,  Geloca;on) Web  Workers Abusi  su  Widget   Botnet/Spyware XSS  /  Redirect esterni  e  Mashup Furto  di  Informazioni ClickJacking Parser/Threads DOM Storage/Database Inserimento  di  informazioni   UI  Redressing malevole/DoS  per  gli  uten; XHR WebSocket Plug-­‐in  Sockets Abuso  della  rete  del  client tramite  API  e  Socket  (es.  Ddos,   Browser  Na;ve  Network  Services interceCazione,  scansioni) Sandbox Same  Origin  Policy Abusi  e  CSRF
  • 8. A=acchi  più  o  meno  Bpici  su  HTML5 La  sicurezza  si  sposta  lato  client,  il  bene  principalmente  a3accato  è   l’utente  con  il  suo  disposi7vo.
  • 10. Cross  Site  Request  Forgery  (CSRF) s ou a lici gia ta  m for sito est a    al   chi ita r i vis  la   on a  c gin pa esecuzione  della  richiesta  forgiata conferma  dell’esecuzione
  • 11. Click  Jacking/UI  Redressing evil.com user: pass:
  • 12. Abusi  su  funzionalità  di  interazione
  • 13. Abusi  di  risorse  degli  utenB/InformaBon  Leak
  • 15. Tags  &  A=ributes  /  DOM Su  Tag,  A3ribu7  e  nel  DOM  insiste  una  delle  vulnerabilità  più  note  della   sicurezza  delle  applicazioni  web:  il  Cross  Site  ScripBng.  HTML5,   proponendo  nuovi  elemen7  e  a3ribu7  -­‐  aumenta  la  superficie  a3accabile.   I  rischi  connessi  sono  molteplici  e  sono  alla  base  di  mol7  scenari  di  abuso   o  ulteriori  problema7che  di  sicurezza.  
  • 16. nuovi  elemenB  =  nuovi  punB  di   a=acco
  • 17. eventuali  blacklist  vanno  aggiornate   (un  moBvo  in  più  per  non  usarle)
  • 19. <form id="test"></form><button form="test" formaction="javascript:alert(1)">X</ button> <input onfocus=write(1) autofocus> <input onblur=write(1) autofocus><input autofocus> <video poster=javascript:alert(1)/></video> <body onscroll=alert(1)><br><br><br><br><br><br>...<br><br><br><br><input autofocus> <form id=test onforminput=alert(1)><input></form><button form=test onformchange=alert(2)>X</button> <video><source onerror="alert(1)"> <video onerror="alert(1)"><source></source></video> <form><button formaction="javascript:alert(1)">X</button> Nuovi  ve3ori  XSS...
  • 20. <body oninput=alert(1)><input autofocus> <math href="javascript:alert(1)">CLICKME</math> <input name="injected" value="injected" dirname="password" /> 0?<script>Worker("#").onmessage=function(_)eval(_.data)</ script> :postMessage(importScripts('data:;base64,cG9zdE1lc3NhZ2UoJ2FsZXJ0KDEpJyk')) <script>crypto.generateCRMFRequest('CN=0',0,0,null,'alert(1)',384,null,'rsa- dual-use')</script> ...e  altri  ve3ori  XSS
  • 21. Storage  e  Client-­‐side  Database Storage  locali,  di  sessione  o  i  Client-­‐side  Database  possono  mantenere   svariate  quan7tà  di  da7.  E’  possibile  rubare,  cancellare  manipolare  i  daB,   es.  tramite  un  Cross  Site  Scrip7ng  o  semplicemente  accedendo   localmente  al  browser.    I  da7  devono  quindi  essere  sempre  validaB  e  non   uBlizzaB  per  scelte  di  “sicurezza”.
  • 22. l’accesso  è  regolato  dalla  triple=a   protocollo-­‐dominio-­‐porta...
  • 23. ...ma  non  dal  path!
  • 24. uBlizzare  il  sessionStorage  per   i  daB  temporanei
  • 25. i  daB  sono  manipolabili,  quindi   considerarli  sempre  come  “non   affidabili”
  • 26. non  memorizzare  daB  sensibili,   come  token  di  sessione
  • 27. il  WebStorage  è  potenzialmente   vulnerabile  alle  SQL  InjecBon,  usare   le  prepared  statement db.executeSql('SELECT name FROM names WHERE id=?',[name]);
  • 28. a=enzione  ai  Cross  Site  ScripBng
  • 29. Web  Messaging Funzionalità  di  HTML5  che  perme3ere  di  trasme3ere  informazioni  tra   documenB  di  origine  differente  (es.  domini)  per  esempio  a3raverso   iframe  differen7.
  • 30. quando  si  invia  un  messaggio,   indicare  esplicitamente  l’origine  che   ci  aspe`amo.  es.  evitare   window.postMessage("Test" , "*")
  • 31. quando  riceviamo  i  daB  a=enzione   ai  Cross  Site  ScripBng!
  • 32. es.  al  posto  di  usare   element.innerHTML uBlizzare   element.textContent
  • 33. verificare  sempre,  in  maniera   efficace,  l’origine  della  richiesta!
  • 34.  es.  evitare  controlli  come   message.orgin.indexOf(".e xample.org")!=-1
  • 35. Web  Sockets Protocollo  introdo3o  in  HTML5,  perme3e  una  comunicazione  full-­‐duplex   all’interno  di  una  connessione  TCP.  Il  collegamento  con  HTTP  si  limita   all’handshake.  A3enzione:  alcuni  proxy  potrebbero  non  gradire  il  426   Upgrade  Required.
  • 36. evitare  vecchi  protocolli  insicuri   come  hixie-75  o  hixie-76/ hybi-00.  UBlizzare  l’RFC-6455
  • 37. a=enzione  ai  Cross  Site  ScripBng
  • 38. non  è  un  protocollo  che  gesBsce   l’autenBcazione  o  l’autorizzazione:   va  gesBta  lato  applicaBvo
  • 39. i  daB  sensibili  non  devono  passare   in  chiaro  (ws://)  ma  essere  cifraB   (wss://)
  • 40. verificare  sempre  gli  input  e  gli   output
  • 42. Cross  Origin  Resource  Sharing Perme3e  di  bypassare  la  Same  Origin  Policy  -­‐  senza  usare  workaround   come  JSONP  e  comunicare  con  URL  esterni.  Questo  vale  anche  per   l’XMLH3pRequest,  la  policy  si  concre7zza  in  alcuni  header  HTTP  che   vanno  u7lizza7  in  maniera  opportuna  per  evitare  che  i  propri  ogge`  siano   richiama7  da  fon7  esterne  e  u7lizzare  l’Origin  come  potenziale  protezione   di  Cross  Site  Request  Forgery.
  • 43. verificare  sempre  le  richieste   passate  da  XHR
  • 44. Access-Control-Allow- Origin: * solo  per  URL  che  non   espongono  informazioni  sensibili
  • 45. uBlizzare  il  principio  del  privilegio   minimo:  blacklist  su  tu=o  e  whitelist   dei  soli  domini  permessi
  • 46. a=enzione  all’uBlizzo  di   Access-Control-Allow- Credentials: true e  non   rifle=erlo  mai
  • 47. a=enzione  alla  cache,  uBlizzaere   l’header   Access-Control-Max-Age
  • 48. considerare  che  il  tu=o  può  essere   bypassato  con  un  HTTP  Response   spli`ng
  • 49. L’Origin può  essere  alterato,  per   cui  non  fare  affidamento  solo  su   quello
  • 50. Sandboxing U7lizzare  il  sandboxing  per  ges7re  iframe  con  contenu7  dove  non   abbiamo  controllo  per  o3eniamo  così  una  sandbox  rispe3o  l’origin,  form   e  script  disabilita7,  i  link  non  possono  uscire  dal  contesto,  trigger   automa7ci  disabilita7,  plugin  disabilita7,  così  da  isolare  eventuali  Widget   o  Mashup  malevoli  e  mi7gare  il  Clickjacking/UI  Redressing.
  • 51. uBlizzare  l’a=ributo  sandbox negli  iframe  che  possono  contere   contento  sul  quale  non  abbiamo   controllo
  • 52. è  possibile  abilitare  un  controllo   granulare  su  form,  pop-­‐up,  same-­‐ origin,  script  e  gesBone  del   puntatore
  • 53. Web  Workers Nuova  funzionalità  di  HTML5,  perme3e  di  eseguire  porzioni  di  codice   Javascript  in  maniera  asincrona,  al  ne3o  del  codice  visualizzato.  Anche  se   non  hanno  accesso  al  DOM  possono  comunque  eseguire  richieste  XHR  ed   essere  abusaB  sfru=ando  eccessivamente  la  CPU  per  eseguire  operazioni   di  calcolo  distribuito  (es.  password  cracking)  oppure  DoS  verso  l’utente   mobile  (es.  consumando  velocemente  la  ba3eria).
  • 54. validare  sempre  i  daB,  sia  per   evitare  che  sia  possibile  inserire   codice  malevolo  nel  worker...
  • 55. ...sia  per  evitare  DOM  XSS  (es.  non   usare  eval()  nei  parametri   passaB)
  • 56. Thick  Features Funzionalità  di  HTML5  che  perme3ono  di  integrarsi  con  il  disposi7vo   u7lizzato  dall’utente  come  la  Goloca7on  API  e  File  API.  Le  problema7che   possono  essere  l’abuso  della  funzionalità  -­‐  anche  tramite  ClickJacking/UI   Redressing,  CSRF  o  XSS  -­‐  per  so=rarre  informazioni/file  agli  utenB.  
  • 57. anche  se  l’RFC  prevede  la  conferma   lato  UA,  prevedere  comunque  un   interazione  prima  dell’invio  dei  daB
  • 58. HTTP  Header  ProtecBon Se  le  minacce  sono  sul  client,  le  protezioni  sono  negli  HTTP  Header.  I  vari   vendor  hanno  proposto  svaria7  header  di  protezione  che  si  sono  man   mano  diffusi.  Sono  disponibili  header  come  protezione  accessoria  contro  i   Cross  Site  ScripBng,  Clickjacking/UI  Redressing  e  problemaBche  nel   livello  di  trasporto.
  • 59. X-Content-Type-Options: nosniff per  forzare  il  mime-­‐type   specificato  ed  evitare    XSS
  • 60. X-XSS-Protection: 1; mode=block  per  abilitare  le   protezioni  anB-­‐XSS  del  browser
  • 61. X-Frame-Options: deny  per   evitare  il  ClickJacking/UI  Redressing
  • 62. Strict-Transport- Security: max-age=60000; includeSubDomains  per  evitare   problemaBche  nel  livello  di   trasporto