贡献者
CVE-2022-0778 漏洞影响了 OpenSSL 中用于计算模素数平方根的 BN_mod_sqrt() 函数。
当该函数处理非素数基的恶意构造证书时,未修补的服务器可能会遭受 DoS 攻击。
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 语句。Ubuntu 环境配置
docker compose up -d 启动测试环境
docker run -it --rm -p 12345:12345 yywing/cve-2022-0778 --addr 0.0.0.0:12345
docker compose exec curl top 查看进程状态
docker compose exec curl bash 进入 bash
curl -k https://172.17.0.1:12345 向 12345 端口发送 HTTPS 请求

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,然后执行 curl -k https://172.17.0.1:12345 向 12345 端口发送 HTTPS 请求。