
Mutationstests der X.509-Zertifikatsvalidierung in OpenSSL v.1.1.1h, basierend auf CVE-2021-3450.
Dieses Repository implementiert ein spezifikationsgetriebenes Mutations-Testexperiment, das das Validierungsverhalten von X.509-Zertifikaten in OpenSSL untersucht.
Das Experiment basiert auf dem Mutationsoperator:
MUT-BC-SS-01
der die BasicConstraints-Erweiterung modifiziert:
CA:TRUE → CA:FALSE
Ziel ist es zu bewerten, ob die Zertifikatsvalidierung die RFC-5280-Anforderungen korrekt durchsetzt, und das Verhalten im Zusammenhang mit der durch CVE-2021-3450 repräsentierten Schwachstellenklasse zu untersuchen.
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
Das Experiment erzeugt die folgende Zertifikatskette:
Root CA (CA:TRUE)
│
▼
Mutant Intermediate (CA:FALSE)
│
▼
Subleaf Certificate
Das mutierte Zertifikat ist absichtlich konfiguriert mit:
basicConstraints = CA:FALSE
während es weiterhin verwendet wird, um ein anderes Zertifikat zu signieren.
Die Validierungsumgebung bewertet, ob OpenSSL diese ungültige Kette korrekt ablehnt.
Das Experiment wurde auf Linux-Systemen getestet mit:
git clone https://github.com/dedellix/MUT-BC-SS-01.git
cd MUT-BC-SS-01
chmod +x *.sh
./check_prerequisites.sh
Dieses Skript prüft die benötigten Pakete und installiert fehlende Abhängigkeiten automatisch.
Zu den benötigten Paketen gehören:
./install_openssl111h.sh
Dieses lädt OpenSSL 1.1.1h herunter, erstellt es und installiert es lokal unter:
$HOME/openssl-1.1.1h-install
Es werden keine systemweiten OpenSSL-Dateien verändert.
./environment.sh
Dieses konfiguriert:
LD_LIBRARY_PATH
und überprüft, dass die korrekten OpenSSL-Bibliotheken geladen werden.
./generate_certs.sh
Dieses erzeugt:
und speichert sie in:
certs/
./build.sh
./build_version3.sh
Dieses kompiliert:
src/poc.c
und erzeugt:
./poc
im Projektstammverzeichnis.
./run.sh
./run_version3.sh
oder direkt:
./poc
Um alle erzeugten Artefakte vollständig zu entfernen:
rm -rf certs
rm -f poc
Um die lokale OpenSSL-Installation zu entfernen:
rm -rf $HOME/openssl-1.1.1h-install
rm -rf tls-test
Um die Umgebungsvariablen zu löschen:
unset LD_LIBRARY_PATH
unset OPENSSL111H