Hello from Diverse Coffee

Cyber des applis web et BDD

Bonjour à tous, sur cette page vous trouverez un certains nombre de ressources associées à l'UE UE F - Cyber des applis web et BDD. En partant des grandes familles de failles les plus classiques que l'on retrouve dans une application WEB, nous montrerons un certains nombre de bonnes pratiques permettant dans un dévelopement moderne de limiter le risque en utilisant des technologies embarquant par construction un certain nombre de contre-mesure. Nous prendrons le temps d'introduire en détail le fonctionnement d'une application Web moderne afin de bien comprendre les raisons intrinsèque de ces failles et les contre-mesures classiques mise en oeuvre.

Qui a recensé ces failles?

L’Open Web Application Security (OWASP) est un organisme à but non lucratif mondial qui milite pour l’amélioration de la sécurité des logiciels. L’objectif est d’informer les individus ainsi que les entreprises sur les risques liés à la sécurité des systèmes d’information. L’organisation fonctionne comme une communauté de professionnels qui partagent la même vision des choses.

L’OWASP propose un guide de développement pour les applications web dans lequel se trouve les bonnes pratiques à adopter lors de la phase de développement d’un projet web. Des outils d'audite sont aussi mis à disposition des internautes par cette même organisation.

Quelles sont ces failles?

Chaque année OWASP publie un classement qui recence les failles de sécurité les plus critiques. Voici le classement 2017 :

  • Injections : correspond au risque d’injection de commande (Système, SQL, Shellcode, ...)
  • Broken Authentification and Session Management : correspond au risque de casser ou de contourner la gestion de l’authentification et de la session. Comprend notamment le vol de session ou la récupération de mots de passe.
  • Cross-Site Scripting : correspond au XSS soit l’injection de code HTML dans une page, ce qui provoquent des actions non désirées sur une page Web. Les failles XSS sont particulièrement répandues parmi les failles de sécurités Web.
  • Broken Access Control : correspond aux failles de sécurité sur les droits des utilisateurs authentifiés. Les attaquants peuvent exploiter ces défauts pour accéder à d'autres utilisateurs.
  • Security Misconfiguration : correspond aux failles liées à une mauvaise configuration des serveurs Web, applications, base de données ou framework.
  • Sensitive Data Exposure : correspond aux failles de sécurité exposant des données sensibles comme les mots de passe, les numéros de carte de paiement ou encore les données personnelles et la nécessité de chiffrer ces données.
  • Insufficient Attack Protection : correspond à un manque de respect des bonnes pratiques de sécurité.
  • Cross-Site Request Forgery (CSRF) : correspond aux failles liées à l’exécution de requêtes à l’insu de l’utilisateur.
  • Using Components with Known Vulnerabilities : correspond aux failles liées à l’utilisation de composants tiers vulnérables.
  • Underprotected APIs : correspond au manque de sécurité d'applications utilisant des API (Applications Programming Interface).

En 2020, ils ont aussi ajouté

  • Insecure Deserialization. Insecure deserialization often leads to remote code execution. Even if deserialization flaws do not result in remote code execution, they can be used to perform attacks, including replay attacks, injection attacks, and privilege escalation attacks.
  • Insufficient Logging & Monitoring. Insufficient logging and monitoring, coupled with missing or ineffective integration with incident response, allows attackers to further attack systems, maintain persistence, pivot to more systems, and tamper, extract, or destroy data. Most breach studies show time to detect a breach is over 200 days, typically detected by external parties rather than internal processes or monitoring.

Cours

Séance 1

Utiliser des outis de mapping objet relationnel => Des contre-mesure contre les injections SQL by design

Mapping Objet Relationnel (Séance 1)

Cette séance a eu lieu en synchrone, vous trouverez ici des vidéos complémentaires si nécessaire.

JPA

Séance 2: Exposer une API Web, quel pratique, quel risque

Des servlets aux API Rest en Java

Séance 3: Web et Authentification: Comprendre la nation de fournisseur d'identité, les protocoles OAuth et OpenID Connect

Cette séance a eu lieu en synchrone, vous trouverez ici des slides complémentaires si nécessaire.

slides

Séance 4: Développement front: notion de composant Web, framework moderne comme Angular, une barrière face aux attaques de type (Cross-Site Scripting)

