貢献者
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リクエストを送信します。