Open Source Immersion 2024

Logiciel libre & Cybersécurité

Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj

Présentation - Activités

  • Alexandre ZANNI (@noraj)
  • Ingénieur en test d'intrusion
  • Recherche et développement
  • Contributeur logiciel libre
  • Mainteneur BlackArch Linux
19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj

Présentation - GitHub

  • depuis 2016
  • 6 k étoiles reçues
  • 1.8 k abonnés
  • 13k+ commits
  • 1.6k+ PRs
  • 1.9k issues
  • contributions + 100aines projets
19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj

Plan

  1. BlackArch
  2. Rawsec Cybersecurity Inventory
  3. Anecdotes et écosystème
  4. Synacktiv : recherche et développement
19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj

BlackArch

19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj

Distribution GNU/Linux en source ouverte pensée pour le test d'intrusion et plus généralement pour la cybersécurité technique. Basée sur ArchLinux.

19/10/204 - Open Source Immersion (OSI) 2024

2920 outils (08/10/2024)
vs ~ 600 pour Kali Linux

Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj
19/10/204 - Open Source Immersion (OSI) 2024

2009-2024

Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj

Installation

  • ISO : Full (22 GO), Slim (5.5 Go), NetInstall (815 Mo)
  • VM : OVA (29 Go)
  • par-dessus ArchLinux comme dépôt additionnel
  • HTTP, HTTPS, FTP, rsync, torrent
  • miroirs : 🇦🇺🇦🇹🇨🇦🇨🇳🇩🇰🇪🇨🇫🇷🇩🇪🇬🇷🇬🇧🇭🇺🇮🇳🇮🇷🇮🇹🇯🇵🇰🇷🇲🇩🇳🇱🇳🇿🇵🇱🇵🇹🇷🇺🇸🇬🇸🇪🇨🇭🇹🇷🇹🇼🇺🇸
19/10/204 - Open Source Immersion (OSI) 2024

Statistiques

  • 562 fourches (forks)
  • 2,8k étoiles (stars)
  • 99 contributeurs
  • 4-5 membres actifs
  • 24313 archivages (commits)
  • 1635 fusiodemandes (merge requests)
  • 2535 tickets (issues)
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj
PKGBUILD
# This file is part of BlackArch Linux ( https://www.blackarch.org/ ).
# See COPYING for license details.

pkgname=ffuf
pkgver=v2.1.0.r3.gde9ac86
pkgrel=1
epoch=1
groups=('blackarch' 'blackarch-webapp' 'blackarch-fuzzer')
pkgdesc='Fast web fuzzer written in Go.'
arch=('x86_64' 'aarch64')
url='https://github.com/ffuf/ffuf'
license=('MIT')
makedepends=('git' 'go')
options=('!strip')
source=("git+https://github.com/ffuf/$pkgname.git")
sha512sums=('SKIP')
19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj
pkgver() {
  cd $pkgname

  git describe --long --tags | sed 's/\([^-]*-g\)/r\1/;s/-/./g'
}

build() {
  cd $pkgname

  GOPATH="$srcdir" go mod download
  GOPATH="$srcdir" go build \
    -trimpath \
    -buildmode=pie \
    -mod=readonly \
    -modcacherw \
    -ldflags "-s -w" \
    -o $pkgname .
}

package() {
  cd $pkgname

  install -Dm 755 $pkgname "$pkgdir/usr/bin/$pkgname"
  install -Dm 644 "${pkgname}rc.example" \
    "$pkgdir/usr/share/$pkgname/${pkgname}rc.example"
  install -Dm 644 -t "$pkgdir/usr/share/doc/$pkgname/" *.md
}
19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj

Le travail d'un mainteneur

  • Empaqueter des nouveaux outils
  • Corriger les bogues / améliorer
  • MAJ les outils
  • MAJ / ajouter des modèles de PKGBUILD
  • Autres : ISO, torrents, support à la communauté Reddit / Matrix / GitHub / courriel, ajout miroirs de dépôts
  • Site web, outils comme wordlistctl, webshells
19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj

Rawsec Cybersecurity Inventory

19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj

Un inventaire d'outils et de ressources sur la cybersécurité qui vise à aider les gens à trouver tout ce qui est lié à la cybersécurité.

