From d4fc9ede85fcbb745d7d79696759e1ca9f102eed Mon Sep 17 00:00:00 2001 From: David Aparicio Date: Sat, 15 Apr 2023 22:54:50 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat:=20colors,=20faker.js=20depend?= =?UTF-8?q?ency=20outages=20and=20the=20tool=20Fimap?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- devoxxfr2023.md | 11 ++++++----- devoxxfr23/codelab.json | 2 +- devoxxfr23/index.html | 12 ++++++------ 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 05d6ca7..041c664 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ https://davidaparicio.gitlab.io/fr/codelabs/devoxxfr23/ https://github.com/davidaparicio/namecheck -## Lien vers le sypnosis de la demo 42Crunch +## Lien vers le synopsis de la demo 42Crunch https://github.com/davidaparicio/devsecops-workshop-devoxxfr23/blob/main/petstore/README.md diff --git a/devoxxfr2023.md b/devoxxfr2023.md index c17ba59..5860dbc 100644 --- a/devoxxfr2023.md +++ b/devoxxfr2023.md @@ -144,7 +144,7 @@ Enfin, pour illustrer une attaque d’ampleur préparée par un attaquant isolé Pour notre atelier, on vous laisse ces informations pour réaliser ces spécifications ultérieurement. -## Ex: Créer SECURITY.md +## Ex: SECURITY.md/txt Duration: 5 Après ces définitions, passons à la pratique en rédigeant un petit document `SECURITY.md` dans votre repôt de code. La "Security Policy", politique de sécurité décrit comment vous allez supporter vos versions et surtout permettre à vos utilisateur.trice.s de pouvoir remonter des bugs ou des failles de sécurité à travers un canal sécurisé avec vous, développeur.se. @@ -254,7 +254,7 @@ D’après O’Reilly, SaC (Security as Code) consiste à intégrer la sécurit D’une part, l’application de la configuration (HBAC, RBAC, règle pare-feu) peut-être une opération critique en cas d’oubli ([bucket S3 accessible en public sur Internet](https://www.websiteplanet.com/blog/beetleeye-leak-report/), [base de données sans mot de passe](https://blog.newsblur.com/2021/06/28/story-of-a-hacking/)). Il est préférable de déclarer son besoin avec des fichiers et de laisser l’orchestrateur les réaliser plutôt qu’agir de manière impérative sur le système. -Par exemple, le projet [Cilium](https://cilium.io/) permet d’interagir avec le réseau et d’appliquer des politiques de sécurité. De plus, les maillage de services (services-mesh) comme Istio, Traefik maesh ou Solo.io avec GlooEdge génèrent automatiquement des certificats SSL et ne laissent passer ainsi que les communications sécurisées entre vos containers. D'[autres projets](https://platform9.com/blog/the-ultimate-guide-to-using-calico-flannel-weave-and-cilium/) existent comme: [Flannel](https://github.com/flannel-io/flannel), [Calico](https://github.com/projectcalico/calico) ou [Weave](https://github.com/weaveworks/weave). +Par exemple, le projet [Cilium](https://cilium.io/)([petite introduction vidéo](https://lydra.fr/securite-des-applications-cloud-via-le-reseau-avec-cilium-ebpf-live-meetup-avec-raphael-pinson/)) permet d’interagir avec le réseau et d’appliquer des politiques de sécurité. De plus, les maillage de services (services-mesh) comme Istio, Traefik maesh ou Solo.io avec GlooEdge génèrent automatiquement des certificats SSL et ne laissent passer ainsi que les communications sécurisées entre vos containers. D'[autres projets](https://platform9.com/blog/the-ultimate-guide-to-using-calico-flannel-weave-and-cilium/) existent comme: [Flannel](https://github.com/flannel-io/flannel), [Calico](https://github.com/projectcalico/calico) ou [Weave](https://github.com/weaveworks/weave). D’autre part, les commandes `docker scan`, `trivy image mon_Image_Docker:tag` analysent les vulnérabilités connues de votre Dockerfile. Avant de pousser du code contenant des secrets, un hook peut-être installé avec [GitGuardian](https://gitguardian.com/), [ggshield](https://github.com/GitGuardian/ggshield), [Trivy](https://github.com/aquasecurity/trivy) (`trivy fs —security-checks secret ./`) ou le projet [awslabs/git-secrets](https://github.com/awslabs/git-secrets). Comme l’erreur est humaine, il est préférable d’automatiser toutes ces actions et analyses. Nous vous recommendons le visionnage de cette [vidéo explicative](https://youtu.be/hseEfxCHzYw) de ce qui faut faire en cas d'incident/de fuite (en anglais). @@ -462,7 +462,7 @@ Duration: 3 ### Test : Pentest -Sauf si vous avez une équipe de pentesteurs en interne, ou vous êtes experts des outils [Kali Linux](https://www.kali.org/), [Parrot Security](https://www.parrotsec.org/), [hetty](https://hetty.xyz/) ou [Burp Suite Pro](https://portswigger.net/burp/), [SuperTruder](https://github.com/ElSicarius/SuperTruder), [ffuf](https://github.com/ffuf/ffuf), [Metasploit](https://www.metasploit.com/)..., il est possible de demander à une entreprise spécialisée de réaliser les pentests ou vous pouvez participer à un programme de [Bug Bounty](https://geekflare.com/bug-bounty-platforms/): [YesWeHack](https://www.yeswehack.com/), [Yogosha](https://yogosha.com/), [Open Bug Bounty](https://www.openbugbounty.org/), [Hackerone](https://www.hackerone.com/), [Bugcrowd](https://www.bugcrowd.com/), [SafeHats](https://app.safehats.com/enterprises/programs), [Intigriti](https://www.intigriti.com/), [Synack](https://www.synack.com/). +Sauf si vous avez une équipe de pentesteurs en interne, ou vous êtes experts des outils [Kali Linux](https://www.kali.org/), [Parrot Security](https://www.parrotsec.org/), [hetty](https://hetty.xyz/) ou [Burp Suite Pro](https://portswigger.net/burp/), [SuperTruder](https://github.com/ElSicarius/SuperTruder), [ffuf](https://github.com/ffuf/ffuf), [Metasploit](https://www.metasploit.com/), [Fimap](https://github.com/crunchsec/fimap) avec son [pense-bête](https://twitter.com/bluetouff/status/1647261358960922629), etc..., il est possible de demander à une entreprise spécialisée de réaliser les pentests ou vous pouvez participer à un programme de [Bug Bounty](https://geekflare.com/bug-bounty-platforms/): [YesWeHack](https://www.yeswehack.com/), [Yogosha](https://yogosha.com/), [Open Bug Bounty](https://www.openbugbounty.org/), [Hackerone](https://www.hackerone.com/), [Bugcrowd](https://www.bugcrowd.com/), [SafeHats](https://app.safehats.com/enterprises/programs), [Intigriti](https://www.intigriti.com/), [Synack](https://www.synack.com/). Même les grands groupes utilisent ces techniques. En effet, Google a annoncé récemment (Février 2023) avoir attribué plus de 12 millions de dollars de récompenses en 2022 pour l’identification de plus de 2 900 problèmes de sécurité (cf [ZDNet](https://www.zdnet.fr/actualites/google-s-aligne-financierement-sur-microsoft-pour-son-programme-de-bug-bounty-39954634.htm) et le tweet de [Stormshield](https://twitter.com/Stormshield/status/1630206661167050754)). @@ -490,6 +490,7 @@ Duration: 10 ### Génération des SBOM avec GoReleaser et Syft Reprenons notre programme écrit en Go, de tout à l’heure et y ajoutons une GitHub Action pour générer le SBOM avec Syft, pendant la génération des binaires par GoReleaser. +Surtout que les impacts des dépendances ne sont pas négligeables et peuvent être importantes ([casser les builds avec PyPi Codecov](https://www.reddit.com/r/Python/comments/12kukhk/codecov_gone_from_pypi/), ou [casser la PROD, pour colors ou faker.js](https://snyk.io/blog/open-source-npm-packages-colors-faker/)) ```YAML name: Release (GoReleaser) @@ -801,7 +802,7 @@ Illustrons cela avec Ansible pour le mode "pet", via la commande Duration: 3 ### Surveillance : Audit de sécurité et des bonnes pratiques -En open source, il existe les projets [Popeye](https://github.com/derailed/popeye), [Polaris](https://github.com/FairwindsOps/polaris), [kube-score](https://github.com/zegl/kube-score), [Falco](https://falco.org/docs/rules/) et [Trivy](https://aquasecurity.github.io/trivy/v0.29.2/docs/misconfiguration/scanning/) et [un tuto](https://thenewstack.io/check-for-container-image-vulnerabilities-with-trivy/) (en anglais) pour Kubernetes. +En open source, il existe les projets [gcp_scanner](https://github.com/google/gcp_scanner), [Popeye](https://github.com/derailed/popeye), [Polaris](https://github.com/FairwindsOps/polaris), [kube-score](https://github.com/zegl/kube-score), [Falco](https://falco.org/docs/rules/) et [Trivy](https://aquasecurity.github.io/trivy/v0.29.2/docs/misconfiguration/scanning/) et [un tuto](https://thenewstack.io/check-for-container-image-vulnerabilities-with-trivy/) (en anglais) pour Kubernetes. Pour le multi-cloud [nccgroup/ScoutSuite](https://github.com/nccgroup/ScoutSuite) et [Cloud Security Suite](https://github.com/SecurityFTW/cs-suite), ou [Prowler](https://github.com/prowler-cloud/prowler) pour AWS/Azure, et le NIST [OpenSCAP](https://github.com/OpenSCAP/openscap). Libhunt en recense d'[autres](https://www.libhunt.com/r/ScoutSuite), comme [Linux Security](https://linuxsecurity.expert/tools/scout2/alternatives/) mais une partie est orientée pour les infrastructures spécifiques à AWS, ou non opensourcé comme Cloud Security Suite. @@ -895,7 +896,7 @@ Duration: 3 * Détection de connexion, proposer/activer MFA * Pas de configuration/permissions par défaut (K8s, [MongoDB](https://www.theregister.com/2016/04/25/mexico_voter_data_breach/)) * Pas de secrets dans les Docker images ou les repositories Git (Vault, .gitignore) -* Pas de données sensibles dans les GUI (RGPD + permettre la captation durant une visio/conférences) +* Pas de données sensibles dans les GUI ([RGPD/le code HTTP 451](https://twitter.com/kvlly/status/1647325854094045185) ou la captation durant une visio/conférence) * Ne pas afficher de stacktrace (pas debug | Fail securely) * Ni de version/nom de framework * Vérifier les entrées/sorties des clients/noeuds/microservices (injection/XSS, protocoles) diff --git a/devoxxfr23/codelab.json b/devoxxfr23/codelab.json index 71245d3..326263f 100644 --- a/devoxxfr23/codelab.json +++ b/devoxxfr23/codelab.json @@ -3,7 +3,7 @@ "format": "html", "prefix": "https://storage.googleapis.com", "mainga": "UA-49880327-14", - "updated": "2023-04-14T11:41:07+02:00", + "updated": "2023-04-15T23:17:28+02:00", "id": "devoxxfr23", "duration": 194, "title": "La sécurité, par où commencer ? Install party 🎉", diff --git a/devoxxfr23/index.html b/devoxxfr23/index.html index d15f3b9..48df2df 100644 --- a/devoxxfr23/index.html +++ b/devoxxfr23/index.html @@ -130,7 +130,7 @@

