Naviguer sur Internet. Probablement l'une des tâches les plus complexes et les plus périlleuses que l'homme moderne accomplisse pourtant quotidiennement. Dans cette quête, il convient de s'équiper des meilleurs outils. Pour votre confort et votre sécurité à bord, voyons ce que le navigateur Google Chrome implémente dans les domaines de l’interprétation JavaScript et HTML, de la défense en profondeur (sandboxing), de l'extensibilité, et de la cryptographie.
1. JavaScript
1.1 Compilation JIT
Chrome fut le premier navigateur à proposer un saut quantique dans les performances JavaScript avec la compilation JIT : il s'agit du projet « V8 », également disponible en version standalone [1].
Il s'agit de transformer le code JavaScript présent sur la page Web en code natif (Intel x86) qui va s'exécuter dans le navigateur sans garde-fou. On peut comprendre que l'expert en sécurité tressaille à cette idée.
En premier lieu le compilateur JIT doit produire du code valide, y compris (et surtout) après optimisation. Cela peut sembler une évidence, mais toutes les machines virtuelles existantes ont produit des contre-exemples…
- NET : dans un cas précis d'accès à un tableau, le code natif généré ne préserve pas les registres RSI et RDI, contrairement à ce qui est attendu par l'appelant. C'est la faille MS13-052 [2].
- Java : les nombreux crashs connus dans la méthode Node::rematerialize() sont généralement...
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première
http://dev.chromium.org/developers/design-documents
[1] https://code.google.com/p/v8/
[2] http://weblog.ikvm.net/default.aspx?date=2013-07-10
[3] https://bugs.openjdk.java.net/issues/?jql=text%20~%20%22rematerialize%22
[4] https://code.google.com/p/google-security-research/issues/detail?id=106
[5] https://en.wikipedia.org/wiki/JIT_spraying
[6] http://matasano.com/research/Attacking_Clientside_JIT_Compilers_Paper.pdf
[7] http://www.safetyresearch.net/Library/BarrSlides_FINAL_SCRUBBED.pdf
[8] http://research.google.com/pubs/pub35162.html
[9] http://dinaburg.org/bitsquatting.html
[10] https://github.com/CMU-SAFARI/rowhammer
[11] http://blog.chromium.org/2012/05/tale-of-two-pwnies-part-1.html
[12] http://blog.chromium.org/2012/06/tale-of-two-pwnies-part-2.html
[13] https://www.nsa.gov/ia/_files/factsheets/i733-006r-2008.pdf
[14] http://www.chromium.org/developers/design-documents/sandbox
[15] http://googleprojectzero.blogspot.com/2014/10/did-man-with-no-name-feel-insecure.html
[16] http://googleprojectzero.blogspot.com/2014/11/project-zero-patch-tuesday-roundup.html
[18] http://peter.sh/experiments/chromium-command-line-switches/
[19] https://chrome.google.com/webstore/category/extensions
[20] https://developer.chrome.com/extensions/devguide
[21] http://www.chromium.org/developers/npapi-deprecation
[22] http://labs.bromium.com/2014/07/22/h1-2014-endpoint-exploitation-trends/
[23] http://www.chromium.org/nativeclient/
[24] http://events.ccc.de/congress/2008/Fahrplan/events/3023.en.html
[25] http://www.ssi.gouv.fr/IMG/pdf/B1_referentiel_standard.pdf
[26] https://en.wikipedia.org/wiki/Transport_Layer_Security#Attacks_against_TLS.2FSSL
[27] http://blog.fox-it.com/2011/11/21/rsa-512-certificates-abused-in-the-wild/
[28] https://www.eff.org/fr/observatory
[30] http://www.certificate-transparency.org/
[31] https://chromium.googlesource.com/chromium/chromium/+/trunk/net/http/transport_security_state.cc
[32] https://chromium.googlesource.com/chromium/chromium/+/trunk/net/cert/crl_set.cc
[33] https://github.com/agl/crlset-tools
[34] http://www.chromium.org/developers/design-documents/idn-in-google-chrome
[35] https://developers.google.com/safe-browsing/
[36] http://www.chromium.org/developers/design-documents/safebrowsing
[37] http://www.oxid.it/downloads/ca_setup.exe
[38] https://code.google.com/p/omaha/
[39] https://code.google.com/p/browsersec/wiki/Main
[40] http://lcamtuf.blogspot.com/2014/03/messing-around-with-download.html