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 officiel | https://github.com/jetstack/paranoia |
| Repository | https://github.com/jetstack/paranoia |
| Licence | Apache 2.0 |
| Développeur | Jetstack |
| Langage | Go |
| Focus | Container 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
- GitHub : https://github.com/jetstack/paranoia
- Documentation : README du repository
- Releases : https://github.com/jetstack/paranoia/releases
- GitHub Action : https://github.com/marketplace/actions/paranoia