• Acasă
  • Despre noi
  • Autori
  • Mărturii
  • Arhivă
  • Trimite Articol
  • Contact

WORLDIT

Lumea în 1 și 0.

  • Știri
    • Tehnologie
    • Tehnologie mobilă
    • Securitate
    • Developers
    • Știință
    • Benzi desenate
    • Jocuri
    • Intern
  • Tehnic
    • Browser
    • C#
    • C/C++
    • Challenge
    • HTML/CSS
    • Javascript, Ajax, jQuery
    • Open Source
    • PHP
    • Python
    • Securitate IT
    • Socializare
    • WordPress
    • Altele
  • Recenzii
  • Interviuri
  • Evenimente

JSLR – biblioteca Javascript ce este începutul sfârșitului vulnerabilităților XSS

9
  • Publicat de Andrei Avădănei
  • în Browser · Challenge · HTML/CSS · Javascript, Ajax, jQuery · Tehnic
  • — 18 iun., 2012 at 9:40 am

JSLR, termen derivat din ASLR (Address space layout randomization) este o abordare ce presupune randomizarea unor tag-uri și atribute astfel încât atacatorul să nu poate injecta cod HTML/Javascript malițios fără a știe token-ul generat. Este foarte ușor de implementat pentru că orice website poate fi rescris, adăugând un id ce confirmă validitatea tag-ului. De asemenea, o procedură similară trebuie folosită și pentru atributele tagurilor.

Biblioteca interceptează codul HTML înainte de a fi randat de browser, folosind un element plaintext, DOM-ul este folosit pentru a crea o copie a HTML-ului înainte de a adăuga codul înapoi. Se activează JSLR pentru a verifica integritatea fiecărui atribut și tag.

Exemplu de fișier protejat de JSLR

Este foarte important să adaugi X-Frame-Options și X-XSS-Protection: 1;mode=block pentru a fi siguri că atacatorul nu modifică comportamentul bibliotecii JSLR.

<?php
require('jslr.inc.php');
$JSLR = new JSLR;
?>
<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>JSLR
<script src="<?php $JSLR->getWebPath()?>jslr.js" type="text/javascript"></script>
<script type="text/javascript">
try {
JSLR=JSLR('<?php $JSLR->getID()?>','<?php $JSLR->getSingleQuoteID()?>','<?php echo $JSLR->doubleQuote?>');
} catch(e) {
document.write('<plaintext>Error unable to find JSLR. Check the web path.');
}
</script>
</head>
<body>
<iframe <?php $JSLR->getID()?>_src="http://www.microsoft.com/"></iframe>
</body>

</html>

Limitări

În varianta existentă, JSLR poate rula doar în browserele moderne, orice browser ce nu suportă evenimentul DOMContentLoaded nu va putea rula, dar această limitare va fi scoasă pe parcurs iar JSLR va putea fi folosit pentru orice browser până la IE6. Evident, că browserele trebuie să ofere libertatea ca biblioteca să aibă acces complet asupra DOM-ului. De asemenea, orice injecție deasupra scriptului JSLR va face bypass la protecție pentru că vectorul va fi randat înainte că JSLR să apuce să-l protejeze.

Puțin rafinată aceasta abordare și ar putea fi sfârșitul atacurilor XSS clasice. Biblioteca e Open Source așa că ideile voastre ar putea fi foarte ușor integrate în următoarele versiuni oficiale, dacă simțiți nevoia, evident, să contribuiți. Mai multe detalii tehnice aici iar un demo aici.

Etichete: atacuri xssbiblioteca javascriptbrowser securityexploit xssInternet Securityjavascriptjslrsecuritate webvulnerabilitatixss

— Andrei Avădănei a scris 1246 articole

Andrei scrie pe worldit.info din vara lui 2011. Este fondatorul Asociatiei Centrul de Cercetare in Securitate Informatica din Romania - CCSIR si coordoneaza DefCamp, cea mai importanta conferinta de securitate informatica & hacking din Europa Centrala si de Est. Andrei ofera in cadrul Bit Sentinel servicii de securitate informatica, penetration testing, security management, recuperarea de pe urma unui atac cibernetic, training-uri si workshop-uri.

  • Articolul anterior Benzi desenate #26 – Cum să scrii cod?
  • Articolul următor CAESAR HiTech reunește pe 6 iulie la aceeași masă actori din sfera IT și securitate cibernetică

