
OpenSSL v.1.1.1h의 X.509 인증서 검증에 대한 돌연변이 테스트, CVE-2021-3450 기반.
이 저장소는 OpenSSL의 X.509 인증서 검증 동작을 대상으로 하는 명세 기반 변이 테스트 실험을 구현합니다.
실험은 다음 변이 연산자를 기반으로 합니다:
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
실험은 다음과 같은 인증서 체인을 생성합니다:
루트 CA (CA:TRUE)
│
▼
변이 중간 인증서 (CA:FALSE)
│
▼
하위 리프 인증서
변이 인증서는 의도적으로 다음과 같이 구성됩니다:
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