Planifier: Modélisation de la menace (le fameux Threat Model) - +

Après ces définitions, passons à la pratique en rédigeant un petit document SECURITY.md dans votre repôt de code. La "Security Policy", politique de sécurité décrit comment vous allez supporter vos versions et surtout permettre à vos utilisateur.trice.s de pouvoir remonter des bugs ou des failles de sécurité à travers un canal sécurisé avec vous, développeur.se.

Un exemple pour le proxy Traefik ou celui d'un autre repôt. Comme autre source d'inspiration, voici la documentation K8s sur le sujet: Kubernetes Security and Disclosure Information (en)

De même, pour un serveur HTTPs, vous pouvez répondre au path https://monserveurweb/.well-known/security.txt conformément au RFC9116. Un exemple avec celui de Google, ou plus d'infos sur ce site.

@@ -217,7 +217,7 @@

Illustration avec GitHub Code Scanning

Développer : Sécurité comme Code

D'après O'Reilly, SaC (Security as Code) consiste à intégrer la sécurité dans les flux DevOps, alias CI/CD. Néanmoins, si l'outil n'est pas trop gourmand en ressources, il peut être installé dans l'éditeur. Car nous avons des ordinateurs plus puissants, grâce à l'apparition des puces ARM ou les IDE en ligne, comme AWS Cloud9, Gitpod, ou GitHub Codespaces. Au niveau des containers sécurisés, des implémentations existent avec gVisor, les Kata Containers et les Confidential containers.