19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj

Statistiques

  • depuis 2017
  • 41 contributeurs
  • 1948 archivages (commits)
  • 1578 outils et ressources répertoriés
19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj

youtu.be/9rzxX0TFT88

19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj

Anecdotes et écosystème

19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj
Choix de projets / dépendances (1/2)
  • Critères de choix communs
    • âge, étoiles, activité, esthétisme
  • Critères de choix négligés
    • documentation, qualité du code, tests, posture de sécurité, métriques de qualité
  • Qualité vs esthétisme
    • logo + captures d'écrans + emoji README.md + 200 tweets vs pas de logo, pas de médiatisation, SECURITY.md, code de qualité et tests CI/CD
19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj
Choix de projets / dépendances (2/2)
  • Études des critères au départ vs durant la vie du projet
  • Dépendance énorme pour 1 fonction de 3 lignes
  • Dépendances transitives (sous-dépendances)

➡️ Nomenclature logicielle (Software Bill of Materials, SBOM) : intégrité, visibilité, identifier les vulns.

19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj
Projets sous-soutenus
  • Règle du 1/10/100 voir 1/10/1000
  • Beaucoup de projets importants reposent sur peu de personnes
  • Beaucoup de gros projets reposent sur ces précédents
  • Beaucoup d'entreprises ou produits commerciaux les utilisent sans contribuer (code, dons)
19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj
Projets sous-soutenus (exemples, 1/2)
19/10/204 - Open Source Immersion (OSI) 2024
"https://xkcd.com/2347/"
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj
Projets sous-soutenus (exemples, 2/2)
19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj
Projets sous-soutenus (anecdotes - OpenSSL)

OpenSSL, principalement 2 personnes. Après Heartbleed (2014), le gouvernement des EUA a mis la pression aux devs. et leur a demandé de travailler pendant leurs vacances pour corriger le problème en urgence.
2000 $ / an de don avant.

19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj
Projets sous-soutenus (anecdotes - left-pad)

