laquête!du!code!source! …...approche!boîtenoirevs boîte!blanche! top10web$ tests d’intrusion$...
TRANSCRIPT
![Page 1: Laquête!du!code!source! …...Approche!boîtenoireVS boîte!blanche! Top10Web$ Tests d’intrusion$ Analyseducode A1!X!Injec7on! ++ +++ A2!–Violaon!de!Session!/! Authen7ficaon](https://reader035.vdocuments.us/reader035/viewer/2022063002/5f3260bee53de314855d8b2e/html5/thumbnails/1.jpg)
Par Sébas)en Gioria et Freddy Mallet
La quête du code source maintenable, fiable et sécurisé
![Page 2: Laquête!du!code!source! …...Approche!boîtenoireVS boîte!blanche! Top10Web$ Tests d’intrusion$ Analyseducode A1!X!Injec7on! ++ +++ A2!–Violaon!de!Session!/! Authen7ficaon](https://reader035.vdocuments.us/reader035/viewer/2022063002/5f3260bee53de314855d8b2e/html5/thumbnails/2.jpg)
Sébas7en Gioria
• h:p://www.google.fr/#q=sebas7en gioria • Innova7on and Technology @Advens && Applica7on
Security Expert
• OWASP France Leader & Founder & Evangelist, OWASP ISO Project & OWASP SonarQube Project Leader
• Applica7on Security group leader for the CLUSIF
• Proud father of youngs kids trying to hack my digital life. @Spoint et @OWASP_France [email protected]
![Page 3: Laquête!du!code!source! …...Approche!boîtenoireVS boîte!blanche! Top10Web$ Tests d’intrusion$ Analyseducode A1!X!Injec7on! ++ +++ A2!–Violaon!de!Session!/! Authen7ficaon](https://reader035.vdocuments.us/reader035/viewer/2022063002/5f3260bee53de314855d8b2e/html5/thumbnails/3.jpg)
Freddy Mallet
• Créateur de la plateforme SonarQube • Co-‐fondateur de la société SonarSource • @FreddyMallet • [email protected]
![Page 4: Laquête!du!code!source! …...Approche!boîtenoireVS boîte!blanche! Top10Web$ Tests d’intrusion$ Analyseducode A1!X!Injec7on! ++ +++ A2!–Violaon!de!Session!/! Authen7ficaon](https://reader035.vdocuments.us/reader035/viewer/2022063002/5f3260bee53de314855d8b2e/html5/thumbnails/4.jpg)
Agenda
• Enjeux autour de l’analyse du code source • Tout ce que le code source peut dire • Mise en œuvre méthodologique
• SonarQube / projet OWASP / Demo
4
![Page 5: Laquête!du!code!source! …...Approche!boîtenoireVS boîte!blanche! Top10Web$ Tests d’intrusion$ Analyseducode A1!X!Injec7on! ++ +++ A2!–Violaon!de!Session!/! Authen7ficaon](https://reader035.vdocuments.us/reader035/viewer/2022063002/5f3260bee53de314855d8b2e/html5/thumbnails/5.jpg)
Enjeux autour de l’analyse du code source
![Page 6: Laquête!du!code!source! …...Approche!boîtenoireVS boîte!blanche! Top10Web$ Tests d’intrusion$ Analyseducode A1!X!Injec7on! ++ +++ A2!–Violaon!de!Session!/! Authen7ficaon](https://reader035.vdocuments.us/reader035/viewer/2022063002/5f3260bee53de314855d8b2e/html5/thumbnails/6.jpg)
Enjeux autour de l’analyse du code source
![Page 7: Laquête!du!code!source! …...Approche!boîtenoireVS boîte!blanche! Top10Web$ Tests d’intrusion$ Analyseducode A1!X!Injec7on! ++ +++ A2!–Violaon!de!Session!/! Authen7ficaon](https://reader035.vdocuments.us/reader035/viewer/2022063002/5f3260bee53de314855d8b2e/html5/thumbnails/7.jpg)
Beaucoup de défauts pouvant conduire à des problèmes de maintenabilité, de stabilité et de
sécurité peuvent être détectés automa7quement.
Et tout par7culièrement les plus sournois
![Page 8: Laquête!du!code!source! …...Approche!boîtenoireVS boîte!blanche! Top10Web$ Tests d’intrusion$ Analyseducode A1!X!Injec7on! ++ +++ A2!–Violaon!de!Session!/! Authen7ficaon](https://reader035.vdocuments.us/reader035/viewer/2022063002/5f3260bee53de314855d8b2e/html5/thumbnails/8.jpg)
Approche boîte noire VS boîte blanche
Top10 Web Tests d’intrusion Analyse du code A1 -‐ Injec7on ++ +++
A2 – Viola7on de Session / Authen7fica7on
++ +
A3 – Cross Site Scrip7ng +++ +++ A4 – Références Directes + +++
A5 – Mauvaise configura7on + ++ A6 – Exposi7on de données ++ + A7 – Probleme d’habilita7on
fonc7onnelle + +
A8 -‐ CSRF ++ + A9 – U7lisa7on de Composants
vulnérables +++
A10 – Redirec7on et transferts + +
![Page 9: Laquête!du!code!source! …...Approche!boîtenoireVS boîte!blanche! Top10Web$ Tests d’intrusion$ Analyseducode A1!X!Injec7on! ++ +++ A2!–Violaon!de!Session!/! Authen7ficaon](https://reader035.vdocuments.us/reader035/viewer/2022063002/5f3260bee53de314855d8b2e/html5/thumbnails/9.jpg)
L’ analyse de code ou le test d’intrusion du point de vue du développeur ?
![Page 10: Laquête!du!code!source! …...Approche!boîtenoireVS boîte!blanche! Top10Web$ Tests d’intrusion$ Analyseducode A1!X!Injec7on! ++ +++ A2!–Violaon!de!Session!/! Authen7ficaon](https://reader035.vdocuments.us/reader035/viewer/2022063002/5f3260bee53de314855d8b2e/html5/thumbnails/10.jpg)
L’évolu7on du développement logiciel
Vi / Emacs
Makefile
VersionControl
BuildingTools
TicketTracking
ContinuousIntegration
RefactoringFrom the IDE
Unit Tests
ContinuousInspection
![Page 11: Laquête!du!code!source! …...Approche!boîtenoireVS boîte!blanche! Top10Web$ Tests d’intrusion$ Analyseducode A1!X!Injec7on! ++ +++ A2!–Violaon!de!Session!/! Authen7ficaon](https://reader035.vdocuments.us/reader035/viewer/2022063002/5f3260bee53de314855d8b2e/html5/thumbnails/11.jpg)
Tout ce que le code source peut dire
![Page 12: Laquête!du!code!source! …...Approche!boîtenoireVS boîte!blanche! Top10Web$ Tests d’intrusion$ Analyseducode A1!X!Injec7on! ++ +++ A2!–Violaon!de!Session!/! Authen7ficaon](https://reader035.vdocuments.us/reader035/viewer/2022063002/5f3260bee53de314855d8b2e/html5/thumbnails/12.jpg)
Les principaux types de défauts
Maintenabilité ???
Fiabilité Multi-threadings, null pointers, buffer overflows, unclosed resources, …
Sécurité OWASP Top 10, SANS TOP 25, …
![Page 13: Laquête!du!code!source! …...Approche!boîtenoireVS boîte!blanche! Top10Web$ Tests d’intrusion$ Analyseducode A1!X!Injec7on! ++ +++ A2!–Violaon!de!Session!/! Authen7ficaon](https://reader035.vdocuments.us/reader035/viewer/2022063002/5f3260bee53de314855d8b2e/html5/thumbnails/13.jpg)
Exemples liés à la sécurité
• Injec7on SQL, LDAP, … • Login/mot de passe en dur • U7lisa7on d’algorithmes de hashage trop
faibles: MD5, SHA1, … • Injec7on de code • Redirec7on web vers un site inconnu • …
![Page 14: Laquête!du!code!source! …...Approche!boîtenoireVS boîte!blanche! Top10Web$ Tests d’intrusion$ Analyseducode A1!X!Injec7on! ++ +++ A2!–Violaon!de!Session!/! Authen7ficaon](https://reader035.vdocuments.us/reader035/viewer/2022063002/5f3260bee53de314855d8b2e/html5/thumbnails/14.jpg)
Exemples liés à la fiabilité
• Déréférencement de pointeurs null • Débordement d’en7er • Condi7ons invalides • Assigna7on d’une variable à elle même • Ressources non libérées • Assigna7on d’une valeur jamais u7lisée • …
![Page 15: Laquête!du!code!source! …...Approche!boîtenoireVS boîte!blanche! Top10Web$ Tests d’intrusion$ Analyseducode A1!X!Injec7on! ++ +++ A2!–Violaon!de!Session!/! Authen7ficaon](https://reader035.vdocuments.us/reader035/viewer/2022063002/5f3260bee53de314855d8b2e/html5/thumbnails/15.jpg)
Quid de la maintenabilité ?
• ? • ? • ? • ? • ? • ?
![Page 16: Laquête!du!code!source! …...Approche!boîtenoireVS boîte!blanche! Top10Web$ Tests d’intrusion$ Analyseducode A1!X!Injec7on! ++ +++ A2!–Violaon!de!Session!/! Authen7ficaon](https://reader035.vdocuments.us/reader035/viewer/2022063002/5f3260bee53de314855d8b2e/html5/thumbnails/16.jpg)
Duplica7on de code
Que choisir entre la peste et le choléra ?
![Page 17: Laquête!du!code!source! …...Approche!boîtenoireVS boîte!blanche! Top10Web$ Tests d’intrusion$ Analyseducode A1!X!Injec7on! ++ +++ A2!–Violaon!de!Session!/! Authen7ficaon](https://reader035.vdocuments.us/reader035/viewer/2022063002/5f3260bee53de314855d8b2e/html5/thumbnails/17.jpg)
Mauvaise distribu7on de la complexité
Vaut-‐il mieux une méthode d’une complexité de 30 ou 10 méthodes d’une complexité de 3 ?
![Page 18: Laquête!du!code!source! …...Approche!boîtenoireVS boîte!blanche! Top10Web$ Tests d’intrusion$ Analyseducode A1!X!Injec7on! ++ +++ A2!–Violaon!de!Session!/! Authen7ficaon](https://reader035.vdocuments.us/reader035/viewer/2022063002/5f3260bee53de314855d8b2e/html5/thumbnails/18.jpg)
Pas ou peu de tests unitaires
![Page 19: Laquête!du!code!source! …...Approche!boîtenoireVS boîte!blanche! Top10Web$ Tests d’intrusion$ Analyseducode A1!X!Injec7on! ++ +++ A2!–Violaon!de!Session!/! Authen7ficaon](https://reader035.vdocuments.us/reader035/viewer/2022063002/5f3260bee53de314855d8b2e/html5/thumbnails/19.jpg)
Mauvais Design
Quel classe/package est responsable de quoi ?
![Page 20: Laquête!du!code!source! …...Approche!boîtenoireVS boîte!blanche! Top10Web$ Tests d’intrusion$ Analyseducode A1!X!Injec7on! ++ +++ A2!–Violaon!de!Session!/! Authen7ficaon](https://reader035.vdocuments.us/reader035/viewer/2022063002/5f3260bee53de314855d8b2e/html5/thumbnails/20.jpg)
Non respect des standards
Comme par exemple la stratégie de ges7on des excep7ons
![Page 21: Laquête!du!code!source! …...Approche!boîtenoireVS boîte!blanche! Top10Web$ Tests d’intrusion$ Analyseducode A1!X!Injec7on! ++ +++ A2!–Violaon!de!Session!/! Authen7ficaon](https://reader035.vdocuments.us/reader035/viewer/2022063002/5f3260bee53de314855d8b2e/html5/thumbnails/21.jpg)
Pas ou peu de commentaires
Ce:e expression régulière “match” quoi par exemple ?
![Page 22: Laquête!du!code!source! …...Approche!boîtenoireVS boîte!blanche! Top10Web$ Tests d’intrusion$ Analyseducode A1!X!Injec7on! ++ +++ A2!–Violaon!de!Session!/! Authen7ficaon](https://reader035.vdocuments.us/reader035/viewer/2022063002/5f3260bee53de314855d8b2e/html5/thumbnails/22.jpg)
Quid de la maintenabilité
• Duplica7on de code • Mauvaise distribu7on de la complexité • Peu ou pas de tests unitaires • Mauvais design • Non respect des standards • Pas ou peu de commentaires
![Page 23: Laquête!du!code!source! …...Approche!boîtenoireVS boîte!blanche! Top10Web$ Tests d’intrusion$ Analyseducode A1!X!Injec7on! ++ +++ A2!–Violaon!de!Session!/! Authen7ficaon](https://reader035.vdocuments.us/reader035/viewer/2022063002/5f3260bee53de314855d8b2e/html5/thumbnails/23.jpg)
Mise en oeuvre méthodologique
![Page 24: Laquête!du!code!source! …...Approche!boîtenoireVS boîte!blanche! Top10Web$ Tests d’intrusion$ Analyseducode A1!X!Injec7on! ++ +++ A2!–Violaon!de!Session!/! Authen7ficaon](https://reader035.vdocuments.us/reader035/viewer/2022063002/5f3260bee53de314855d8b2e/html5/thumbnails/24.jpg)
Approche tradi7onnelle
• Retour trop tardif • Manque d’implica)on des
développeurs • Pushback de ces derniers • Pas de réelle douane
applica7ve • Ou)ls, processus et personnes
différentes pour chasser les différents types de défauts
![Page 25: Laquête!du!code!source! …...Approche!boîtenoireVS boîte!blanche! Top10Web$ Tests d’intrusion$ Analyseducode A1!X!Injec7on! ++ +++ A2!–Violaon!de!Session!/! Authen7ficaon](https://reader035.vdocuments.us/reader035/viewer/2022063002/5f3260bee53de314855d8b2e/html5/thumbnails/25.jpg)
Comment rembourser la de:e ?
• Le montant total peut être déprimant • Faut-‐il demander un budget dédié ? • Le risque d’injec)on d’une régression
fonc)onnelle existe • Ce n’est pas très “fun” !
![Page 26: Laquête!du!code!source! …...Approche!boîtenoireVS boîte!blanche! Top10Web$ Tests d’intrusion$ Analyseducode A1!X!Injec7on! ++ +++ A2!–Violaon!de!Session!/! Authen7ficaon](https://reader035.vdocuments.us/reader035/viewer/2022063002/5f3260bee53de314855d8b2e/html5/thumbnails/26.jpg)
Ce qu’il faut changer
• La boucle de rétroac7on doit être beaucoup plus rapide
• Une douane applica7ve non négociable doit exister
• Les développeurs doivent être au coeur du processus
• Le coût doit être non significa7f • L’approche doit être unifiée
![Page 27: Laquête!du!code!source! …...Approche!boîtenoireVS boîte!blanche! Top10Web$ Tests d’intrusion$ Analyseducode A1!X!Injec7on! ++ +++ A2!–Violaon!de!Session!/! Authen7ficaon](https://reader035.vdocuments.us/reader035/viewer/2022063002/5f3260bee53de314855d8b2e/html5/thumbnails/27.jpg)
Se focaliser sur la fuite
![Page 28: Laquête!du!code!source! …...Approche!boîtenoireVS boîte!blanche! Top10Web$ Tests d’intrusion$ Analyseducode A1!X!Injec7on! ++ +++ A2!–Violaon!de!Session!/! Authen7ficaon](https://reader035.vdocuments.us/reader035/viewer/2022063002/5f3260bee53de314855d8b2e/html5/thumbnails/28.jpg)
![Page 29: Laquête!du!code!source! …...Approche!boîtenoireVS boîte!blanche! Top10Web$ Tests d’intrusion$ Analyseducode A1!X!Injec7on! ++ +++ A2!–Violaon!de!Session!/! Authen7ficaon](https://reader035.vdocuments.us/reader035/viewer/2022063002/5f3260bee53de314855d8b2e/html5/thumbnails/29.jpg)
SonarQube OWASP Demo
![Page 30: Laquête!du!code!source! …...Approche!boîtenoireVS boîte!blanche! Top10Web$ Tests d’intrusion$ Analyseducode A1!X!Injec7on! ++ +++ A2!–Violaon!de!Session!/! Authen7ficaon](https://reader035.vdocuments.us/reader035/viewer/2022063002/5f3260bee53de314855d8b2e/html5/thumbnails/30.jpg)
SonarQube
• Intégrable dans la chaine de build • Support de nombreux languages: C/C++, Java, PHP, JavaScript, COBOL, C#, PL/SQL, …
• Support du concept de douane applica7ve • Extensible: nombreux plugins • Ges7on temporelle des défauts • Open-‐Source
![Page 31: Laquête!du!code!source! …...Approche!boîtenoireVS boîte!blanche! Top10Web$ Tests d’intrusion$ Analyseducode A1!X!Injec7on! ++ +++ A2!–Violaon!de!Session!/! Authen7ficaon](https://reader035.vdocuments.us/reader035/viewer/2022063002/5f3260bee53de314855d8b2e/html5/thumbnails/31.jpg)
SonarQube pour la sécurité applica7ve
• S’intègre dans le SDLC – liens possible avec Jenkins/Hudson/Bamboo – Repor7ng sur les défauts – Possibilité d’ajouter des règles (en XPath)
• Dispose de règles perme:ant de couvrir – non respect des regles de codage – découverte de bugs sécurité(XSS, SQl-‐Injec7on)
![Page 32: Laquête!du!code!source! …...Approche!boîtenoireVS boîte!blanche! Top10Web$ Tests d’intrusion$ Analyseducode A1!X!Injec7on! ++ +++ A2!–Violaon!de!Session!/! Authen7ficaon](https://reader035.vdocuments.us/reader035/viewer/2022063002/5f3260bee53de314855d8b2e/html5/thumbnails/32.jpg)
SonarQube pour la sécurité applica7ve
• Ce n’est pas un ou7l de revue de code ! – Il fonc7onne sur la viola7on de règles; détec7on de pa:erns uniquement
• Il 7re toute sa puissance – si vous disposez d’une poli7que de Secure Coding – si vous démarrer un nouveau projet
• Il n’est pas “tres” orienté sécurité actuellement – peu de plugins de sécurité – pas de profils type pour les viola7ons de secure coding.
![Page 33: Laquête!du!code!source! …...Approche!boîtenoireVS boîte!blanche! Top10Web$ Tests d’intrusion$ Analyseducode A1!X!Injec7on! ++ +++ A2!–Violaon!de!Session!/! Authen7ficaon](https://reader035.vdocuments.us/reader035/viewer/2022063002/5f3260bee53de314855d8b2e/html5/thumbnails/33.jpg)
Le projet OWASP SonarQube
• Collabora7on OWASP / SonarSource – Me:re a disposi7on de la communauté un ensemble de règles, profils, et plugins pour analyser la sécurité avec SonarQube.
• Plusieurs objec7fs prévus – Lier les règles au référen7el MITRE CWE – Tagguers les règles suivant les catégories OWASP Top 10 2013
– Développement de nouvelles règles “sécurité” – Nouveau widget pour offrir une perspec7ve “sécurité” sur le code source
– Etendre ces objec7fs à tous les plugins langage
![Page 34: Laquête!du!code!source! …...Approche!boîtenoireVS boîte!blanche! Top10Web$ Tests d’intrusion$ Analyseducode A1!X!Injec7on! ++ +++ A2!–Violaon!de!Session!/! Authen7ficaon](https://reader035.vdocuments.us/reader035/viewer/2022063002/5f3260bee53de314855d8b2e/html5/thumbnails/34.jpg)
![Page 35: Laquête!du!code!source! …...Approche!boîtenoireVS boîte!blanche! Top10Web$ Tests d’intrusion$ Analyseducode A1!X!Injec7on! ++ +++ A2!–Violaon!de!Session!/! Authen7ficaon](https://reader035.vdocuments.us/reader035/viewer/2022063002/5f3260bee53de314855d8b2e/html5/thumbnails/35.jpg)
35
@Spoint@FreddyMallet@OWASPSonarQube@OWASP_France