
Мутационное тестирование проверки сертификатов X.509 в OpenSSL v.1.1.1h, на основе CVE-2021-3450.
Этот репозиторий реализует эксперимент по мутационному тестированию, управляемый спецификацией, нацеленный на поведение проверки X.509-сертификатов в OpenSSL.
Эксперимент основан на мутационном операторе:
MUT-BC-SS-01
который модифицирует расширение BasicConstraints:
CA:TRUE → CA:FALSE
Цель — оценить, корректно ли проверка сертификатов обеспечивает соблюдение требований RFC 5280, и исследовать поведение, связанное с классом уязвимостей, представленным 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
Эксперимент создаёт следующую цепочку сертификатов:
Root CA (CA:TRUE)
│
▼
Mutant Intermediate (CA:FALSE)
│
▼
Subleaf Certificate
Мутантный сертификат намеренно настроен со значением:
basicConstraints = CA:FALSE
при этом он по-прежнему используется для подписи другого сертификата.
Тестовый стенд проверки оценивает, корректно ли OpenSSL отклоняет эту недействительную цепочку.
Эксперимент тестировался на Linux-системах с использованием:
git clone https://github.com/dedellix/MUT-BC-SS-01.git
cd MUT-BC-SS-01
chmod +x *.sh
./check_prerequisites.sh
Этот скрипт проверяет наличие требуемых пакетов и автоматически устанавливает недостающие зависимости.
Требуемые пакеты включают:
./install_openssl111h.sh
Этот скрипт загружает, собирает и устанавливает OpenSSL 1.1.1h локально в:
$HOME/openssl-1.1.1h-install
Системные файлы OpenSSL не изменяются.
./environment.sh
Этот скрипт настраивает:
LD_LIBRARY_PATH
и проверяет, что загружены корректные библиотеки OpenSSL.
./generate_certs.sh
Этот скрипт генерирует:
и сохраняет их в:
certs/
./build.sh
./build_version3.sh
Этот скрипт компилирует:
src/poc.c
и создаёт:
./poc
в корневом каталоге проекта.
./run.sh
./run_version3.sh
или напрямую:
./poc
Чтобы полностью удалить сгенерированные артефакты:
rm -rf certs
rm -f poc
Чтобы удалить локальную установку OpenSSL:
rm -rf $HOME/openssl-1.1.1h-install
rm -rf tls-test
Чтобы очистить переменные окружения:
unset LD_LIBRARY_PATH
unset OPENSSL111H