En 2016, Azer Koçulu a dépublié plus de 250 de ses dépendances d'NPM.
En particulier, une des dépendances, left-pad (rajoute des 0 ou des espaces sur la gauche d'une chaîne de caractères), était utilisée par node.js, Babel et des milliers d'autres projets. Le château de carte s'est donc écroulé lorsque ces projets essayaient d'installer leurs dépendances.

19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj
Projets sous-soutenus (anecdotes - left-pad)

left-pad était téléchargé 2,5m fois / mois et ne contenait que 11 lignes de codes.

Sources [1], [2]

19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj
Projets sous-soutenus (anecdotes - xz)

Après la commotion causée par la porte dérobée dans xz, Microsoft a demandé aux mainteneurs de FFmpeg de les aider en urgence, car utilisé dans un produit Microsoft très populaire.

19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj
Projets sous-soutenus (anecdotes - xz)

Le fiasco de xz a montré comment la dépendance à l'égard de volontaires non rémunérés peut entraîner des problèmes majeurs. Les entreprises qui brassent des milliards de dollars s'attendent à recevoir un soutien gratuit et urgent de la part des bénévoles.

Microsoft avait envisagé de donner quelques milliers de 💵, mais n'a finalement jamais souscrit à un contrat de support.

19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj
Projets sous-soutenus (anecdotes - core-js)

core-js permet d'intégrer de nouvelles fonctionnalités JavaScript dans les anciens navigateurs. Des tonnes de bibliothèques populaires telles que Babel s'appuient dessus. En 2020, 75 % des 100 sites web les plus populaires l'utilisaient. Il a renversé un piéton et est allé en prison 18 mois. Il n'avait pas de quoi payer la caution, car il avait quitté son travail pour maintenir core-js à temps plein et était sans revenu.
Source

19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj

Plus de 50 % des projets n'ont pas permis à leurs responsables de vivre au-dessus du seuil de pauvreté, tandis que 31 % ont généré suffisamment d'argent pour un salaire considéré comme inacceptable dans le secteur.

André Staltz, 2019, données de l'Open Collective and GitHub

19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj
Projets sous-soutenus (conclusion)

Les infrastructures critiques et la sécurité de nombreuses entreprises reposent sur la bonne volonté d'un bénévole seul qui travaille sur son temps libre.

Mais combien ?

19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj

Le nombre de composants open-source par application commerciale est passé de 84 en 2016 à 528 en 2020.

Synopsys, Open Source Security & Risk Analysis Report 2021

19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj

Quelques statistiques de

Synopsys, Open Source Security and Risk Analysis Report 2024

19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj

Synacktiv : recherche et développement

19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj
  • Test d'intrusion / Red Team
  • Réponse aux incidents
  • Formations
  • Reverse-engineering
  • Développement
19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj

Confusion de dépendances

par Pierre Martin , Kévin Schouteeten

19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj
Synacktiv - R&D - Confusion de dépendances - Liens

📰 Fuzzing confused dependencies with Depfuzzer

🧰 https://github.com/synacktiv/DepFuzzer

19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj
Synacktiv - R&D - Confusion de dépendances - Alternatives

Exemples d'attaques sur les dépendances :

  • typosquattage de nom de paquets populaires
  • compromission de paquets existants
  • prise de contrôle de nom de paquets disparus
  • 🔍 prise de contrôle de nom de paquets privés
19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj
Synacktiv - R&D - Confusion de dépendances - Concept

Publier sur un registre de paquets public un logiciel malveillant portant le même nom qu'un paquet privé afin qu'il soit installé à sa place par priorisation des registres.

💡 Moyen très effectif de rentrer dans le réseau privé d'une grande organisation.

19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj
Synacktiv - R&D - Confusion de dépendances - Entreprises impactées

Le chercheur Alex Birsan a pu exécuter du code chez Shopify, Apple, PayPal, Netflix, Yelp, Uber.

19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj
Synacktiv - R&D - Confusion de dépendances - Cause - pip

🐍 --extra-index-url pour pip install

  • Vérifie si la bibliothèque existe sur le registre de paquets interne spécifié
  • Vérifie si la bibliothèque existe sur le registre public (PyPI)
  • Installe la version trouvée, mais si le paquetage existe sur les deux, l'installe depuis la source ayant le n° de version le plus élevé
19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj
Synacktiv - R&D - Confusion de dépendances - Remédiation - pip

Publication d'un paquet en version 9999.0.0.

🩹 --index-url plutôt que --extra-index-url.

19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj
Synacktiv - R&D - Confusion de dépendances - Cause - gem

Peut-être --source pour gem install. Potentiellement le même comportement que pour pip.

19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj
Synacktiv - R&D - Confusion de dépendances - Artifactory

JFrog Artifactory est un gestionnaire de registre universel. Une de ses fonctionnalités est de mélanger les paquets publics et privés dans un registre virtuel.

Même comportement que pour pip. Pareil pour Azure Artifacts.

Impossible à changer pour l'utilisateur.

19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj
Synacktiv - R&D - Confusion de dépendances - Cause - npm

Ordre de résolution npm install :

  • Local
  • Serveur HTTP externe
  • GitHub
  • Registre npm
19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj
Synacktiv - R&D - Confusion de dépendances - Cause - npm

.npmrc pour ↔️ entre paquet et registre

Problème :

  • .npmrc manquant (ex : .gitignore)
  • .npmrc mal configuré
19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj
Synacktiv - R&D - Confusion de dépendances - DepFuzzer

Vérifie sur deps.dev (Google OSS) si les dépendances existent.

Support : npm, pypi, cargo, go

19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj

GitHub Actions

par Hugo Vincent

19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj
Synacktiv - R&D - GitHub Actions - Série d'articles

Série GitHub Actions exploitation sur la CI/CD GitHub :

19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj
Synacktiv - R&D - GitHub Actions - Résumé

Fonctionnement de GitHub Actions détails d'erreurs de configuration critiques, revue des pièges et des vulnérabilités habituels et comment les développeurs peuvent s'en prémunir.

19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj
Synacktiv - R&D - GitHub Actions - Projets vulnérables identifiés

CI/CD vulnérables identifiés dans les projets de : AutoGPT, microsoft/generative-ai-for-beginners, ant-design, cypress, excalidraw, Apache Doris, FreeRDP, Angular, swagger-editor, Azure Bicep, Alibaba Nacos, Homebrew, Spring Security, Akash node, WasmEdge, Lovell Sharp, haskell-language-server, Scroll zkEVM circuits, tRPC

19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj
Synacktiv - R&D - GitHub Actions - Outils
19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj

Extraction de secrets CI/CD

par Hugo Vincent , Théo Louis-Tisserand

19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj
Synacktiv - R&D - Extraction de secrets CI/CD - Liens

📰 https://www.synacktiv.com/publications/cicd-secrets-extraction-tips-and-tricks

🧰 https://github.com/synacktiv/nord-stream

19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj
Synacktiv - R&D - Extraction de secrets CI/CD - But

Récupérer les secrets stockés dans une CI/CD depuis un jeton d'accès personnel ayant fuité.

  • Azure DevOps
  • GitHub Actions
  • GitLab CI
19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj
Emplacement Nord Stream Gitleaks / TruffleHog
En clair ❌ ✅
Historique git ❌ ✅
Azure DevOps - Groupe de variables ✅ ❌
Azure DevOps - Fichier sécurisé ✅ ❌
Azure DevOps - Connexion de service ✅ ❌
19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj

Dans Azure DevOps, une fois enregistrés, les secrets

  • ❌ interface web ou appels à l'API
  • ✅ contexte d'exécution d'un pipeline
19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj

Nord Stream automatise le processus de récupération fastidieux. Exemple pour les groupes de variables d'Azure DevOps :

  • Lister les secrets des groupes de variables
  • Cloner le dépôt
  • Créer une branche locale
  • Créer un pipeline
  • Générer et écrire le fichier YAML de CI pour l'extraction
  • Pousser le changement sur la nouvelle branche
19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj
  • Démarrer le pipeline
  • Télécharger les résultats
  • Décoder les résultats
  • Effacer les traces
  • Supprimer la branche distante
19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj
Emplacement Nord Stream Gitleaks / TruffleHog
GitHub Actions - Organisation ✅ ❌
GitHub Actions - Dépôt ✅ ❌
GitHub Actions - Environement ✅ ❌
GitHub Actions - OpenID Connect ✅ ❌
19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj
Emplacement Nord Stream Gitleaks / TruffleHog
GitLab CI - Instance ✅ ❌
GitLab CI - Groupe ✅ ❌
GitLab CI - Projet ✅ ❌
GitLab CI - HashiCorp Vault ✅ ❌
19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj
Synacktiv - R&D - Extraction de secrets CI/CD - Protection
  • Surveillance : journaux, Microsoft Sentinel (Azure DevOps), intégrations SIEM pour GitHub, recherche active, GitHub Advanced Security
  • Prévention : GitHub : règles de protection de branche / environnement (délais d'attente, demande de revue), politique de déploiement de branche
19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj

Symfony

par Matthieu Barjole

19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj
Synacktiv - R&D - Symfony - Liens

📰 https://www.synacktiv.com/publications/looting-symfony-with-eos.html

🧰 https://github.com/synacktiv/eos

19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj
Synacktiv - R&D - Symfony - Résumé

Symfony (cadriciel web PHP) ➡️ env. dev ➡️ mode débogage ➡️ profileur web (symfony/web-profiler-bundle)

Ce profileur web permet l'inspection pendant l'exécution et donc l'extraction de : routes, cookies, authentifiants, fichiers, etc.

19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj

Exemples :

  • Barre d'outils
    ➡️ infos + phpinfo (dont vars. d'env.)
  • Insecption de requêtes
    • ➡️ infos sensibles dans POST
    • ➡️ Forger des cookies Rester connecté
  • Lecture de fichier
    • ➡️ Extraction du code source

⚙️ EOS fait tout ça automatiquement

19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj

Merci pour votre attention

https://jmp.sh/T29K1o69

19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj

Bonus : chaîne d'approvisionnement logicielle

19/10/204 - Open Source Immersion (OSI) 2024
Logiciel libre & Cybersécurité - Alexandre ZANNI alias noraj

Série La sécurité de la chaîne logicielle par Merlin TCHOFFO.

19/10/204 - Open Source Immersion (OSI) 2024