
إثبات مفهوم استغلال لـ CVE-2022-0778، ثغرة رفض الخدمة في دالة BN_mod_sqrt() في OpenSSL، مع بيئة مختبرية قائمة على Docker للاختبار والتحليل.
المساهمون
BN_mod_sqrt() في OpenSSL التي تحسب الجذر التربيعي لعدد أولي.i = 1;
if (!BN_mod_sqr(t, b, p, ctx))
goto end;
while (!BN_is_one(t)) {
i++;
if (i == e) {
ERR_raise(ERR_LIB_BN, BN_R_NOT_A_SQUARE);
goto end;
}
if (!BN_mod_mul(t, t, t, p, ctx))
goto end;
}
for (i = 1; i < e; i++) {
if (i == 1) {
if (!BN_mod_sqr(t, b, p, ctx))
goto end;
} else {
if (!BN_mod_mul(t, t, t, p, ctx))
goto end;
}
if (BN_is_one(t))
break;
}
/* If not found, a is not a square or p is not prime. */
if (i >= e) {
ERR_raise(ERR_LIB_BN, BN_R_NOT_A_SQUARE);
goto end;
}
while السابقة إلى جملة for. وبالتالي، تم تصحيحها بحيث تنتهي الحلقة تلقائيًا عندما تصل قيمة i إلى e. أزال هذا التصحيح خطر الحلقة اللانهائية.إعداد بيئة Ubuntudocker compose up -d تشغيل بيئة الاختبارdocker run -it --rm -p 12345:12345 yywing/cve-2022-0778 --addr 0.0.0.0:12345docker compose exec curl top التحقق من حالة العملياتdocker compose exec curl bash تشغيل bashcurl -k https://172.17.0.1:12345 إرسال طلب HTTPS إلى المنفذ 12345
docker run -it --rm -p 12345:12345 yywing/cve-2022-0778 --addr 0.0.0.0:12345 لبدء صورة Docker.
docker compose exec curl top لمراقبة حالة العمليات الجاري تشغيلها.
docker compose exec curl bash ثم قم بإرسال طلب HTTPS إلى المنفذ 12345 باستخدام curl -k https://172.17.0.1:12345.