
Tests de mutation sur la validation de certificat X.509 dans OpenSSL v.1.1.1h, basé sur CVE-2021-3450.
Ce dépôt implémente une expérience de tests de mutation guidée par la spécification, ciblant le comportement de validation des certificats X.509 dans OpenSSL.
L'expérience est basée sur l'opérateur de mutation :
MUT-BC-SS-01
qui modifie l'extension BasicConstraints :
CA:TRUE → CA:FALSE
L'objectif est d'évaluer si la validation des certificats respecte correctement les exigences de la RFC 5280 et d'étudier le comportement lié à la classe de vulnérabilité représentée par CVE-2021-3450.
MUT-BC-SS-01/
│
│
├── configs/
│ ├── ca.cnf
│ └── leaf.cnf
│
├── src/
│ └── poc.c
| └── poc_fixed.c
│
├── check_prerequisites.sh
├── install_openssl111h.sh
├── environment.sh
├── generate_certs.sh
├── build.sh
├── run.sh
├── build_version3.sh
├── run_version3.sh
│
│
└── README.md
L'expérience crée la chaîne de certificats suivante :
Root CA (CA:TRUE)
│
▼
Mutant Intermédiaire (CA:FALSE)
│
▼
Certificat Subleaf
Le certificat mutant est délibérément configuré avec :
basicConstraints = CA:FALSE
tout en étant utilisé pour signer un autre certificat.
Le banc de test de validation évalue si OpenSSL rejette correctement cette chaîne invalide.
L'expérience a été testée sur des systèmes Linux utilisant :
git clone https://github.com/dedellix/MUT-BC-SS-01.git
cd MUT-BC-SS-01
chmod +x *.sh
./check_prerequisites.sh
Ce script vérifie les paquets requis et installe automatiquement les dépendances manquantes.
Les paquets requis incluent :
./install_openssl111h.sh
Ceci télécharge, compile et installe OpenSSL 1.1.1h localement dans :
$HOME/openssl-1.1.1h-install
Aucun fichier système OpenSSL n'est modifié.
./environment.sh
Ceci configure :
LD_LIBRARY_PATH
et vérifie que les bonnes bibliothèques OpenSSL sont chargées.
./generate_certs.sh
Ceci génère :
et les stocke dans :
certs/
./build.sh
./build_version3.sh
Ceci compile :
src/poc.c
et produit :
./poc
dans le répertoire racine du projet.
./run.sh
./run_version3.sh
ou directement :
./poc
Pour supprimer complètement les artefacts générés :
rm -rf certs
rm -f poc
Pour supprimer l'installation locale d'OpenSSL :
rm -rf $HOME/openssl-1.1.1h-install
rm -rf tls-test
Pour effacer les variables d'environnement :
unset LD_LIBRARY_PATH
unset OPENSSL111H