The Web is Broken

{clap,mikispag}@google.com · Twitter @empijei, @mikispag
Roberto Clapis · Michele Spagnuolo · Codemotion Milan 2019

Introduzione

Lavoriamo in un'area specifica del team di sicurezza di Google (ISE) volto a migliorare la sicurezza dei prodotti attraverso progetti proattivi mirati per mitigare intere classi di bug.

  • A better solution: templating systems + safe APIs
    • Sistemi di template con scappamento contestuale rigoroso
      Java: Google Closure Template/Soy ○ Python: Google Closure Template/Soy, recent Django (avoid |safe) ○ Golang: safehtml/template, html/template ○ Angular (Angular2+): TypeScript with ahead of time compilation (AoT) ○ React: very difficult (but not impossible) to introduce XSS
    • Safe-by-default APIs
      Use wrapping "safe types" JS Trusted Types coming in Chromium
  • Spectre
    • Estrarre bit di informazioni tramite hardware problemi
    • Aggira la politica di Same-Origin perché la memoria è nello stesso processo ed è possibile accedervi tramite canali laterali
    • Richiede timer precisi, ma possono esserlo artigianale

  • Perdite tra siti (perdite XS)
    • Estrarre bit di informazioni tramite canali laterali
    • La pagina di attacco non ha bisogno di vedere il contenuto di origine incrociata, ma solo il tempo impiegato per il caricamento o errore che s i è verificato durante il tentativo di caricamento
    • La stessa politica di origine non protegge da questo tipo di attacchi
  • Same some cookies?
    • Meccanismo di mitigazione CSRF lato server semplice Set-Cookie: = ; SameSite = (Lax | Strict);
    • Lax consente la navigazione tra siti (impostazione predefinita da Chromium 80)
    • Strict impedisce ai cookie di essere inviato in qualsiasi azione tra siti

  • The need for Defense-in-Depth?
    • XSS nelle sue varie forme è ancora un grosso problema
    • La piattaforma Web non è sicura per impostazione predefinita
    • Alcuni XSS (soprattutto basati su DOM) sono molto difficili da prevenire
    • La difesa in profondità è molto importante nel caso di meccanismi di sicurezza primari fallire
  • Cross site request forgery (CSRF/XSRF)?
    • È stato lì fin dall'inizio.
    • È goffo rivolgersi
    • Richiede agli sviluppatori di aggiungere protezioni personalizzate sulla parte superiore della piattaforma
    • Normalmente risolto aggiungendo token nei parametri dei moduli nascosti
    • Non è chiaro cosa proteggere, quindi anche l'utilizzo dei framework potrebbe causare problemi

  • What is Cross-site scripting (XSS)?
    • Una vulnerabilità Web che consente agli autori di attacchi di eseguire script dannosi negli utenti browser nel contesto dell’origine vulnerabile
  • LATO SERVER
    • XSS riflesso: un utente malintenzionato può modificare parti di una pagona HTML visualizzate all’utente tramite fonti che controllano, come parametri di richiesta.
  • LATO CLIENT
    • XSS basato su DOM: utilizzo di metodi DOM non sicuri in JS durante la gestione di dati non attendibili.

CONCLUSIONE : Slides