Aller au contenu principal

Paranoia

Overview

Paranoia, c'est l'outil de sécurité qui pense que tu devrais savoir à qui tes containers font confiance. Il analyse et exporte les trust bundles (certificats CA) depuis les images containers pour identifier exactement quelles autorités de certification peuvent émettre des certificats valides pour tes applications. Si tu veux contrôler la chaîne de confiance de tes containers, c'est parfait.

Paranoia inspecte les images containers pour extraire tous les certificats CA, permettant d'identifier les autorités de certification de confiance, de valider les bundles au moment du build, et d'appliquer des politiques de sécurité sur les certificats autorisés. Export JSON, validation CI/CD, détection de certificats internes ou suspects.

Paranoia se distingue par son focus container-specific (analyse les images, pas les systèmes live), sa capacité de validation (forbid/require certains certificats), et son intégration CI/CD (GitHub Actions, validation build-time).


Informations essentielles

PropriétéValeur
Site officielhttps://github.com/jetstack/paranoia
Repositoryhttps://github.com/jetstack/paranoia
LicenceApache 2.0
DéveloppeurJetstack
LangageGo
FocusContainer images, certificats CA

Fonctionnalités principales

Analyse d'images containers

  • Extraction CA certificates : détection de tous les certificats CA
  • Multiple locations : scan de /etc/ssl/certs/, binaires, etc.
  • Format detection : PEM, DER, et autres formats
  • Binary analysis : certificats intégrés dans les binaires
  • Comprehensive inventory : inventaire complet des autorités de confiance

Validation et policies

  • Forbidden certificates : interdiction de certificats spécifiques
  • Required certificates : obligation de certificats particuliers
  • Fingerprint matching : validation par empreintes SHA256
  • Build-time validation : échec du build si politique violée
  • Configuration-based : politiques définies en YAML

Export et reporting

  • JSON export : données structurées pour intégration
  • Table output : affichage lisible en CLI
  • Certificate details : subject, fingerprints, validité
  • File locations : localisation exacte des certificats
  • Comprehensive metadata : toutes les informations pertinentes

Intégrations CI/CD

  • GitHub Actions : action officielle disponible
  • Docker support : container pour environnements isolés
  • Exit codes : intégration pipeline (fail on policy violation)
  • Automation ready : parfait pour validation automatisée
  • Reporting integration : export pour outils de sécurité

Cas d'usage

  • Security audit : Inventaire des autorités de certification de confiance
  • Supply chain security : Validation des certificats dans la chaîne d'approvisionnement
  • Internal cert detection : Détection de certificats internes laissés par erreur
  • Compliance : Application de politiques de certificats d'entreprise
  • Build validation : Validation automatique lors des builds CI/CD

Installation

Via Homebrew (macOS/Linux)

brew install jetstack/jetstack/paranoia

Binaires pré-compilés

# Télécharger depuis GitHub Releases
curl -L -o paranoia https://github.com/jetstack/paranoia/releases/download/v0.5.0/paranoia-linux-amd64
chmod +x paranoia
sudo mv paranoia /usr/local/bin/

Via Go install

go install github.com/jetstack/paranoia@latest

Via Docker

docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \
ghcr.io/jetstack/paranoia:latest export alpine:latest

Utilisation basique

Export de certificats

# Liste des certificats d'une image
paranoia export alpine:latest

# Export JSON pour analyse
paranoia export --output json python:3

# Export avec détails complets
paranoia export --verbose nginx:alpine

Validation avec politiques

# .paranoia.yaml
version: "1"
forbid:
- comment: "Internal testing certificate"
fingerprints:
sha256: bd40be0eccfce513ab318882f03962e4e2ec3799b51392e82805d9249e426d28

require:
- comment: "Corporate root CA required"
fingerprints:
sha256: a1b2c3d4e5f6789012345678901234567890123456789012345678901234567890
# Validation avec configuration
paranoia validate my-app:latest

# Validation avec politique custom
paranoia validate --config security-policy.yaml my-app:v1.0

Analyse détaillée

# Certificats dans des binaires spécifiques
paranoia export -o json consul:latest | jq '.certificates[] | select(.fileLocation == "/bin/consul")'

# Recherche de certificats suspects
paranoia export --output json my-image:latest | \
jq '.certificates[] | select(.notAfter < "2024-01-01T00:00:00Z")'

# Comparaison entre images
paranoia export --output json image1:latest > certs1.json
paranoia export --output json image2:latest > certs2.json

GitHub Actions

# .github/workflows/paranoia.yml
name: Certificate Validation
on: [push, pull_request]

jobs:
cert-validation:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- name: Validate certificates
uses: jetstack/paranoia@main
with:
image: my-app:latest
config: .paranoia.yaml

Avantages

  • Visibilité complète : inventaire exhaustif des certificats CA dans tes containers
  • Build-time validation : détection des problèmes avant déploiement, pas après
  • Policy enforcement : application automatique des règles de sécurité certificats
  • CI/CD ready : intégration native dans les pipelines, workflow de sécurité
  • Binary analysis : détection même des certificats cachés dans les binaires

Limitations

  • Analyse des images uniquement : pas de monitoring des containers en cours d'exécution
  • Ne garantit pas l'usage effectif : un certificat présent peut ne pas être utilisé
  • Possible d'obfusquer des certificats : un attaqueur motivé peut contourner la détection

Alternatives

  • Manual inspection : Analyse manuelle fastidieuse et error-prone
  • Docker image scanners : Outils généralistes moins spécialisés sur les certificats
  • openssl commands : Commandes ponctuelles mais pas d'automation
  • Custom scripts : Solutions maison moins robustes

Ressources