9 Comentarii

  1. em spune:
    iunie 18, 2012 la 10:37 am

    Orice browser dupa IE6.

    • Andrei Avădănei spune:
      iunie 18, 2012 la 1:54 pm

      Eu am privit browserele intr-o scara progresiva rasturnata deci merge. 🙂

  2. Roland spune:
    iunie 18, 2012 la 2:21 pm

    O alta librarie care poate ajuta impotriva unor atacuri prin Javascript este js.js. Acesta este un interpretor de Javascript, facut in Javascript. Ruleaza de vreo 200 de ori mai incet decat SpiderMonkey, dar este complet izolat de pagina web, deci what happens in js.js, stays in js.js (unless you interact with it :)) )

    • Andrei Avădănei spune:
      iunie 18, 2012 la 2:23 pm

      @Roland Dar cookie-urile cine le controleaza in js.js?

  3. Roland spune:
    iunie 18, 2012 la 2:43 pm

    js.js nu cred că e orientată împotriva atacurilor de tip XSS, pentru că nu controlează ce injectezi într-un element DOM, ci mai degrabă te ajută să poți executa remote Javascript safely. Un eval() mai safe, de exemplu pentru jsonp sau chestii de genul.

  4. Hertz spune:
    iunie 19, 2012 la 12:07 am

    Un fel de JavaScript + plus un token anti CSRF? 🙂

  5. Marian spune:
    iunie 20, 2012 la 12:10 pm

    @Roland: „The compiled version of js.js is 3MB and only 594KB after gzip compression. ” De ce as baga inca o jumatate de mega content in pagina ? Nu mai bine ne sanitizam variabilele ?

    Unde este era aia in care imi parea mult sa am 30 kb per page ….

  6. shaggi spune:
    iunie 21, 2012 la 4:27 pm

    un atac de tip xss poate fi considerat si construirea unui scampage ce nu necesita js:)

    • Andrei Avădănei spune:
      iunie 21, 2012 la 7:54 pm

      Hmm, deja acolo e o alta discutie. Nu poti sa spui ca scam page-urile sunt unul si acelasi lucru. Plus ca, biblioteca are protectie pentru tag-uri, deci implicit si pentru HTML.


  • Facebook

    WorldIT.info
  • Ultimele Atacuri Cibernetice din Romania – RO Hacked

    [wp_rss_retriever url="https://rohacked.bit-sentinel.com/feed/" excerpt="none" items="5" read_more="false" new_window="true" thumbnail="false" cache="0"] RO Hacked este registrul atacurilor cibernetice din România.
  • Caută

  • Articole Recomandate

    • Recent Posts
    • Tags
    • Număr record de participanți la DefCamp 2015, cel mai important eveniment dedicat securității cibernetice din Europe Centrala si de Estdecembrie 2, 2015
    • La DefCamp 2015 vei afla prin ce tehnici pot fi evitate măsurile de securitate ale sistemelor informatice criticeoctombrie 16, 2015
    • Ultima sansa sa rezervi bilete de tip Early Bird la DefCamp 2015septembrie 1, 2015
    • 15 sfaturi despre cum poti deveni un programator bun venite de la specialisti romaniaugust 4, 2015
    • algoritmica Android antivirus Apple Avadanei Andrei benzi desenate BitDefender blog browser C++ Chrome concurs eveniment Facebook Firefox Google google chrome hacking html5 infografic informatica internet Internet Explorer IT javascript linux Microsoft Mozilla Firefox online PHP programare retea sociala review Romania securitate Tehnologie Twitter web Windows Windows 7 Wordpress WorldIT worldit.info Yahoo! YouTube
  • mai 2022
    L Ma Mi J V S D
     1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031  
    « dec.    
  • Link-uri Sponsorizate

    • laptop second hand

    • Calculatoare Second Hand

    • cod voucher pc garage

  • Home
  • Tehnic
  • Browser
  • JSLR – biblioteca Javascript ce este începutul sfârșitului vulnerabilităților XSS
  • Important

    • Bit Sentinel
    • Centrul de Cercetare în Securitate Informatică din România
    • DefCamp
  • Prieteni

    • BetiT.ro
    • bijuterii handmade
    • Computerica | Resurse gratuite PC
    • Descopera.org
    • Gadgeturi si IT – Giz.ro
  • Prieteni

    • PC – Config
    • RO Hacked
    • Stiri IT

Copyright © 2009-2014 WORLDIT. Toate drepturile Rezervate.
Termeni și condiții | Contact | Licența Creative Commons