D'une part, l'application de la configuration (HBAC, RBAC, règle pare-feu) peut-être une opération critique en cas d'oubli (bucket S3 accessible en public sur Internet, base de données sans mot de passe). Il est préférable de déclarer son besoin avec des fichiers et de laisser l'orchestrateur les réaliser plutôt qu'agir de manière impérative sur le système.

-

Par exemple, le projet Cilium permet d'interagir avec le réseau et d'appliquer des politiques de sécurité. De plus, les maillage de services (services-mesh) comme Istio, Traefik maesh ou Solo.io avec GlooEdge génèrent automatiquement des certificats SSL et ne laissent passer ainsi que les communications sécurisées entre vos containers. D'autres projets existent comme: Flannel, Calico ou Weave.

+

Par exemple, le projet Cilium(petite introduction vidéo) permet d'interagir avec le réseau et d'appliquer des politiques de sécurité. De plus, les maillage de services (services-mesh) comme Istio, Traefik maesh ou Solo.io avec GlooEdge génèrent automatiquement des certificats SSL et ne laissent passer ainsi que les communications sécurisées entre vos containers. D'autres projets existent comme: Flannel, Calico ou Weave.

D'autre part, les commandes docker scan, trivy image mon_Image_Docker:tag analysent les vulnérabilités connues de votre Dockerfile. Avant de pousser du code contenant des secrets, un hook peut-être installé avec GitGuardian, ggshield, Trivy (trivy fs —security-checks secret ./) ou le projet awslabs/git-secrets. Comme l'erreur est humaine, il est préférable d'automatiser toutes ces actions et analyses. Nous vous recommendons le visionnage de cette vidéo explicative de ce qui faut faire en cas d'incident/de fuite (en anglais).

