Loading search data...

Devops votre priorité c’est la sécurité!

Souvent laissée de coté, voir oubliée, la sécurité devrait être intégré dans tous les projets Devops et ce dés le départ. En effet, les DevOps sont bien trop souvent concentré sur la livraison du code en prod, oubliant tous les principes de sécurité.

Il s’agit d'intégrer en amont dans vos pipelines des outils permettant de vérifier que vous ne laissez aucune faille exploitable. Donc il ne s’agit pas simplement de mettre en place des environnements de tests pour lancer des tests unitaires, des tests d’intégration, des tests d’acceptation mais d’intégrer des contrôles de sécurité.

Parmi les erreurs les plus courantes, on retrouve:

  • de réutiliser du code tiers sans vraiment en contrôler le contenu
  • laisser des secrets dans les repositories
  • d’utiliser les configurations par défaut des applications
  • d'utiliser de nouveaux outils sans en connaître les possibilités et failles éventuelles
  • ou de ne pas protéger suffisamment les outils et l’infrastructure DevOps.

Quels outils sont à notre disposition pour contrôler le code ?

Je pense que vous avez déjà parcouru la table périodique du devops.

Non. Mais comment ça?

Vu le rythme où des nouveaux outils devOps sortent, difficile de rester à jour. Ce tableau va vous permettre d'identifier quels outils qui peuvent répondre à vos besoins et quels sont les plus facilement intégrable dans vos pipelines. Il est mis à jour régulièrement, et regroupe à ce jour plus d’une centaine d’applications.

Que propose t’il pour la sécurité ?

On les retrouve en cliquant sur sécurité, en bleu dans le tableau et peuvent être les regroupé en 3 familles :

  • SAST: Static Application Security Testing (Analyse de code statique des applications)
  • DAST: Dynamic Application Security Testing (Tests dynamiques de sécurité des applications)
  • SCA: Software Composition Analysis (Analyse de composition logicielle)

SAST : Les analyseurs de code statique

L’analyse statique consiste à parcourir le code source pour vérifier s’il respecte un ensemble de règles pour y déceler de potentielles vulnérabilités, bugs, code dupliqué, …

Dans cette famille on retrouve :

Avantages:

  • Intervient au début du cycle de développement logiciel
  • Réduit les coûts de remédiation
  • Supporte de multiples langages
  • Facilite la montée en compétences des développeurs sur le développement sécurisé

Inconvénients:

  • Ne détecte pas les défauts à l’exécution
  • Peux être très long d’execution
  • Génère de nombreux faux positifs

DAST : Les outils de tests dynamiques de sécurité

Ces outils vont permettre de détecter des vulnérabilités et des faiblesses dans la sécurité des applications lors de leur exécution.

Dans cette famille on retrouve :

Avantages:

  • Ne dépend pas de la technologie applicative
  • Détecte des vulnérabilités d’exécution et d’environnement
  • Permet d’avoir une vison en mode attaquant donc formateur

Inconvénients:

  • Nécessite une application déployée
  • Intervient en fin de cycle de développement donc les coûts de correction sont plus élevé

SCA : Analyse de composition logicielle

Ces outils permettent de vérifier si les applications n’embarquent pas des composants connus comme vulnérables ou obsolètes.

Avantages:

  • Génère une cartographie des librairies utilisées
  • Mises à jour régulières des vulnérabilités

Inconvénients:

  • Génère des faux positifs

Quels outils pour contrôler la présence de secrets ?

Il est fréquent qu’on retrouve dans les dépôts de code source des jetons, des certificats, des mots de passe, …. Et pourtant il s’agit bien d'informations ultra sensibles.

On ne se rend pas compte des risques que l’on fait courir à l’entreprise, et ce même si le projet se trouve dans un projet privé. En effet, ce code source peut être diffusé dans de nombreux endroits en utilisant des outils tiers, voir des outils en ligne.

N’oubliez pas non plus que Git conserve la trace de toutes les modifications apportées! Même si le code est supprimé il restera dans l’historique.

Donc ces outils devrait être utilisé dés le départ de la conception d’un projet, et ce avant même qu’il soit poussé dans le repository.

Il existe des outils qui permettent de les détecter :

Quels outils pour contrôler des images docker ?

De plus en plus utilisés, car ils nous facilitent la tâche, les containers peuvent contenir des failles de sécurité ou ne pas respecter les bonnes pratiques. Je ne parle même pas de lancer un container sans en connaître le contenu. Pourquoi ?

Par défaut, Docker nécessite des privilèges root pour créer et gérer des conteneurs. Et oui ! Donc des scripts malveillants peuvent exploiter cette surface d’attaque. Il peut facilement, accéder à des données sensibles comme des fichiers de mots de passe, des certificats, ou même installer je ne sais quoi. Une solution simple à mettre en oeuvre : migrer vers podman qui lui est rootless.

Je vous déconseille aussi d’utiliser des images docker mais de plutôt les créer vous même en respectant ces règles:

  • Créer un user et l’utiliser USER en effet par défaut c’est root
  • Ne mapper que les ports utiles
  • N’utilisez pas privileged donnez juste les droits nécessaires avec les CAPibilities

Mais aussi je vous conseille :

  • d’interdire les communications entre containers (autorisées par défaut)
  • de ne pas lancer vos containers en tant que root
  • de pas y stocker des secrets mais plutôt les monter via des volumes avec buildkit.
  • de ne pas utiliser une registry inconnue.
  • de scanner régulièrement vos images avec des outils comme Clair, Trivy, Dagda à la recherche de failles.
  • Mettez en place un outil scrutant pendant leur execution pour y repérer des opération dangereuses : Falco ou Anchore Engine

Plus d’infos sur ce billet consacré à la sécurisation de Docker

Mots clés :

devops tutorials sonarqube

Si vous avez apprécié cet article de blog, vous pouvez m'encourager à produire plus de contenu en m'offrant un café sur Ko-Fi. Vous pouvez aussi passer votre prochaine commande sur amazon, sans que cela ne nous coûte plus cher, via ce lien. Je vous remercie de votre soutien