このリポジトリは、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
この実験では、次の証明書チェーンを作成します:
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