Cette séance a eu lieu en synchrone, vous trouverez ici des vidéos complémentaires si nécessaire.

Voici les slides

Séance 5: Secure Supply Chain

Comprendre les pratiques de CI/CD et les risques associés.

  • confusion de dépendances, dépendances avec risque, ...

Software Testing

A textbook complements the lectures with a complete verbatim.

Comprendre la notion de supply chain

Séance 6: Déploiement sécurisé

Déploiement des applications Web, comment pourquoi quels outils.

Le but de ce cours est de se familiariser avec lesproblématiques de déploiement d'une application Web, comprendre la notion de :

  • Reverse proxy
  • dns
  • server security,
  • ...
  1. Plan de ces démos
  2. Compilation / Optimisation de son application Web
  3. Déploiement du JS/HTML/CSS sur votre serveur
  4. Configuration du serveur Web (Nginx)
  5. Configuration du nom de domaine (sous domaine)
  6. Mise en place des certificats pour la connexion https (letsencrypt)
  7. Mise en place du reverse proxy pour le back (si nécessaire)
  8. Mise en place d'un firewall (UFW)
  9. Mise en place de fail2ban
  10. Automatisation à l'aide de bunkerized nginx https://github.com/bunkerity/bunkerized-nginx

Je vous rappelle d'autres vidéos bien faite sur le sujet pour compléter ce cours

Labs Labs (optionel) déploiement avec K8s

Projet

Le but du projet est de creuser une faille de sécurité par vous même. Le but sera de développer une application Web simple contenant une faille de sécurité (ou introduire une faille volontairement dans une application existante) puis utiliser une des techniques illustrées dans ce cours pour appliquer une contre-mesure associée à cette faille.

Pour aller plus loin

Les applications Web modernes sont de plus en plus modulaires du code jusqu'au déploiement (on parle d'architecture à micro-services). Leur déploiement se fait de plus en plus dans des environnements virtualisés dans lesquels des orchestrateurs de containers tel que K8S sont en charge à la fois du déploiement, de la gestion de la configuration mais aussi de la mise en place des chaines de certificats, de la mise en place des outils de surveillance, etc... Pour ceux qui voudraient aller plus loin, nous joignons un certains nombre de ressources complémentaires afin de comprendre ces pratiques de développement modernes.

Séquence 1: Introduction à la notion de cloud computing

Conclusion: Cloud native app, kesako ?

A cloud-native technology enables you to build and to run your scalable app in a dynamic environment: a public, private, or hybrid cloud.

Séquence 2: Some Facts on Modern Developments (Benoit Combemale)

State of the Practice (large-scale, polyglot, short term delivery…) DevOps: current scope, concepts and principles. (Benoit)

Séquence 3: De la notion de micro-services à la problématique de la gestion des APIs

Séquence 4: Les conteneurs docker: une solution unifiée pour faciliter le déploiement de vos applications modularisées sous forme de micro-services

Séquence 5: Infrastructure as code

Séquence 6 : La méthodologie 12factor

À l’époque actuelle, les logiciels sont régulièrement délivrés en tant que services : on les appelle des applications web (web apps), ou logiciels en tant que service (software-as-a-service). L’application 12 facteurs est une méthodologie pour concevoir des logiciels en tant que service qui :

  • Utilisent des formats déclaratifs pour mettre en oeuvre l’automatisation, pour minimiser le temps et les coûts pour que de nouveaux développeurs rejoignent le projet;
  • Ont un contrat propre avec le système d’exploitation sous-jacent, offrant une portabilité maximum entre les environnements d’exécution;
  • Sont adaptés à des déploiements sur des plateformes cloud modernes, rendant inutile le besoin de serveurs et de l’administration de systèmes;
  • Minimisent la divergence entre le développement et la production, ce qui permet le déploiement continu pour une agilité maximum;
  • et peuvent grossir verticalement sans changement significatif dans les outils, l’architecture ou les pratiques de développement;

La méthodologie 12 facteurs peut être appliquée à des applications écrites dans tout langage de programmation, et qui utilisent tout type de services externes (base de données, file, cache mémoire, etc.)

https://12factor.net/fr/

Séquence 7: Kubernetes (K8S)