Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2022-0778 — CVE-2022-0778の概念実証エクスプロイト。OpenSSLのBN_mod_sqrt()関数のサービス拒否脆弱性で、テストと分析用のDockerベースのラボ環境を備えています。 | Kitploit
ツール/GitHubGitHub/jeongjunsoo/cve-2022-0778
脆弱性分析エクスプロイト暗号化学習と教育ラボと実践
GitHubjeongjunsoo/cve-2022-0778

CVE-2022-0778

CVE-2022-0778の概念実証エクスプロイト。OpenSSLのBN_mod_sqrt()関数のサービス拒否脆弱性で、テストと分析用のDockerベースのラボ環境を備えています。

リポジトリを見る
12年前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2022-0778

貢献者

  • 정준수(@jeongjunsoo)

概要

  • CVE-2022-0778脆弱性は、OpenSSLで素数の平方根を計算するBN_mod_sqrt()関数に影響を与えます。

  • この関数が素数ベースでない悪意を持って操作された証明書を処理するとき、パッチ未適用のサーバーはDoS攻撃にさらされる可能性があります。


対象

  • OpenSSL 1.0.2
  • OpenSSL 1.1.1
  • OpenSSL 3.0

パッチ前

root@kitploit:~
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;
}

  • このアルゴリズムによれば、iの値がeの値に達するとループが終了するはずです。
  • しかし、特定の入力によってiとeの両方を1の値にすると、そのループは終了せず無限ループが発生します。
  • これによりサービス拒否が発生します。

パッチ後

root@kitploit:~
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に達すると自動的にループが終了するようにパッチされました。
  • 上記のパッチにより無限ループの危険性が除去されました。

環境構成と実行

  • 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リクエスト送信


実行

  • 実習のために3つのターミナルウィンドウ(A, B, C)を準備します。

  • Aターミナルでdocker run -it --rm -p 12345:12345 yywing/cve-2022-0778 --addr 0.0.0.0:12345コマンドを実行してDockerイメージを起動します。

  • 次にBターミナルでdocker compose exec curl topコマンドを実行して、現在実行中のプロセスの状況を確認します。

  • 最後にCターミナルでdocker compose exec curl bashを入力し、curl -k https://172.17.0.1:12345で12345ポートにHTTPSリクエストを送信します。

結果

  • Bターミナルで実行されたtopコマンドの結果、curlプロセスがCPUリソースをほぼ100%使用していることが確認できます。これは無限ループに陥ったために発生したものです。

まとめ

  • 本脆弱性は素数であることの検証の欠如により発生した脆弱性です。
  • 無限ループ問題を防ぐためにwhile文をfor文に変更してパッチされました。

参考

  • https://github.com/drago-96/CVE-2022-0778

  • https://hackyboiz.github.io/2022/03/19/syru/cve-2022-0778/

  • https://github.com/yywing/cve-2022-0778/


ツールをダウンロード