
Test di mutazione sulla validazione dei certificati X.509 in OpenSSL v.1.1.1h, basato su CVE-2021-3450.
Questa repository implementa un esperimento di test di mutazione guidato dalle specifiche, incentrato sul comportamento di validazione dei certificati X.509 in OpenSSL.
L'esperimento si basa sull'operatore di mutazione:
MUT-BC-SS-01
che modifica l'estensione BasicConstraints:
CA:TRUE → CA:FALSE
L'obiettivo è valutare se la validazione dei certificati applica correttamente i requisiti RFC 5280 e indagare il comportamento relativo alla classe di vulnerabilità rappresentata da 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'esperimento crea la seguente catena di certificati:
Root CA (CA:TRUE)
│
▼
Mutant Intermediate (CA:FALSE)
│
▼
Subleaf Certificate
Il certificato mutante è configurato intenzionalmente con:
basicConstraints = CA:FALSE
pur essendo utilizzato per firmare un altro certificato.
L'harness di validazione valuta se OpenSSL rifiuta correttamente questa catena non valida.
L'esperimento è stato testato su sistemi Linux utilizzando:
git clone https://github.com/dedellix/MUT-BC-SS-01.git
cd MUT-BC-SS-01
chmod +x *.sh
./check_prerequisites.sh
Questo script controlla i pacchetti richiesti e installa automaticamente le eventuali dipendenze mancanti.
I pacchetti richiesti includono:
./install_openssl111h.sh
Questo scarica, compila e installa OpenSSL 1.1.1h localmente in:
$HOME/openssl-1.1.1h-install
Nessun file OpenSSL di sistema viene modificato.
./environment.sh
Questo configura:
LD_LIBRARY_PATH
e verifica che le librerie OpenSSL corrette siano caricate.
./generate_certs.sh
Questo genera:
e li salva in:
certs/
./build.sh
./build_version3.sh
Questo compila:
src/poc.c
e produce:
./poc
nella directory principale del progetto.
./run.sh
./run_version3.sh
oppure direttamente:
./poc
Per rimuovere completamente gli artefatti generati:
rm -rf certs
rm -f poc
Per rimuovere l'installazione locale di OpenSSL:
rm -rf $HOME/openssl-1.1.1h-install
rm -rf tls-test
Per azzerare le variabili d'ambiente:
unset LD_LIBRARY_PATH
unset OPENSSL111H