
اختبار الطفرات على التحقق من صحة الشهادة 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
يتم تكوين الشهادة الطافرة (Mutant) عمدًا على النحو التالي:
basicConstraints = CA:FALSE
مع استخدامها مع ذلك لتوقيع شهادة أخرى.
يُقيّم إطار التحقق ما إذا كان OpenSSL يرفض هذه السلسلة غير الصالحة بشكل صحيح.
تم اختبار التجربة على أنظمة لينكس باستخدام:
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