Au final, en plus de la modélisation de l'attaquant et des risques, il faut aussi prendre en compte les différents flux, avoir des diagrammes d'architecture, comme celui ci-dessous... justement, c'est notre prochain sujet.

Exemple d’architecture (cloudcraft.co)

@@ -398,7 +398,7 @@

Démonstrations des fonctionnalités de 42Crunch

Test : Pentest

-

Sauf si vous avez une équipe de pentesteurs en interne, ou vous êtes experts des outils Kali Linux, Parrot Security, hetty ou Burp Suite Pro, SuperTruder, ffuf, Metasploit..., il est possible de demander à une entreprise spécialisée de réaliser les pentests ou vous pouvez participer à un programme de Bug Bounty: YesWeHack, Yogosha, Open Bug Bounty, Hackerone, Bugcrowd, SafeHats, Intigriti, Synack.

+

Sauf si vous avez une équipe de pentesteurs en interne, ou vous êtes experts des outils Kali Linux, Parrot Security, hetty ou Burp Suite Pro, SuperTruder, ffuf, Metasploit, Fimap avec son pense-bête, etc..., il est possible de demander à une entreprise spécialisée de réaliser les pentests ou vous pouvez participer à un programme de Bug Bounty: YesWeHack, Yogosha, Open Bug Bounty, Hackerone, Bugcrowd, SafeHats, Intigriti, Synack.

Même les grands groupes utilisent ces techniques. En effet, Google a annoncé récemment (Février 2023) avoir attribué plus de 12 millions de dollars de récompenses en 2022 pour l'identification de plus de 2 900 problèmes de sécurité (cf ZDNet et le tweet de Stormshield).

OpenAI vient de lancer le sien, avec une récompense maximale est de 20 000 dollars (Lien du site officiel).

Google - Tweet de Stormshield

@@ -417,7 +417,7 @@

Distribution : Signature numérique

Génération des SBOM avec GoReleaser et Syft

-

Reprenons notre programme écrit en Go, de tout à l'heure et y ajoutons une GitHub Action pour générer le SBOM avec Syft, pendant la génération des binaires par GoReleaser.

+

Reprenons notre programme écrit en Go, de tout à l'heure et y ajoutons une GitHub Action pour générer le SBOM avec Syft, pendant la génération des binaires par GoReleaser. Surtout que les impacts des dépendances ne sont pas négligeables et peuvent être importantes (casser les builds avec PyPi Codecov, ou casser la PROD, pour colors ou faker.js)

name: Release (GoReleaser)
 
 on:
@@ -714,7 +714,7 @@ 

Opération : Patchs de sécurité

Surveillance : Audit de sécurité et des bonnes pratiques

-

En open source, il existe les projets Popeye, Polaris, kube-score, Falco et Trivy et un tuto (en anglais) pour Kubernetes.

+

En open source, il existe les projets gcp_scanner, Popeye, Polaris, kube-score, Falco et Trivy et un tuto (en anglais) pour Kubernetes.

Pour le multi-cloud nccgroup/ScoutSuite et Cloud Security Suite, ou Prowler pour AWS/Azure, et le NIST OpenSCAP. Libhunt en recense d'autres, comme Linux Security mais une partie est orientée pour les infrastructures spécifiques à AWS, ou non opensourcé comme Cloud Security Suite.

Si vous ou vos clients en avez besoin, vous pouvez passer des certifications normatives pour vos produits: ISO/CEI 27001 - 27017 - 27018, PCI, HITRUST, CSA STAR, HDS.

Pour la robustesse SI/logiciel: CSPN, CC EAL 3+, CC EAL 4+.

@@ -795,7 +795,7 @@

Si nous devions donner une petite liste de bonnes pratiques

  • Détection de connexion, proposer/activer MFA
  • Pas de configuration/permissions par défaut (K8s, MongoDB)
  • Pas de secrets dans les Docker images ou les repositories Git (Vault, .gitignore)
  • -
  • Pas de données sensibles dans les GUI (RGPD + permettre la captation durant une visio/conférences)
  • +
  • Pas de données sensibles dans les GUI (RGPD/le code HTTP 451 ou la captation durant une visio/conférence)
  • Ne pas afficher de stacktrace (pas debug | Fail securely)
  • Ni de version/nom de framework
  • Vérifier les entrées/sorties des clients/noeuds/microservices (injection/XSS, protocoles)